Commit 2490414664427a99e9f3f8e0fc8369f4367c5e8f

Authored by 杨鸣坤
1 parent c9b38876

楚江ERP:加工标准合同

@@ -312,6 +312,12 @@ public class GetContractDistributorStandardBo extends BaseBo<ContractDistributor @@ -312,6 +312,12 @@ public class GetContractDistributorStandardBo extends BaseBo<ContractDistributor
312 private List<GetContractDistributorLineBo> contractDistributorLineList; 312 private List<GetContractDistributorLineBo> contractDistributorLineList;
313 313
314 /** 314 /**
  315 + * 加工合同物料行
  316 + */
  317 + @ApiModelProperty("经销标准合同物料行")
  318 + private List<GetContractStdProcessingLineBo> contractStdProcessingLineList;
  319 +
  320 + /**
315 * 正式合同文件ID 321 * 正式合同文件ID
316 */ 322 */
317 @ApiModelProperty("正式合同文件ID") 323 @ApiModelProperty("正式合同文件ID")
@@ -30,14 +30,17 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService; @@ -30,14 +30,17 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService;
30 import com.lframework.xingyun.basedata.vo.customer.QueryCustomerVo; 30 import com.lframework.xingyun.basedata.vo.customer.QueryCustomerVo;
31 import com.lframework.xingyun.sc.bo.contract.GetContractDistributorLineBo; 31 import com.lframework.xingyun.sc.bo.contract.GetContractDistributorLineBo;
32 import com.lframework.xingyun.sc.bo.contract.GetContractDistributorStandardBo; 32 import com.lframework.xingyun.sc.bo.contract.GetContractDistributorStandardBo;
  33 +import com.lframework.xingyun.sc.bo.contract.GetContractStdProcessingLineBo;
33 import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo; 34 import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo;
34 import com.lframework.xingyun.sc.components.code.GenerateCodeTypePool; 35 import com.lframework.xingyun.sc.components.code.GenerateCodeTypePool;
35 import com.lframework.xingyun.sc.entity.ContractDistributorLine; 36 import com.lframework.xingyun.sc.entity.ContractDistributorLine;
36 import com.lframework.xingyun.sc.entity.ContractDistributorStandard; 37 import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
37 import com.lframework.xingyun.sc.entity.ContractFramework; 38 import com.lframework.xingyun.sc.entity.ContractFramework;
  39 +import com.lframework.xingyun.sc.entity.ContractStdProcessingLine;
38 import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; 40 import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService;
39 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; 41 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
40 import com.lframework.xingyun.sc.service.contract.ContractFrameworkService; 42 import com.lframework.xingyun.sc.service.contract.ContractFrameworkService;
  43 +import com.lframework.xingyun.sc.service.contract.ContractStdProcessingLineService;
41 import com.lframework.xingyun.sc.utils.LatexFormulaExcelExporterUtil; 44 import com.lframework.xingyun.sc.utils.LatexFormulaExcelExporterUtil;
42 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo; 45 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo;
43 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo; 46 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
@@ -105,6 +108,8 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -105,6 +108,8 @@ public class ContractDistributorStandardController extends DefaultBaseController
105 private ContractFrameworkService contractFrameworkService; 108 private ContractFrameworkService contractFrameworkService;
106 @Autowired 109 @Autowired
107 private ProductVarietyService productVarietyService; 110 private ProductVarietyService productVarietyService;
  111 + @Autowired
  112 + private ContractStdProcessingLineService contractStdProcessingLineService;
