Commit 900b53f5a368868d990ec2adf0ba718b7c426ea6

Authored by 杨鸣坤
1 parent ee436e73

楚江ERP:合同锁价接口调整,生成子合同

@@ -125,6 +125,7 @@ create table if not exists `tbl_contract_distributor_standard` @@ -125,6 +125,7 @@ create table if not exists `tbl_contract_distributor_standard`
125 `standard_approved` varchar(20) COMMENT '标准合同是否审核完成(AUDIT:审核中,PASS:审核通过,REFUSE:已驳回,CANCEL:已取消)', 125 `standard_approved` varchar(20) COMMENT '标准合同是否审核完成(AUDIT:审核中,PASS:审核通过,REFUSE:已驳回,CANCEL:已取消)',
126 `standard_approver_id` varchar(32) COMMENT '标准合同审批人ID', 126 `standard_approver_id` varchar(32) COMMENT '标准合同审批人ID',
127 `standard_time` datetime COMMENT '标准合同审批完成时间', 127 `standard_time` datetime COMMENT '标准合同审批完成时间',
  128 + `price_spec_locked` TINYINT(1) DEFAULT FALSE COMMENT '是否已完成锁价/锁规',
128 `create_by_id` varchar(32) not null comment '创建人ID', 129 `create_by_id` varchar(32) not null comment '创建人ID',
129 `create_by` varchar(20) not null comment '创建人', 130 `create_by` varchar(20) not null comment '创建人',
130 `update_by_id` varchar(32) not null comment '更新人ID', 131 `update_by_id` varchar(32) not null comment '更新人ID',
@@ -173,6 +173,12 @@ public class QueryContractDistributorStandardBo extends BaseBo<ContractDistribut @@ -173,6 +173,12 @@ public class QueryContractDistributorStandardBo extends BaseBo<ContractDistribut
173 @ApiModelProperty(value = "发货状态") 173 @ApiModelProperty(value = "发货状态")
174 private String shippingStatusName; 174 private String shippingStatusName;
175 175
  176 + /**
  177 + * 是否已完成锁价/锁规
  178 + */
  179 + @ApiModelProperty(value = "是否已完成锁价/锁规")
  180 + private boolean priceSpecLocked;
  181 +
176 public QueryContractDistributorStandardBo() { 182 public QueryContractDistributorStandardBo() {
177 183
178 } 184 }
@@ -447,6 +447,20 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -447,6 +447,20 @@ public class ContractDistributorStandardController extends DefaultBaseController
447 return InvokeResultBuilder.success(); 447 return InvokeResultBuilder.success();
448 } 448 }
449 449
  450 + @ApiModelProperty("锁规")
  451 + @PostMapping("/specificationLock")
  452 + public InvokeResult<Void> specificationLock(@RequestBody UpdateContractDistributorStandardVo vo) {
  453 + if (vo == null || StringUtils.isBlank(vo.getId())) {
  454 + throw new DefaultClientException("参数错误!");
  455 + }
  456 +
  457 + // todo ymk 锁规接口待完善
  458 +
  459 + contractDistributorStandardService.cleanCacheByKey(vo.getId());
  460 +
  461 + return InvokeResultBuilder.success();
  462 + }
  463 +
450 /** 464 /**
451 * 标准合同模版打印 465 * 标准合同模版打印
452 */ 466 */
@@ -559,6 +573,7 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -559,6 +573,7 @@ public class ContractDistributorStandardController extends DefaultBaseController
559 dataMap.put("totalAmountExcludingTax", data.getTotalAmountExcludingTax().setScale(2, RoundingMode.HALF_UP).toString()); 573 dataMap.put("totalAmountExcludingTax", data.getTotalAmountExcludingTax().setScale(2, RoundingMode.HALF_UP).toString());
560 dataMap.put("totalAmountIncludingTax", data.getTotalAmountIncludingTax().setScale(2, RoundingMode.HALF_UP).toString()); 574 dataMap.put("totalAmountIncludingTax", data.getTotalAmountIncludingTax().setScale(2, RoundingMode.HALF_UP).toString());
561 dataMap.put("totalAmountCapital", data.getTotalAmountCapital()); 575 dataMap.put("totalAmountCapital", data.getTotalAmountCapital());
  576 + dataMap.put("specialInstructions", data.getSpecialInstructions());
