Commit cc2de118df4a361876717076c5da55110f18f46b

Authored by 房远帅
1 parent d726bab0

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

... ... @@ -1462,3 +1462,6 @@ ALTER TABLE tbl_contract_distributor_standard
1462 1462 ADD COLUMN foreign_destination varchar(200) COMMENT '目的地(外贸)';
1463 1463
1464 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 437 @ApiModelProperty(value = "是否已完成锁价/锁规")
438 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 216 @ApiModelProperty(value = "是否已完成锁价/锁规")
217 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 226 * 双方盖章合同ID
221 227 */
... ...
... ... @@ -314,6 +314,11 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
314 314 private Boolean priceSpecLocked;
315 315
316 316 /**
  317 + * 变更原因
  318 + */
  319 + private String changeReason;
  320 +
  321 + /**
317 322 * 双方盖章合同ID
318 323 */
319 324 private String signedContractFileId;
... ... @@ -362,4 +367,10 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
362 367 */
363 368 @TableField(exist = false)
364 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 236 canEdit = true;
237 237 }
238 238 data.setCanEdit(canEdit);
  239 + fillRemainingQuantity(data);
239 240
240 241 // 获取当前人员的待办任务数据
241 242 List<FlowTaskDto> flowTaskList = flowTaskWrapperMapper.queryTodoList(new QueryTodoTaskListVo(), SecurityUtil.getCurrentUser().getId());
... ... @@ -260,6 +261,31 @@ public class ContractDistributorStandardServiceImpl extends
260 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 289 private boolean isCanSplitByCode(String code) {
264 290 if (StringUtils.isBlank(code)) {
265 291 return false;
... ... @@ -1264,6 +1290,7 @@ public class ContractDistributorStandardServiceImpl extends
1264 1290 data.setOrderDate(LocalDate.now());
1265 1291 data.setStatus("STANDARD");
1266 1292 data.setParentId(vo.getId());
  1293 + data.setChangeReason(vo.getChangeReason());
1267 1294 // data.setStandardizedAt(LocalDateTime.now());
1268 1295 getBaseMapper().insert(data);
1269 1296
... ... @@ -1292,6 +1319,7 @@ public class ContractDistributorStandardServiceImpl extends
1292 1319
1293 1320 Wrapper<ContractDistributorStandard> changeLocked = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
1294 1321 .set(ContractDistributorStandard::getPriceSpecLocked, true)
  1322 + .set(StringUtils.isNotBlank(vo.getChangeReason()), ContractDistributorStandard::getChangeReason, vo.getChangeReason())
1295 1323 .eq(ContractDistributorStandard::getId, vo.getId());
1296 1324 getBaseMapper().update(changeLocked);
1297 1325
... ...
... ... @@ -233,6 +233,10 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
233 233 @Length(message = "备注最多允许65,535个字符!")
234 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 64 <result column="formalized_at" property="formalizedAt"/>
65 65 <result column="standardized_at" property="standardizedAt"/>
66 66 <result column="title" property="title"/>
  67 + <result column="change_reason" property="changeReason"/>
67 68 </resultMap>
68 69
69 70 <sql id="ContractDistributorStandard_sql">
... ... @@ -127,7 +128,8 @@
127 128 tb.signed_contract_file_name,
128 129 tb.formalized_at,
129 130 tb.standardized_at,
130   - tb.title
  131 + tb.title,
  132 + tb.change_reason
131 133 FROM tbl_contract_distributor_standard AS tb
132 134 </sql>
133 135
... ...