Explorar o código

销售政策 和 商品导出修改

ioioio %!s(int64=4) %!d(string=hai) anos
pai
achega
b468efc430

+ 1 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsOutExcel.java

@@ -19,7 +19,7 @@ public class GoodsOutExcel
 	private String brandItem;
 
 	@ExcelProperty("规格型号")
-	private String typeNo;
+	private String typeno;
 
 	@ExcelProperty("数量")
 	private String number;

+ 35 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/controller/SalesPolicyController.java

@@ -25,16 +25,21 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
+
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.mocha.excel.PriceItemExcel;
+import org.springblade.mocha.excel.SalesItemExcel;
 import org.springblade.purchase.sales.entity.Order;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -42,6 +47,7 @@ import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.vo.SalesPolicyVO;
 import org.springblade.mocha.service.ISalesPolicyService;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -184,5 +190,34 @@ public class SalesPolicyController extends BladeController {
 		return R.data(tree);
 	}
 
+	/**
+	 * 导入销售政策明细
+	 * */
+
+	@PostMapping("/import-sales-policy")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "导入销售政策明细", notes = "传入excel")
+	public R importSalesPolicy(MultipartFile file) {
+		List<SalesItemExcel> excelList = ExcelUtil.read(file, SalesItemExcel.class);
+		if(CollectionUtils.isEmpty(excelList))
+		{
+			throw new SecurityException("数据不能为空");
+		}
+		return salesPolicyService.importSalesPolicy(excelList,false);
+	}
+
+
+	/**
+	 * 导出模板
+	 */
+	@GetMapping("/export-sales-policy")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出模板")
+	public void exportPrice(HttpServletResponse response) {
+		List<SalesItemExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导出模板-销售政策明细", "导入数据表", list, SalesItemExcel.class);
+	}
+
+
 
 }

+ 29 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/excel/SalesItemExcel.java

@@ -0,0 +1,29 @@
+package org.springblade.mocha.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class SalesItemExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 大字(规格编码)
+	 */
+	@ExcelProperty("商品编码")
+	private String code;
+
+
+	@ExcelProperty("特价")
+	private String specialOffer;
+
+}

+ 11 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/ISalesPolicyService.java

@@ -18,6 +18,8 @@ package org.springblade.mocha.service;
 
 import org.springblade.core.tool.api.R;
 import org.springblade.mocha.entity.SalesPolicy;
+import org.springblade.mocha.excel.PriceItemExcel;
+import org.springblade.mocha.excel.SalesItemExcel;
 import org.springblade.mocha.vo.SalesPolicyVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -62,4 +64,13 @@ public interface ISalesPolicyService extends IService<SalesPolicy> {
 	 */
 	List<SalesPolicyVO> lazyTree(SalesPolicy salesPolicy);
 
+	/**
+	 * 导入销售
+	 *
+	 * @param data
+	 * @param
+	 * @return
+	 */
+	R importSalesPolicy(List<SalesItemExcel> data, Boolean isCovered);
+
 }

+ 50 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/SalesPolicyServiceImpl.java

@@ -19,15 +19,23 @@ package org.springblade.mocha.service.impl;
 import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.GoodsDesc;
+import org.springblade.client.entity.GoodsType;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.mocha.entity.PriceItem;
 import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.entity.SalesPolicyItem;
+import org.springblade.mocha.excel.PriceItemExcel;
+import org.springblade.mocha.excel.SalesItemExcel;
 import org.springblade.mocha.mapper.SalesPolicyItemMapper;
 import org.springblade.mocha.vo.SalesPolicyVO;
 import org.springblade.mocha.mapper.SalesPolicyMapper;
@@ -37,6 +45,7 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 
@@ -52,6 +61,7 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 	private SalesPolicyItemMapper salesPolicyItemMapper;//销售政策明细表
 	private final IUserClient userClient;//用户
 	private final ICorpsDescClient corpsDescClient;//客户信息
+	private final IGoodsDescClient goodsDescClient;//商品信息
 	@Override
 	public IPage<SalesPolicy> selectSalesPolicyPage(IPage<SalesPolicy> page, SalesPolicy salesPolicy) {
 		return page.setRecords(baseMapper.selectSalesPolicyPage(page, salesPolicy));
@@ -172,6 +182,46 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 		}
 		return baseMapper.lazyTree(salesPolicy);
 	}
+
+	@Override
+	@Transactional
+	public R importSalesPolicy(List<SalesItemExcel> data, Boolean isCovered)
+	{
+		List<SalesPolicyItem> list=new ArrayList<>();
+		for(int i=0;i<data.size();i++)
+		{
+			SalesItemExcel goodsExcel = data.get(i);
+			SalesPolicyItem salesPolicyItem=new SalesPolicyItem();
+			BeanUtil.copyProperties(goodsExcel,salesPolicyItem);
+            if(StringUtils.isBlank(salesPolicyItem.getCode()))
+            {
+            	throw new SecurityException("第"+i+"行商品未填写,");
+			}
+			R<GoodsDesc> goodsDescR = goodsDescClient.GoodsByCode(salesPolicyItem.getCode());
+            if(!goodsDescR.isSuccess()||goodsDescR.getData()==null)
+            {
+				throw new SecurityException("第"+i+"行,请填写真实正确的商品编码");
+			}
+            //查询itemId
+			GoodsDesc goodsDesc = goodsDescR.getData();
+			salesPolicyItem.setItemId(goodsDesc.getId());
+			salesPolicyItem.setBrand(goodsDesc.getBrand());
+			salesPolicyItem.setTypeno(goodsDesc.getTypeno());
+			salesPolicyItem.setCorpId(goodsDesc.getCorpId());
+			salesPolicyItem.setCorpName(goodsDesc.getCorpName());
+			salesPolicyItem.setSalesType("1");
+			//产品分类
+			GoodsType goodsType = goodsDescClient.goodTypeId(goodsDesc.getId());
+			if(goodsType==null)
+			{
+				throw new SecurityException("第"+i+"行,根据此编码获取分类失败");
+			}
+			salesPolicyItem.setProductCategory(goodsType.getCname());
+			list.add(salesPolicyItem);
+		}
+		return R.data(list);
+	}
+
 	private String getUserName(Long user){
 		String userName = null;
 		R<User> create = userClient.userInfoById(user);