Commit 900b53f5a368868d990ec2adf0ba718b7c426ea6

Authored by 杨鸣坤
1 parent ee436e73

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

... ... @@ -125,6 +125,7 @@ create table if not exists `tbl_contract_distributor_standard`
125 125 `standard_approved` varchar(20) COMMENT '标准合同是否审核完成(AUDIT:审核中,PASS:审核通过,REFUSE:已驳回,CANCEL:已取消)',
126 126 `standard_approver_id` varchar(32) COMMENT '标准合同审批人ID',
127 127 `standard_time` datetime COMMENT '标准合同审批完成时间',
  128 + `price_spec_locked` TINYINT(1) DEFAULT FALSE COMMENT '是否已完成锁价/锁规',
128 129 `create_by_id` varchar(32) not null comment '创建人ID',
129 130 `create_by` varchar(20) not null comment '创建人',
130 131 `update_by_id` varchar(32) not null comment '更新人ID',
... ...
... ... @@ -173,6 +173,12 @@ public class QueryContractDistributorStandardBo extends BaseBo<ContractDistribut
173 173 @ApiModelProperty(value = "发货状态")
174 174 private String shippingStatusName;
175 175
  176 + /**
  177 + * 是否已完成锁价/锁规
  178 + */
  179 + @ApiModelProperty(value = "是否已完成锁价/锁规")
  180 + private boolean priceSpecLocked;
  181 +
176 182 public QueryContractDistributorStandardBo() {
177 183
178 184 }
... ...
... ... @@ -447,6 +447,20 @@ public class ContractDistributorStandardController extends DefaultBaseController
447 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 573 dataMap.put("totalAmountExcludingTax", data.getTotalAmountExcludingTax().setScale(2, RoundingMode.HALF_UP).toString());
560 574 dataMap.put("totalAmountIncludingTax", data.getTotalAmountIncludingTax().setScale(2, RoundingMode.HALF_UP).toString());
561 575 dataMap.put("totalAmountCapital", data.getTotalAmountCapital());
  576 + dataMap.put("specialInstructions", data.getSpecialInstructions());
562 577
563 578 dataMap.put("depositInfo", data.getDepositInfo());
564 579 dataMap.put("paymentTerms", data.getPaymentTerms());
... ...
... ... @@ -294,6 +294,11 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
294 294 private BigDecimal totalAmountIncludingTax;
295 295
296 296 /**
  297 + * 是否已完成锁价/锁规
  298 + */
  299 + private boolean priceSpecLocked;
  300 +
  301 + /**
297 302 * 是否展示正式合同审核按钮(非持久化字段)
298 303 */
299 304 @TableField(exist = false)
... ...
... ... @@ -44,7 +44,9 @@ import java.io.Serializable;
44 44 import java.time.LocalDateTime;
45 45 import java.util.ArrayList;
46 46 import java.util.List;
  47 +import java.util.Map;
47 48 import java.util.Set;
  49 +import java.util.function.Function;
48 50 import java.util.stream.Collectors;
49 51
50 52 @Service
... ... @@ -285,6 +287,15 @@ public class ContractDistributorStandardServiceImpl extends
285 287
286 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 299 OpLogUtil.setVariable("id", data.getId());
289 300 OpLogUtil.setExtra(vo);
290 301
... ... @@ -343,7 +354,9 @@ public class ContractDistributorStandardServiceImpl extends
343 354 .set(ContractDistributorStandard::getFormalApproved, formalApproved)
344 355 .set(ContractDistributorStandard::getFormalApproverId, SecurityUtil.getCurrentUser().getId())
345 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 361 getBaseMapper().update(wrapper);
349 362
... ... @@ -476,29 +489,65 @@ public class ContractDistributorStandardServiceImpl extends
476 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 551 OpLogUtil.setExtra(vo);
503 552 }
504 553
... ...
... ... @@ -55,6 +55,7 @@
55 55 <result column="standard_approved" property="standardApproved"/>
56 56 <result column="standard_approver_id" property="standardApproverId"/>
57 57 <result column="standard_time" property="standardTime"/>
  58 + <result column="price_spec_locked" property="priceSpecLocked"/>
58 59 </resultMap>
59 60
60 61 <sql id="ContractDistributorStandard_sql">
... ... @@ -110,7 +111,8 @@
110 111 tb.standard_standardized,
111 112 tb.standard_approved,
112 113 tb.standard_approver_id,
113   - tb.standard_time
  114 + tb.standard_time,
  115 + tb.price_spec_locked
114 116 FROM tbl_contract_distributor_standard AS tb
115 117 </sql>
116 118
... ...