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