Commit cc2de118df4a361876717076c5da55110f18f46b

Authored by 房远帅
1 parent d726bab0

1:库存合同锁价新增变更原因;2:锁规增加剩余锁规数量

@@ -1462,3 +1462,6 @@ ALTER TABLE tbl_contract_distributor_standard @@ -1462,3 +1462,6 @@ ALTER TABLE tbl_contract_distributor_standard
1462 ADD COLUMN foreign_destination varchar(200) COMMENT '目的地(外贸)'; 1462 ADD COLUMN foreign_destination varchar(200) COMMENT '目的地(外贸)';
1463 1463
1464 ALTER TABLE tbl_purchase_order_line ADD COLUMN production_process text COMMENT '生产工艺'; 1464 ALTER TABLE tbl_purchase_order_line ADD COLUMN production_process text COMMENT '生产工艺';
  1465 +
  1466 +ALTER TABLE tbl_contract_distributor_standard
  1467 + ADD COLUMN change_reason varchar(50) DEFAULT NULL COMMENT '变更原因';
@@ -437,6 +437,12 @@ public class GetContractDistributorStandardBo extends BaseBo<ContractDistributor @@ -437,6 +437,12 @@ public class GetContractDistributorStandardBo extends BaseBo<ContractDistributor
437 @ApiModelProperty(value = "是否已完成锁价/锁规") 437 @ApiModelProperty(value = "是否已完成锁价/锁规")
438 private Boolean priceSpecLocked; 438 private Boolean priceSpecLocked;
439 439
  440 + @ApiModelProperty(value = "变更原因")
  441 + private String changeReason;
  442 +
  443 + @ApiModelProperty(value = "剩余数量")
  444 + private BigDecimal remainingQuantity;
  445 +
440 /** 446 /**
441 * 合同名称(销售合同、销售订单) 447 * 合同名称(销售合同、销售订单)
442 */ 448 */
@@ -216,6 +216,12 @@ public class QueryContractDistributorStandardBo extends BaseBo<ContractDistribut @@ -216,6 +216,12 @@ public class QueryContractDistributorStandardBo extends BaseBo<ContractDistribut
216 @ApiModelProperty(value = "是否已完成锁价/锁规") 216 @ApiModelProperty(value = "是否已完成锁价/锁规")
217 private Boolean priceSpecLocked; 217 private Boolean priceSpecLocked;
218 218
  219 + @ApiModelProperty(value = "变更原因")
  220 + private String changeReason;
  221 +
  222 + @ApiModelProperty(value = "剩余数量")
  223 + private BigDecimal remainingQuantity;
  224 +
219 /** 225 /**
220 * 双方盖章合同ID 226 * 双方盖章合同ID
221 */ 227 */
@@ -314,6 +314,11 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto { @@ -314,6 +314,11 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
314 private Boolean priceSpecLocked; 314 private Boolean priceSpecLocked;
315 315
316 /** 316 /**
  317 + * 变更原因
  318 + */
  319 + private String changeReason;
  320 +
  321 + /**
317 * 双方盖章合同ID 322 * 双方盖章合同ID
318 */ 323 */
319 private String signedContractFileId; 324 private String signedContractFileId;
@@ -362,4 +367,10 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto { @@ -362,4 +367,10 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
362 */ 367 */
363 @TableField(exist = false) 368 @TableField(exist = false)
364 private Boolean canSplit; 369 private Boolean canSplit;
  370 +
  371 + /**
  372 + * 剩余锁规数量
  373 + */
  374 + @TableField(exist = false)
  375 + private BigDecimal remainingQuantity;
365 } 376 }
@@ -236,6 +236,7 @@ public class ContractDistributorStandardServiceImpl extends @@ -236,6 +236,7 @@ public class ContractDistributorStandardServiceImpl extends
236 canEdit = true; 236 canEdit = true;
237 } 237 }
238 data.setCanEdit(canEdit); 238 data.setCanEdit(canEdit);
  239 + fillRemainingQuantity(data);