562 577
563 dataMap.put("depositInfo", data.getDepositInfo()); 578 dataMap.put("depositInfo", data.getDepositInfo());
564 dataMap.put("paymentTerms", data.getPaymentTerms()); 579 dataMap.put("paymentTerms", data.getPaymentTerms());
@@ -294,6 +294,11 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto { @@ -294,6 +294,11 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
294 private BigDecimal totalAmountIncludingTax; 294 private BigDecimal totalAmountIncludingTax;
295 295
296 /** 296 /**
  297 + * 是否已完成锁价/锁规
  298 + */
  299 + private boolean priceSpecLocked;
  300 +
  301 + /**
297 * 是否展示正式合同审核按钮(非持久化字段) 302 * 是否展示正式合同审核按钮(非持久化字段)
298 */ 303 */
299 @TableField(exist = false) 304 @TableField(exist = false)
@@ -44,7 +44,9 @@ import java.io.Serializable; @@ -44,7 +44,9 @@ import java.io.Serializable;
44 import java.time.LocalDateTime; 44 import java.time.LocalDateTime;
45 import java.util.ArrayList; 45 import java.util.ArrayList;
46 import java.util.List; 46 import java.util.List;
  47 +import java.util.Map;
47 import java.util.Set; 48 import java.util.Set;
  49 +import java.util.function.Function;
48 import java.util.stream.Collectors; 50 import java.util.stream.Collectors;
49 51
50 @Service 52 @Service
@@ -285,6 +287,15 @@ public class ContractDistributorStandardServiceImpl extends @@ -285,6 +287,15 @@ public class ContractDistributorStandardServiceImpl extends
285 287
286 getBaseMapper().update(updateWrapper); 288 getBaseMapper().update(updateWrapper);
287 289
  290 + LambdaUpdateWrapper<ContractDistributorStandard> childWrapper = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
  291 + .set(ContractDistributorStandard::getFormalFileId, vo.getFormalFileId())
  292 + .set(ContractDistributorStandard::getFormalFileName, vo.getFormalFileName())
  293 + .set(ContractDistributorStandard::getFormalStandardized, vo.getFormalStandardized())
  294 + .set(ContractDistributorStandard::getFormalApproved, CustomerDevelopStatus.AUDIT.name())
  295 + .eq(ContractDistributorStandard::getParentId, vo.getId());
  296 +
  297 + getBaseMapper().update(childWrapper);
  298 +
288 OpLogUtil.setVariable("id", data.getId()); 299 OpLogUtil.setVariable("id", data.getId());
289 OpLogUtil.setExtra(vo); 300 OpLogUtil.setExtra(vo);
290 301
@@ -343,7 +354,9 @@ public class ContractDistributorStandardServiceImpl extends @@ -343,7 +354,9 @@ public class ContractDistributorStandardServiceImpl extends
343 .set(ContractDistributorStandard::getFormalApproved, formalApproved) 354 .set(ContractDistributorStandard::getFormalApproved, formalApproved)
344 .set(ContractDistributorStandard::getFormalApproverId, SecurityUtil.getCurrentUser().getId()) 355 .set(ContractDistributorStandard::getFormalApproverId, SecurityUtil.getCurrentUser().getId())
345 .set(ContractDistributorStandard::getFormalTime, LocalDateTime.now()) 356 .set(ContractDistributorStandard::getFormalTime, LocalDateTime.now())
346 - .eq(ContractDistributorStandard::getId, id); 357 + .eq(ContractDistributorStandard::getId, id)
  358 + .or()
  359 + .eq(ContractDistributorStandard::getParentId, id);
347 360
348 getBaseMapper().update(wrapper); 361 getBaseMapper().update(wrapper);
349 362
@@ -476,29 +489,65 @@ public class ContractDistributorStandardServiceImpl extends @@ -476,29 +489,65 @@ public class ContractDistributorStandardServiceImpl extends
476 throw new DefaultClientException("合同行数据为空!"); 489 throw new DefaultClientException("合同行数据为空!");
477 } 490 }
478 491
479 - Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaUpdate(ContractDistributorStandard.class)  
480 - .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity())  
481 - .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax())  
482 - .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax())  
483 - .set(ContractDistributorStandard::getTotalAmountCapital, vo.getTotalAmountCapital())  
484 - .set(ContractDistributorStandard::getStatus, "STANDARD")  
485 - .eq(ContractDistributorStandard::getId, vo.getId()); 492 + data.setId(IdUtil.getUUID());
  493 + data.setTotalQuantity(vo.getTotalQuantity());
  494 + data.setTotalAmountCapital(vo.getTotalAmountCapital());
  495 + data.setTotalAmountExcludingTax(vo.getTotalAmountExcludingTax());
  496 + data.setTotalAmountIncludingTax(vo.getTotalAmountIncludingTax());
  497 + data.setStatus("STANDARD");
  498 + data.setParentId(vo.getId());
  499 + getBaseMapper().insert(data);
486 500
487 - getBaseMapper().update(wrapper); 501 + Wrapper<ContractDistributorLine> lineWrapper = Wrappers.lambdaQuery(ContractDistributorLine.class)
  502 + .eq(ContractDistributorLine::getContractId, vo.getId())
  503 + .orderByAsc(ContractDistributorLine::getShowOrder);
  504 + List<ContractDistributorLine> oldContractDistributorLineList = contractDistributorLineService.list(lineWrapper);
  505 + Map<String, ContractDistributorLine> contractDistributorLineMap = CollectionUtils.emptyIfNull(oldContractDistributorLineList)
  506 + .stream().collect(Collectors.toMap(ContractDistributorLine::getId, Function.identity()));