108 113
109 114
110 public static final String SUPPLIER_DIC_CODE = "SUPPLIER"; // 所属单位/供方 115 public static final String SUPPLIER_DIC_CODE = "SUPPLIER"; // 所属单位/供方
@@ -113,6 +118,7 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -113,6 +118,7 @@ public class ContractDistributorStandardController extends DefaultBaseController
113 public static final String CONDITIONS_REQUIRED_DIC_CODE = "CONDITIONS_REQUIRED"; // 特别条款要求 118 public static final String CONDITIONS_REQUIRED_DIC_CODE = "CONDITIONS_REQUIRED"; // 特别条款要求
114 public static final String APPLICABLE_STANDARD_DIC_CODE = "APPLICABLE_STANDARD"; // 执行标准 119 public static final String APPLICABLE_STANDARD_DIC_CODE = "APPLICABLE_STANDARD"; // 执行标准
115 public static final String AUDIT_STATUS_DIC_CODE = "AUDIT_STATUS"; // 审核状态 120 public static final String AUDIT_STATUS_DIC_CODE = "AUDIT_STATUS"; // 审核状态
  121 + public static final String RAW_TO_PROD_RATIO_DIC_CODE = "RAW_TO_PROD_RATIO"; // 原材料与产品数量比
116 122
117 /** 123 /**
118 * 查询列表 124 * 查询列表
@@ -232,8 +238,13 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -232,8 +238,13 @@ public class ContractDistributorStandardController extends DefaultBaseController
232 .eq(ContractDistributorLine::getContractId, id) 238 .eq(ContractDistributorLine::getContractId, id)
233 .orderByAsc(ContractDistributorLine::getShowOrder); 239 .orderByAsc(ContractDistributorLine::getShowOrder);
234 List<ContractDistributorLine> contractDistributorLineList = contractDistributorLineService.list(lineWrapper); 240 List<ContractDistributorLine> contractDistributorLineList = contractDistributorLineService.list(lineWrapper);
235 - if (CollectionUtils.isEmpty(contractDistributorLineList)) {  
236 - throw new DefaultClientException("经销标准合同物料行为空!"); 241 +
  242 + Wrapper<ContractStdProcessingLine> stdLineWrapper = Wrappers.lambdaQuery(ContractStdProcessingLine.class)
  243 + .eq(ContractStdProcessingLine::getContractId, id)
  244 + .orderByAsc(ContractStdProcessingLine::getShowOrder);
  245 + List<ContractStdProcessingLine> contractStdProcessingLineList = contractStdProcessingLineService.list(stdLineWrapper);
  246 + if (CollectionUtils.isEmpty(contractDistributorLineList) && CollectionUtils.isEmpty(contractStdProcessingLineList)) {
  247 + throw new DefaultClientException("合同物料行为空!");
237 } 248 }
238 249
239 String buyerId = result.getBuyer(); 250 String buyerId = result.getBuyer();
@@ -262,15 +273,36 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -262,15 +273,36 @@ public class ContractDistributorStandardController extends DefaultBaseController
262 273
263 List<SysDataDicItem> productDicItemList = sysDataDicItemService.findByDicCode(CONTRACT_PRODUCT_DIC_CODE); 274 List<SysDataDicItem> productDicItemList = sysDataDicItemService.findByDicCode(CONTRACT_PRODUCT_DIC_CODE);
264 Map<String, String> productCodeAndNameMap = productDicItemList.stream().collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName)); 275 Map<String, String> productCodeAndNameMap = productDicItemList.stream().collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName));
265 - List<GetContractDistributorLineBo> lineBoList = new ArrayList<>(contractDistributorLineList.size());  
266 - contractDistributorLineList.forEach(contractDistributorLine -> {  
267 - GetContractDistributorLineBo contractDistributorLineBo = new GetContractDistributorLineBo(contractDistributorLine);  
268 - String productName = productCodeAndNameMap.get(contractDistributorLineBo.getProductId());  
269 - contractDistributorLineBo.setProductName(productName);  
270 - lineBoList.add(contractDistributorLineBo);  
271 - }); 276 + if (CollectionUtils.isNotEmpty(contractDistributorLineList)) {
  277 + List<GetContractDistributorLineBo> lineBoList = new ArrayList<>(contractDistributorLineList.size());
  278 + contractDistributorLineList.forEach(contractDistributorLine -> {
  279 + GetContractDistributorLineBo contractDistributorLineBo = new GetContractDistributorLineBo(contractDistributorLine);
  280 + String productName = productCodeAndNameMap.get(contractDistributorLineBo.getProductId());
  281 + contractDistributorLineBo.setProductName(productName);
  282 + lineBoList.add(contractDistributorLineBo);
  283 + });
  284 +
  285 + result.setContractDistributorLineList(lineBoList);
  286 + }
  287 +
  288 + if (CollectionUtils.isNotEmpty(contractStdProcessingLineList)) {
  289 + List<GetContractStdProcessingLineBo> lineBoList = new ArrayList<>(contractStdProcessingLineList.size());
  290 + List<SysDataDicItem> rawToProdRatioDiciItemList = sysDataDicItemService.findByDicCode(RAW_TO_PROD_RATIO_DIC_CODE);
  291 + Map<String, String> rawToProdRatioCodeAndNameMap = rawToProdRatioDiciItemList.stream().collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName));
  292 + contractStdProcessingLineList.forEach(contractStdProcessingLine -> {
  293 + GetContractStdProcessingLineBo contractStdProcessingLineBo = new GetContractStdProcessingLineBo(contractStdProcessingLine);
  294 + String rawProductName = productCodeAndNameMap.get(contractStdProcessingLineBo.getRawProductId());
  295 + String productName = productCodeAndNameMap.get(contractStdProcessingLineBo.getProductId());
  296 + String materialProductRatioName = rawToProdRatioCodeAndNameMap.get(contractStdProcessingLineBo.getMaterialProductRatio());
  297 + contractStdProcessingLineBo.setRawProductName(rawProductName);
  298 + contractStdProcessingLineBo.setProductName(productName);
  299 + contractStdProcessingLine.setMaterialProductRatio(materialProductRatioName);
  300 + lineBoList.add(contractStdProcessingLineBo);
  301 + });
  302 +
  303 + result.setContractStdProcessingLineList(lineBoList);
  304 + }
272 305
273 - result.setContractDistributorLineList(lineBoList);  
274 return InvokeResultBuilder.success(result); 306 return InvokeResultBuilder.success(result);
275 } 307 }
276 308
@@ -281,8 +313,12 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -281,8 +313,12 @@ public class ContractDistributorStandardController extends DefaultBaseController
281 @HasPermission({"contract:contractDistributorStandard:add"}) 313 @HasPermission({"contract:contractDistributorStandard:add"})
282 @PostMapping 314 @PostMapping
283 public InvokeResult<Void> create(@Valid @RequestBody CreateContractDistributorStandardVo vo) { 315 public InvokeResult<Void> create(@Valid @RequestBody CreateContractDistributorStandardVo vo) {
284 - if (CollectionUtils.isEmpty(vo.getContractDistributorLineList())) {  
285 - throw new DefaultClientException("经销标准合同物料行不可为空"); 316 + if (CollectionUtils.isEmpty(vo.getContractDistributorLineList()) && CollectionUtils.isEmpty(vo.getContractStdProcessingLineList())) {
  317 + throw new DefaultClientException("合同物料行不可为空!");
  318 + }
  319 +
  320 + if (StringUtils.isBlank(vo.getType())) {
  321 + throw new DefaultClientException("合同类型不可为空!");
286 } 322 }
287 323
288 //获取当前人员ID 324 //获取当前人员ID
@@ -297,7 +333,11 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -297,7 +333,11 @@ public class ContractDistributorStandardController extends DefaultBaseController
297 } 333 }
298 } 334 }
299 335
300 - contractDistributorStandardService.create(vo); 336 + if("PROCESS_STD_AGMT".equals(vo.getType())) {
  337 + contractDistributorStandardService.createStdContract(vo);
  338 + } else {
  339 + contractDistributorStandardService.create(vo);
  340 + }
301 341
302 return InvokeResultBuilder.success(); 342 return InvokeResultBuilder.success();
303 } 343 }
@@ -8,6 +8,7 @@ import com.lframework.starter.bpm.dto.FlowTaskDto; @@ -8,6 +8,7 @@ import com.lframework.starter.bpm.dto.FlowTaskDto;
8 import com.lframework.starter.bpm.mappers.FlowTaskWrapperMapper; 8 import com.lframework.starter.bpm.mappers.FlowTaskWrapperMapper;
9 import com.lframework.starter.bpm.service.FlowInstanceWrapperService; 9 import com.lframework.starter.bpm.service.FlowInstanceWrapperService;
10 import com.lframework.starter.bpm.vo.flow.task.QueryTodoTaskListVo; 10 import com.lframework.starter.bpm.vo.flow.task.QueryTodoTaskListVo;
  11 +import com.lframework.starter.common.utils.StringUtil;
11 import com.lframework.starter.web.core.components.security.SecurityUtil; 12 import com.lframework.starter.web.core.components.security.SecurityUtil;
12 import com.lframework.xingyun.sc.entity.ContractDistributorLine; 13 import com.lframework.xingyun.sc.entity.ContractDistributorLine;
13 import com.lframework.xingyun.sc.entity.ContractDistributorStandard; 14 import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
@@ -22,15 +23,19 @@ import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; @@ -22,15 +23,19 @@ import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
22 import com.lframework.starter.web.core.components.resp.PageResult; 23 import com.lframework.starter.web.core.components.resp.PageResult;
23 import com.lframework.starter.common.utils.ObjectUtil; 24 import com.lframework.starter.common.utils.ObjectUtil;
24 import com.lframework.starter.common.utils.Assert; 25 import com.lframework.starter.common.utils.Assert;
  26 +import com.lframework.xingyun.sc.entity.ContractStdProcessingLine;
25 import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; 27 import com.lframework.xingyun.sc.enums.CustomerDevelopStatus;
26 import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper; 28 import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper;
27 import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; 29 import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService;
28 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; 30 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
  31 +import com.lframework.xingyun.sc.service.contract.ContractStdProcessingLineService;
29 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorLineVo; 32 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorLineVo;
30 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo; 33 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo;
  34 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractStdProcessingLineVo;
31 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo; 35 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
32 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorLineVo; 36 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorLineVo;
33 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo; 37 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo;
  38 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractStdProcessingLineVo;
34 import org.apache.commons.collections4.CollectionUtils; 39 import org.apache.commons.collections4.CollectionUtils;
35 import org.apache.commons.lang3.StringUtils; 40 import org.apache.commons.lang3.StringUtils;
36 import org.springframework.beans.factory.annotation.Autowired; 41 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,6 +69,8 @@ public class ContractDistributorStandardServiceImpl extends @@ -64,6 +69,8 @@ public class ContractDistributorStandardServiceImpl extends
64 private FlowInstanceWrapperService flowInstanceWrapperService; 69 private FlowInstanceWrapperService flowInstanceWrapperService;
65 @Resource 70 @Resource
66 private FlowTaskWrapperMapper flowTaskWrapperMapper; 71 private FlowTaskWrapperMapper flowTaskWrapperMapper;
  72 + @Resource
  73 + private ContractStdProcessingLineService contractStdProcessingLineService;
67 74
68 75
69 @Override 76 @Override
@@ -118,6 +125,42 @@ public class ContractDistributorStandardServiceImpl extends @@ -118,6 +125,42 @@ public class ContractDistributorStandardServiceImpl extends
118 @Override 125 @Override
119 public String create(CreateContractDistributorStandardVo vo) { 126 public String create(CreateContractDistributorStandardVo vo) {
120 127
  128 + ContractDistributorStandard data = createContractBase(vo);
  129 +
  130 + OpLogUtil.setVariable("id", data.getId());
  131 + OpLogUtil.setExtra(vo);
  132 +
  133 + for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) {
  134 + CreateContractDistributorLineVo createContractDistributorLineVo = vo.getContractDistributorLineList().get(i);
  135 + createContractDistributorLineVo.setContractId(data.getId());
  136 + createContractDistributorLineVo.setShowOrder(i);
  137 + contractDistributorLineService.create(createContractDistributorLineVo);
  138 + }
  139 +
  140 + return data.getId();
  141 + }
  142 +
  143 + @OpLog(type = OtherOpLogType.class, name = "新增合同,ID:{}", params = {"#id"})
  144 + @Transactional(rollbackFor = Exception.class)
  145 + @Override
  146 + public String createStdContract(CreateContractDistributorStandardVo vo) {
  147 +
  148 + ContractDistributorStandard data = createContractBase(vo);
  149 +
  150 + OpLogUtil.setVariable("id", data.getId());
  151 + OpLogUtil.setExtra(vo);
  152 +
  153 + for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) {
  154 + CreateContractStdProcessingLineVo createContractStdProcessingLineVo = vo.getContractStdProcessingLineList().get(i);
  155 + createContractStdProcessingLineVo.setContractId(data.getId());
  156 + createContractStdProcessingLineVo.setShowOrder(i);
  157 + contractStdProcessingLineService.create(createContractStdProcessingLineVo);
  158 + }
  159 +
  160 + return data.getId();
  161 + }
  162 +
  163 + private ContractDistributorStandard createContractBase(CreateContractDistributorStandardVo vo) {
121 ContractDistributorStandard data = new ContractDistributorStandard(); 164 ContractDistributorStandard data = new ContractDistributorStandard();
122 data.setId(IdUtil.getUUID()); 165 data.setId(IdUtil.getUUID());
123 data.setCode(vo.getCode()); 166 data.setCode(vo.getCode());
@@ -154,18 +197,7 @@ public class ContractDistributorStandardServiceImpl extends @@ -154,18 +197,7 @@ public class ContractDistributorStandardServiceImpl extends
154 data.setType(vo.getType()); 197 data.setType(vo.getType());
155 198
156 getBaseMapper().insert(data); 199 getBaseMapper().insert(data);
157 -  
158 - OpLogUtil.setVariable("id", data.getId());  
159 - OpLogUtil.setExtra(vo);  
160 -  
161 - for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) {  
162 - CreateContractDistributorLineVo createContractDistributorLineVo = vo.getContractDistributorLineList().get(i);  
163 - createContractDistributorLineVo.setContractId(data.getId());  
164 - createContractDistributorLineVo.setShowOrder(i);  
165 - contractDistributorLineService.create(createContractDistributorLineVo);  
166 - }  
167 -  
168 - return data.getId(); 200 + return data;
169 } 201 }
170 202
171 @OpLog(type = OtherOpLogType.class, name = "修改合同,ID:{}", params = {"#id"}) 203 @OpLog(type = OtherOpLogType.class, name = "修改合同,ID:{}", params = {"#id"})
@@ -214,6 +246,129 @@ public class ContractDistributorStandardServiceImpl extends @@ -214,6 +246,129 @@ public class ContractDistributorStandardServiceImpl extends
214 246
215 getBaseMapper().update(updateWrapper); 247 getBaseMapper().update(updateWrapper);
216 248
  249 + if ("PROCESS_STD_AGMT".equals(data.getType())) {
  250 + dealWithStdProcessingLine(data, vo);
  251 + } else {
  252 + dealWithDistributorLine(data, vo);
  253 + }
  254 +
  255 +
  256 + OpLogUtil.setVariable("id", data.getId());
  257 + OpLogUtil.setExtra(vo);
  258 + }
  259 +
  260 + private void dealWithStdProcessingLine(ContractDistributorStandard data, UpdateContractDistributorStandardVo vo) {
  261 + Wrapper<ContractStdProcessingLine> lineWrapper = Wrappers.lambdaQuery(ContractStdProcessingLine.class)
  262 + .eq(ContractStdProcessingLine::getContractId, data.getId());
  263 + List<ContractStdProcessingLine> oldContractStdProcessingLineList = contractStdProcessingLineService.list(lineWrapper);
  264 + List<String> oldlineIdList = CollectionUtils.emptyIfNull(oldContractStdProcessingLineList)
  265 + .stream()
  266 + .map(ContractStdProcessingLine::getId).collect(Collectors.toList());
  267 + List<String> existIdList = new ArrayList<>(oldlineIdList.size());
  268 + for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) {
  269 + UpdateContractStdProcessingLineVo updateContractStdProcessingLineVo = vo.getContractStdProcessingLineList().get(i);
  270 + updateContractStdProcessingLineVo.setShowOrder(i);
  271 + if (StringUtils.isNotBlank(updateContractStdProcessingLineVo.getId())) {
  272 + existIdList.add(updateContractStdProcessingLineVo.getId());
  273 + contractStdProcessingLineService.update(updateContractStdProcessingLineVo);
  274 + } else {
  275 + CreateContractStdProcessingLineVo createContractStdProcessingLineVo = new CreateContractStdProcessingLineVo();
  276 + createContractStdProcessingLineVo.setContractId(data.getId());
  277 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getRawProductId())) {
  278 + createContractStdProcessingLineVo.setRawProductId(updateContractStdProcessingLineVo.getRawProductId());
  279 + }
  280 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getRawProductGrade())) {
  281 + createContractStdProcessingLineVo.setRawProductGrade(updateContractStdProcessingLineVo.getRawProductGrade());
  282 + }
  283 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getIndustry())) {
  284 + createContractStdProcessingLineVo.setIndustry(updateContractStdProcessingLineVo.getIndustry());
  285 + }
  286 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getQuality())) {
  287 + createContractStdProcessingLineVo.setQuality(updateContractStdProcessingLineVo.getQuality());
  288 + }
  289 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getLossRate())) {
  290 + createContractStdProcessingLineVo.setLossRate(updateContractStdProcessingLineVo.getLossRate());
  291 + }
  292 + if (updateContractStdProcessingLineVo.getSupplyTime() != null) {
  293 + createContractStdProcessingLineVo.setSupplyTime(updateContractStdProcessingLineVo.getSupplyTime());
  294 + }
  295 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getMaterialProductRatio())) {
  296 + createContractStdProcessingLineVo.setMaterialProductRatio(updateContractStdProcessingLineVo.getMaterialProductRatio());
  297 + }
  298 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getMaterialProductRatioRemarks())) {
  299 + createContractStdProcessingLineVo.setMaterialProductRatioRemarks(updateContractStdProcessingLineVo.getMaterialProductRatioRemarks());
  300 + }
  301 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getProductId())) {
  302 + createContractStdProcessingLineVo.setProductId(updateContractStdProcessingLineVo.getProductId());
  303 + }
  304 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getProductGrade())) {
  305 + createContractStdProcessingLineVo.setProductGrade(updateContractStdProcessingLineVo.getProductGrade());
  306 + }
  307 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getProductStatus())) {
  308 + createContractStdProcessingLineVo.setProductStatus(updateContractStdProcessingLineVo.getProductStatus());
  309 + }
  310 + if (updateContractStdProcessingLineVo.getProductQuantity() != null) {
  311 + createContractStdProcessingLineVo.setProductQuantity(updateContractStdProcessingLineVo.getProductQuantity());
  312 + }
  313 + if (updateContractStdProcessingLineVo.getThickness() != null) {
  314 + createContractStdProcessingLineVo.setThickness(updateContractStdProcessingLineVo.getThickness());
  315 + }
  316 + if (updateContractStdProcessingLineVo.getThicknessTolPos() != null) {
  317 + createContractStdProcessingLineVo.setThicknessTolPos(updateContractStdProcessingLineVo.getThicknessTolPos());
  318 + }
  319 + if (updateContractStdProcessingLineVo.getThicknessTolNeg() != null) {
  320 + createContractStdProcessingLineVo.setThicknessTolNeg(updateContractStdProcessingLineVo.getThicknessTolNeg());
  321 + }
  322 + if (updateContractStdProcessingLineVo.getWidth() != null) {
  323 + createContractStdProcessingLineVo.setWidth(updateContractStdProcessingLineVo.getWidth());
  324 + }
  325 + if (updateContractStdProcessingLineVo.getWidthTolPos() != null) {
  326 + createContractStdProcessingLineVo.setWidthTolPos(updateContractStdProcessingLineVo.getWidthTolPos());
  327 + }
  328 + if (updateContractStdProcessingLineVo.getWidthTolNeg() != null) {
  329 + createContractStdProcessingLineVo.setWidthTolNeg(updateContractStdProcessingLineVo.getWidthTolNeg());
  330 + }
  331 + if (updateContractStdProcessingLineVo.getLength() != null) {
  332 + createContractStdProcessingLineVo.setLength(updateContractStdProcessingLineVo.getLength());
  333 + }
  334 + if (updateContractStdProcessingLineVo.getLengthTolPos() != null) {
  335 + createContractStdProcessingLineVo.setLengthTolPos(updateContractStdProcessingLineVo.getLengthTolPos());
  336 + }
  337 + if (updateContractStdProcessingLineVo.getLengthTolNeg() != null) {
  338 + createContractStdProcessingLineVo.setLengthTolNeg(updateContractStdProcessingLineVo.getLengthTolNeg());
  339 + }
  340 + if (updateContractStdProcessingLineVo.getUnitPrice() != null) {
  341 + createContractStdProcessingLineVo.setUnitPrice(updateContractStdProcessingLineVo.getUnitPrice());
  342 + }
  343 + if (updateContractStdProcessingLineVo.getAmountExcludingTax() != null) {
  344 + createContractStdProcessingLineVo.setAmountExcludingTax(updateContractStdProcessingLineVo.getAmountExcludingTax());
  345 + }
  346 + if (updateContractStdProcessingLineVo.getTotalAmount() != null) {
  347 + createContractStdProcessingLineVo.setTotalAmount(updateContractStdProcessingLineVo.getTotalAmount());
  348 + }
  349 + if (updateContractStdProcessingLineVo.getDeliveryDate() != null) {
  350 + createContractStdProcessingLineVo.setDeliveryDate(updateContractStdProcessingLineVo.getDeliveryDate());
  351 + }
  352 + if (updateContractStdProcessingLineVo.getShowOrder() != null) {
  353 + createContractStdProcessingLineVo.setShowOrder(updateContractStdProcessingLineVo.getShowOrder());
  354 + }
  355 + if (!StringUtil.isBlank(updateContractStdProcessingLineVo.getItemId())) {
  356 + createContractStdProcessingLineVo.setItemId(updateContractStdProcessingLineVo.getItemId());
  357 + }
  358 +
  359 + contractStdProcessingLineService.create(createContractStdProcessingLineVo);
  360 + }
  361 + }
  362 +
  363 + List<String> needDeleteLineIdList = oldlineIdList.stream()
  364 + .filter(oldLineId -> !existIdList.contains(oldLineId))
  365 + .collect(Collectors.toList());
  366 + if (CollectionUtils.isNotEmpty(needDeleteLineIdList)) {
  367 + contractStdProcessingLineService.removeByIds(needDeleteLineIdList);
  368 + }
  369 + }
  370 +
  371 + private void dealWithDistributorLine(ContractDistributorStandard data, UpdateContractDistributorStandardVo vo) {
217 Wrapper<ContractDistributorLine> lineWrapper = Wrappers.lambdaQuery(ContractDistributorLine.class) 372 Wrapper<ContractDistributorLine> lineWrapper = Wrappers.lambdaQuery(ContractDistributorLine.class)
218 .eq(ContractDistributorLine::getContractId, data.getId()); 373 .eq(ContractDistributorLine::getContractId, data.getId());
219 List<ContractDistributorLine> oldContractDistributorLineList = contractDistributorLineService.list(lineWrapper); 374 List<ContractDistributorLine> oldContractDistributorLineList = contractDistributorLineService.list(lineWrapper);
@@ -264,9 +419,6 @@ public class ContractDistributorStandardServiceImpl extends @@ -264,9 +419,6 @@ public class ContractDistributorStandardServiceImpl extends
264 if (CollectionUtils.isNotEmpty(needDeleteLineIdList)) { 419 if (CollectionUtils.isNotEmpty(needDeleteLineIdList)) {
265 contractDistributorLineService.removeByIds(needDeleteLineIdList); 420 contractDistributorLineService.removeByIds(needDeleteLineIdList);
266 } 421 }
267 -  
268 - OpLogUtil.setVariable("id", data.getId());  
269 - OpLogUtil.setExtra(vo);  
270 } 422 }
271 423
272 @OpLog(type = OtherOpLogType.class, name = "上传合同附件,ID:{}", params = {"#id"}) 424 @OpLog(type = OtherOpLogType.class, name = "上传合同附件,ID:{}", params = {"#id"})
@@ -45,6 +45,8 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra @@ -45,6 +45,8 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra
45 */ 45 */
46 String create(CreateContractDistributorStandardVo vo); 46 String create(CreateContractDistributorStandardVo vo);
47 47
  48 + String createStdContract(CreateContractDistributorStandardVo vo);
  49 +
