Showing
7 changed files
with
61 additions
and
1 deletions
| ... | ... | @@ -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 '变更原因'; | ... | ... |
xingyun-sc/src/main/java/com/lframework/xingyun/sc/bo/contract/GetContractDistributorStandardBo.java
| ... | ... | @@ -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 | ... | ... |