488 507
489 - lineVoList.forEach(lineVo -> {  
490 - Wrapper<ContractDistributorLine> contractDistributorLineWrapper = Wrappers.lambdaUpdate(ContractDistributorLine.class)  
491 - .set(ContractDistributorLine::getQuantity, lineVo.getQuantity())  
492 - .set(ContractDistributorLine::getUnitPrice, lineVo.getUnitPrice())  
493 - .set(ContractDistributorLine::getAmountExcludingTax, lineVo.getAmountExcludingTax())  
494 - .set(ContractDistributorLine::getTotalAmount, lineVo.getTotalAmount())  
495 - .eq(ContractDistributorLine::getId, lineVo.getId()); 508 + for (UpdateContractDistributorLineVo lineVo : lineVoList) {
  509 + ContractDistributorLine contractDistributorLine = contractDistributorLineMap.remove(lineVo.getId());
  510 + if (contractDistributorLine == null) {
  511 + throw new DefaultClientException("合同行数据不存在!");
  512 + }
496 513
497 - contractDistributorLineService.update(contractDistributorLineWrapper);  
498 - contractDistributorLineService.cleanCacheByKey(lineVo.getId());  
499 - }); 514 + contractDistributorLine.setId(IdUtil.getUUID());
  515 + contractDistributorLine.setContractId(data.getId());
  516 + contractDistributorLine.setQuantity(lineVo.getQuantity());
  517 + contractDistributorLine.setUnitPrice(lineVo.getUnitPrice());
  518 + contractDistributorLine.setAmountExcludingTax(lineVo.getAmountExcludingTax());
  519 + contractDistributorLine.setTotalAmount(lineVo.getTotalAmount());
  520 + contractDistributorLineService.getBaseMapper().insert(contractDistributorLine);
  521 + }
500 522
501 - OpLogUtil.setVariable("id", data.getId()); 523 + Wrapper<ContractDistributorStandard> changeLocked = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
  524 + .set(ContractDistributorStandard::isPriceSpecLocked, true)
  525 + .eq(ContractDistributorStandard::getId, vo.getId());
  526 + getBaseMapper().update(changeLocked);
  527 +
  528 +// Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
  529 +// .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity())
  530 +// .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax())
  531 +// .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax())
  532 +// .set(ContractDistributorStandard::getTotalAmountCapital, vo.getTotalAmountCapital())
  533 +// .set(ContractDistributorStandard::getStatus, "STANDARD")
  534 +// .eq(ContractDistributorStandard::getId, vo.getId());
  535 +//
  536 +// getBaseMapper().update(wrapper);
  537 +//
  538 +// lineVoList.forEach(lineVo -> {
  539 +// Wrapper<ContractDistributorLine> contractDistributorLineWrapper = Wrappers.lambdaUpdate(ContractDistributorLine.class)
  540 +// .set(ContractDistributorLine::getQuantity, lineVo.getQuantity())
  541 +// .set(ContractDistributorLine::getUnitPrice, lineVo.getUnitPrice())
  542 +// .set(ContractDistributorLine::getAmountExcludingTax, lineVo.getAmountExcludingTax())
  543 +// .set(ContractDistributorLine::getTotalAmount, lineVo.getTotalAmount())
  544 +// .eq(ContractDistributorLine::getId, lineVo.getId());
  545 +//
  546 +// contractDistributorLineService.update(contractDistributorLineWrapper);
  547 +// contractDistributorLineService.cleanCacheByKey(lineVo.getId());
  548 +// });
  549 +
  550 + OpLogUtil.setVariable("id", vo.getId());
502 OpLogUtil.setExtra(vo); 551 OpLogUtil.setExtra(vo);
503 } 552 }
504 553
@@ -55,6 +55,7 @@ @@ -55,6 +55,7 @@
55 <result column="standard_approved" property="standardApproved"/> 55 <result column="standard_approved" property="standardApproved"/>
56 <result column="standard_approver_id" property="standardApproverId"/> 56 <result column="standard_approver_id" property="standardApproverId"/>
57 <result column="standard_time" property="standardTime"/> 57 <result column="standard_time" property="standardTime"/>
  58 + <result column="price_spec_locked" property="priceSpecLocked"/>
58 </resultMap> 59 </resultMap>
59 60
60 <sql id="ContractDistributorStandard_sql"> 61 <sql id="ContractDistributorStandard_sql">
@@ -110,7 +111,8 @@ @@ -110,7 +111,8 @@
110 tb.standard_standardized, 111 tb.standard_standardized,
111 tb.standard_approved, 112 tb.standard_approved,
112 tb.standard_approver_id, 113 tb.standard_approver_id,
113 - tb.standard_time 114 + tb.standard_time,
  115 + tb.price_spec_locked
114 FROM tbl_contract_distributor_standard AS tb 116 FROM tbl_contract_distributor_standard AS tb
115 </sql> 117 </sql>
116 118