48 /** 50 /**
49 * 修改 51 * 修改
50 * 52 *
@@ -253,10 +253,15 @@ public class CreateContractDistributorStandardVo implements BaseVo, Serializable @@ -253,10 +253,15 @@ public class CreateContractDistributorStandardVo implements BaseVo, Serializable
253 * 合同物料行 253 * 合同物料行
254 */ 254 */
255 @ApiModelProperty(value = "合同物料行", required = true) 255 @ApiModelProperty(value = "合同物料行", required = true)
256 - @NotNull(message = "合同物料行不可为空!")  
257 private List<CreateContractDistributorLineVo> contractDistributorLineList; 256 private List<CreateContractDistributorLineVo> contractDistributorLineList;
258 257
259 /** 258 /**
  259 + * 合同物料行
  260 + */
  261 + @ApiModelProperty(value = "合同物料行")
  262 + private List<CreateContractStdProcessingLineVo> contractStdProcessingLineList;
  263 +
  264 + /**
260 * 正式合同文件ID 265 * 正式合同文件ID
261 */ 266 */
262 @ApiModelProperty(value = "正式合同文件ID") 267 @ApiModelProperty(value = "正式合同文件ID")
@@ -255,10 +255,15 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable @@ -255,10 +255,15 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
255 * 合同物料行 255 * 合同物料行
256 */ 256 */
257 @ApiModelProperty(value = "合同物料行") 257 @ApiModelProperty(value = "合同物料行")
258 - @NotNull(message = "合同物料行不可为空!")  
259 private List<UpdateContractDistributorLineVo> contractDistributorLineList; 258 private List<UpdateContractDistributorLineVo> contractDistributorLineList;
260 259
261 /** 260 /**
  261 + * 合同物料行
  262 + */
  263 + @ApiModelProperty(value = "合同物料行")
  264 + private List<UpdateContractStdProcessingLineVo> contractStdProcessingLineList;
  265 +
  266 + /**
262 * 正式合同文件ID 267 * 正式合同文件ID
263 */ 268 */
264 @ApiModelProperty(value = "正式合同文件ID") 269 @ApiModelProperty(value = "正式合同文件ID")