239 240
240 // 获取当前人员的待办任务数据 241 // 获取当前人员的待办任务数据
241 List<FlowTaskDto> flowTaskList = flowTaskWrapperMapper.queryTodoList(new QueryTodoTaskListVo(), SecurityUtil.getCurrentUser().getId()); 242 List<FlowTaskDto> flowTaskList = flowTaskWrapperMapper.queryTodoList(new QueryTodoTaskListVo(), SecurityUtil.getCurrentUser().getId());
@@ -260,6 +261,31 @@ public class ContractDistributorStandardServiceImpl extends @@ -260,6 +261,31 @@ public class ContractDistributorStandardServiceImpl extends
260 return data; 261 return data;
261 } 262 }
262 263
  264 + private void fillRemainingQuantity(ContractDistributorStandard data) {
  265 + if (data == null || StringUtils.isBlank(data.getId())) {
  266 + return;
  267 + }
  268 + if (data.getTotalQuantity() == null) {
  269 + data.setRemainingQuantity(BigDecimal.ZERO);
  270 + return;
  271 + }
  272 +
  273 + Wrapper<ContractDistributorStandard> childWrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class)
  274 + .eq(ContractDistributorStandard::getParentId, data.getId());
  275 + List<ContractDistributorStandard> childContractList = getBaseMapper().selectList(childWrapper);
  276 + BigDecimal totalLockedQuantity = CollectionUtils.emptyIfNull(childContractList).stream()
  277 + .filter(Objects::nonNull)
  278 + .map(ContractDistributorStandard::getTotalQuantity)
  279 + .filter(Objects::nonNull)
  280 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  281 +
  282 + BigDecimal remainingQuantity = data.getTotalQuantity().subtract(totalLockedQuantity);
  283 + if (remainingQuantity.compareTo(BigDecimal.ZERO) < 0) {
  284 + remainingQuantity = BigDecimal.ZERO;
  285 + }
  286 + data.setRemainingQuantity(remainingQuantity);
  287 + }
  288 +
263 private boolean isCanSplitByCode(String code) { 289 private boolean isCanSplitByCode(String code) {
264 if (StringUtils.isBlank(code)) { 290 if (StringUtils.isBlank(code)) {
265 return false; 291 return false;
@@ -1264,6 +1290,7 @@ public class ContractDistributorStandardServiceImpl extends @@ -1264,6 +1290,7 @@ public class ContractDistributorStandardServiceImpl extends
1264 data.setOrderDate(LocalDate.now()); 1290 data.setOrderDate(LocalDate.now());
1265 data.setStatus("STANDARD"); 1291 data.setStatus("STANDARD");
1266 data.setParentId(vo.getId()); 1292 data.setParentId(vo.getId());
  1293 + data.setChangeReason(vo.getChangeReason());
1267 // data.setStandardizedAt(LocalDateTime.now()); 1294 // data.setStandardizedAt(LocalDateTime.now());
1268 getBaseMapper().insert(data); 1295 getBaseMapper().insert(data);
1269 1296
@@ -1292,6 +1319,7 @@ public class ContractDistributorStandardServiceImpl extends @@ -1292,6 +1319,7 @@ public class ContractDistributorStandardServiceImpl extends
1292 1319
1293 Wrapper<ContractDistributorStandard> changeLocked = Wrappers.lambdaUpdate(ContractDistributorStandard.class) 1320 Wrapper<ContractDistributorStandard> changeLocked = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
1294 .set(ContractDistributorStandard::getPriceSpecLocked, true) 1321 .set(ContractDistributorStandard::getPriceSpecLocked, true)
  1322 + .set(StringUtils.isNotBlank(vo.getChangeReason()), ContractDistributorStandard::getChangeReason, vo.getChangeReason())
1295 .eq(ContractDistributorStandard::getId, vo.getId()); 1323 .eq(ContractDistributorStandard::getId, vo.getId());
1296 getBaseMapper().update(changeLocked); 1324 getBaseMapper().update(changeLocked);
1297 1325
@@ -233,6 +233,10 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable @@ -233,6 +233,10 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
233 @Length(message = "备注最多允许65,535个字符!") 233 @Length(message = "备注最多允许65,535个字符!")
234 private String remarks; 234 private String remarks;
235 235
  236 + @ApiModelProperty(value = "变更原因")
  237 + @Length(message = "变更原因最多允许50个字符!")
  238 + private String changeReason;
  239 +
236 /** 240 /**
237 * 合计数量 241 * 合计数量
238 */ 242 */
@@ -64,6 +64,7 @@ @@ -64,6 +64,7 @@
64 <result column="formalized_at" property="formalizedAt"/> 64 <result column="formalized_at" property="formalizedAt"/>
65 <result column="standardized_at" property="standardizedAt"/> 65 <result column="standardized_at" property="standardizedAt"/>
66 <result column="title" property="title"/> 66 <result column="title" property="title"/>
  67 + <result column="change_reason" property="changeReason"/>
67 </resultMap> 68 </resultMap>
68 69
69 <sql id="ContractDistributorStandard_sql"> 70 <sql id="ContractDistributorStandard_sql">
@@ -127,7 +128,8 @@ @@ -127,7 +128,8 @@
127 tb.signed_contract_file_name, 128 tb.signed_contract_file_name,
128 tb.formalized_at, 129 tb.formalized_at,
129 tb.standardized_at, 130 tb.standardized_at,
130 - tb.title 131 + tb.title,
  132 + tb.change_reason
131 FROM tbl_contract_distributor_standard AS tb 133 FROM tbl_contract_distributor_standard AS tb
132 </sql> 134 </sql>
133 135