diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/LeaseApplyDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/LeaseApplyDetails.java index 9f5a1e33..c4e3e47e 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/LeaseApplyDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/LeaseApplyDetails.java @@ -212,6 +212,8 @@ public class LeaseApplyDetails extends BaseEntity { @ApiModelProperty(value = "任务唯一标识单号") private String keyId; + private List oldTypeIdList; + @ApiModelProperty(value = "领料物资名称汇总") private String maTypeNames; public LeaseApplyDetails(Long id, Long parentId, Long typeId, BigDecimal preNum, BigDecimal auditNum, BigDecimal alNum, String status, Long companyId) { diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyDetailsMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyDetailsMapper.java index 76cc8607..59c280fd 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyDetailsMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyDetailsMapper.java @@ -240,4 +240,11 @@ public interface LeaseApplyDetailsMapper { List selectLeaseApplyLL(LeaseApplyInfo bean); List selectLeaseApplyLY(LeaseApplyInfo bean); + + /** + * 根据oldTypeId和parentId查询领用待发布数量 + * @param detail + * @return + */ + LeaseApplyDetails getPublishNum(LeaseApplyDetails detail); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java index d5425cb5..054ceaa8 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java @@ -247,7 +247,7 @@ public interface LeaseApplyInfoMapper { * @param leaseApplyDetails * @return */ - LeaseApplyDetails getPublishNum(LeaseApplyDetails leaseApplyDetails); + List getPublishNum(LeaseApplyDetails leaseApplyDetails); /** * 修改领用单的领用单出库数量 @@ -319,4 +319,32 @@ public interface LeaseApplyInfoMapper { * @return */ List selectPublishSignList(LeaseApplyInfo applyInfo); + + /** + * 根据parentId及newTypeId查询发布数量 + * @param leaseApplyDetails + * @return + */ + List getPublishNumTwo(LeaseApplyDetails leaseApplyDetails); + + /** + * 删除该条发布数据 + * @param publishDetails + * @return + */ + int deletePublish(LeaseApplyDetails publishDetails); + + /** + * 减去该条发布数据 + * @param publishDetails + * @return + */ + int subtractLeasePublish(LeaseApplyDetails publishDetails); + + /** + * 修改该条发布数据 + * @param publishDetails + * @return + */ + int updateLeaseApplyDetails(LeaseApplyDetails publishDetails); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java index 6265c40e..03b1ced3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java @@ -227,6 +227,17 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { LeaseApplyDetails pendingOutNum = mapper.selectPendingOutNum(detail); detail.setPendingOutNum(pendingOutNum.getPendingOutNum()); detail.setStorageNum(pendingOutNum.getStorageNum()); + if (StringUtils.isNotBlank(publishTask)) { + // 根据oldTypeId和parentId查询领用待发布数量 + if (StringUtils.isNotBlank(detail.getOldTypeId())) { + List oldTypeIdList = Arrays.asList(detail.getOldTypeId().split(",")); + detail.setOldTypeIdList(oldTypeIdList); + } + LeaseApplyDetails applyDetails = leaseApplyDetailsMapper.getPublishNum(detail); + if (applyDetails != null) { + detail.setPendingPublishNum(applyDetails.getPendingPublishNum().add(detail.getPreNum())); + } + } } } stepTimes.put("领用发布查询", System.currentTimeMillis() - step81Start); @@ -1102,23 +1113,77 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { @Transactional(rollbackFor = Exception.class) public AjaxResult updateLeaseNum(LeaseApplyDetails leaseApplyDetails) { try { - if (leaseApplyDetails.getNewTypeId()!= null){ - // 根据parentId查询发布数量 - //LeaseApplyDetails applyDetails = leaseApplyInfoMapper.getPublishNum(leaseApplyDetails); - // 根据传入的值判断少了多少发布数量 - leaseApplyDetails.setPublishNum(leaseApplyDetails.getPreNum()); - int res = leaseApplyInfoMapper.updateLeaseNum(leaseApplyDetails); - if (res <= 0){ - return AjaxResult.error("修改领用表失败"); - } - res = leaseApplyInfoMapper.updateLeasePublish(leaseApplyDetails); - if (res <= 0){ - return AjaxResult.error("修改领料发布表失败"); + if (leaseApplyDetails.getNewTypeId()!= null) { + // 根据parentId及oldTypeIdList查询需求数量 + List applyDetailsList = leaseApplyInfoMapper.getPublishNum(leaseApplyDetails); + // 根据parentId及newTypeId查询发布及待发布数量 + List publishDetailsList = leaseApplyInfoMapper.getPublishNumTwo(leaseApplyDetails); + // 根据传入的值判断发布数量是增加还是减少 + // 新数量 + BigDecimal preNum = leaseApplyDetails.getPreNum(); + // 老数量 + BigDecimal publishNum = leaseApplyDetails.getPublishNum(); + if (preNum.compareTo(publishNum) > 0) { + // 差值 + BigDecimal subtractNum = preNum.subtract(publishNum); + for (LeaseApplyDetails applyDetails : applyDetailsList) { + // 待发布数量 + BigDecimal subNum = applyDetails.getPendingNum(); + if (subtractNum.compareTo(subNum) <= 0) { + applyDetails.setPendingNum(subtractNum); + leaseApplyInfoMapper.updateLeaseNum(applyDetails); + break; + } else if (subtractNum.compareTo(subNum) > 0) { + subtractNum = subtractNum.subtract(subNum); + applyDetails.setPendingNum(subtractNum); + leaseApplyInfoMapper.updateLeaseNum(applyDetails); + } + } + // 差值 + BigDecimal leaseSubtractNum = preNum.subtract(publishNum); + for (LeaseApplyDetails publishDetails : publishDetailsList) { + // 待发布数量 + BigDecimal pendingNum = publishDetails.getPendingNum(); + if (leaseSubtractNum.compareTo(pendingNum) <= 0) { + publishDetails.setPendingNum(leaseSubtractNum); + leaseApplyInfoMapper.updateLeasePublish(publishDetails); + break; + } else if (leaseSubtractNum.compareTo(pendingNum) > 0) { + leaseSubtractNum = leaseSubtractNum.subtract(pendingNum); + publishDetails.setPendingNum(leaseSubtractNum); + leaseApplyInfoMapper.updateLeasePublish(publishDetails); + } + } + } else if (preNum.compareTo(publishNum) < 0) { + // 差值 + BigDecimal leaseSubtractNum = publishNum.subtract(preNum); + for (LeaseApplyDetails publishDetails : publishDetailsList) { + // 发布数量 + BigDecimal num = publishDetails.getPublishNum(); + if (leaseSubtractNum.compareTo(num) == 0) { + //删除该条发布数据 + leaseApplyInfoMapper.deletePublish(publishDetails); + //处理lease_apply_details表数据 + leaseApplyInfoMapper.updateLeaseApplyDetails(publishDetails); + break; + } else if (leaseSubtractNum.compareTo(num) > 0) { + leaseSubtractNum = leaseSubtractNum.subtract(num); + leaseApplyInfoMapper.deletePublish(publishDetails); + //处理lease_apply_details表数据 + leaseApplyInfoMapper.updateLeaseApplyDetails(publishDetails); + } else if (leaseSubtractNum.compareTo(num) < 0) { + publishDetails.setPublishNum(leaseSubtractNum); + leaseApplyInfoMapper.subtractLeasePublish(publishDetails); + //处理lease_apply_details表数据 + leaseApplyInfoMapper.updateLeaseApplyDetails(publishDetails); + break; + } + } } } else { - int res = leaseApplyInfoMapper.updateLeaseNumTwo(leaseApplyDetails); - if (res <= 0){ - return AjaxResult.error("修改领料表失败"); + int result = leaseApplyInfoMapper.updateLeaseNumTwo(leaseApplyDetails); + if (result <= 0) { + throw new Exception("修改领料表失败"); } } return AjaxResult.success("修改成功"); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml index a7fe7268..a01b105a 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml @@ -89,7 +89,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" lad.create_by, lad.create_time, lad.update_by, lad.update_time, lad.remark, lad.company_id, mt4.type_id as firstId, su.sign_url as signUrl, - su.sign_type as signType + su.sign_type as signType, + IFNULL(lad.pre_num,0) as pendingPublishNum from lease_apply_details lad left join @@ -893,4 +894,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by lpd.id + + diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml index d1d288ab..05d3d509 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyInfoMapper.xml @@ -279,6 +279,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + delete from lease_publish_details where id = #{id} + + @@ -987,14 +1001,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + +