diff --git a/zt-module-contract-order/zt-module-contract-order-server/pom.xml b/zt-module-contract-order/zt-module-contract-order-server/pom.xml index cf916c27..3f201f4a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/pom.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/pom.xml @@ -42,6 +42,11 @@ ${revision} + + com.zt.plat + zt-module-receive-deliver-api + ${revision} + com.zt.plat diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java index 76c193f2..adc78767 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java @@ -104,20 +104,22 @@ public class OrderApiImpl implements OrderApi { if ("SALE".equals(f.getSplyBsnTp())) { SalesOrderDetailDO salesOrderDetailDO = salesOrderDetailMapper.selectById(f.getOrderDetailId()); // 处理 trfQty 可能为 null 的情况,默认值 0 - BigDecimal trfQty = Optional.ofNullable(salesOrderDetailDO.getTrfQty()) + BigDecimal lstQty = Optional.ofNullable(salesOrderDetailDO.getTrfQty()) .orElse(BigDecimal.ZERO); SalesOrderDetailDO updateDO = new SalesOrderDetailDO(); updateDO.setId(f.getOrderDetailId()); // 给更新对象设 ID - updateDO.setTrfQty(trfQty.add(f.getLstQty())); // 累加(trfQty ) + updateDO.setTrfQty(lstQty.add(f.getLstQty())); // 累加(trfQty ) + log.info("更新销售订单明细:{}", updateDO); salesOrderDetailMapper.updateById(updateDO); } else if ("PUR".equals(f.getSplyBsnTp())) { // 采购 PrchOrdDtlDO prchOrdDtlDO = prchOrdDtlMapper.selectById(f.getOrderDetailId()); - BigDecimal trfQty = Optional.ofNullable(prchOrdDtlDO.getTrfQty()) + BigDecimal lstQty = Optional.ofNullable(prchOrdDtlDO.getTrfQty()) .orElse(BigDecimal.ZERO); PrchOrdDtlDO updateDO = new PrchOrdDtlDO(); updateDO.setId(f.getOrderDetailId()); - updateDO.setTrfQty(trfQty.add(f.getLstQty())); + updateDO.setLstQty(lstQty.add(f.getLstQty())); + log.info("更新销售订单明细:{}", updateDO); prchOrdDtlMapper.updateById(updateDO); } else { throw new RuntimeException("请求数据错误"); @@ -207,7 +209,7 @@ public class OrderApiImpl implements OrderApi { ordDtlDTO.setTrfWrhName(p.getTrfWrhName()); ordDtlDTO.setTrfWrhNum(p.getTrfWrhNum()); ordDtlDTO.setRmk(p.getRmk()); - + ordDtlDTO.setLstQty(p.getLstQty()); } else if ( t instanceof SalesOrderDetailDO s @@ -230,8 +232,9 @@ public class OrderApiImpl implements OrderApi { ordDtlDTO.setElementCode(s.getElementNumber()); ordDtlDTO.setIsEnable(s.getIsEnable()); ordDtlDTO.setTaxNum(s.getTaxAcctasscat()); - ordDtlDTO.setTrfQty(s.getTrfQty()); + ordDtlDTO.setLstQty(s.getTrfQty()); ordDtlDTO.setRmk(s.getRemark()); + ordDtlDTO.setTaxRte(s.getTaxRte()); } return ordDtlDTO; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java index 86e5e431..c98e3a35 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java @@ -16,6 +16,7 @@ import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.*; import com.zt.plat.framework.common.pojo.PageParam; @@ -48,6 +49,7 @@ public class PrchOrdDtlServiceImpl implements PrchOrdDtlService { // 插入 PrchOrdDtlDO prchOrdDtl = BeanUtils.toBean(createReqVO, PrchOrdDtlDO.class); log.info("创建采购订单明细,创建数据【{}】", prchOrdDtl); + prchOrdDtl.setTrfQty(BigDecimal.ZERO); prchOrdDtlMapper.insert(prchOrdDtl); // 返回 return BeanUtils.toBean(prchOrdDtl, PrchOrdDtlRespVO.class); diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java index c846def0..436b5702 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java @@ -1,16 +1,19 @@ package com.zt.plat.module.contractorder.service.salesorder; import cn.hutool.core.collection.CollUtil; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO; import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO; import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderDetailMapper; +import com.zt.plat.module.receivedeliver.api.bill.BillMainApi; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.*; import com.zt.plat.framework.common.pojo.PageResult; @@ -33,12 +36,15 @@ public class SalesOrderDetailServiceImpl implements SalesOrderDetailService { @Resource private SalesOrderDetailMapper salesOrderDetailMapper; + @Resource + private BillMainApi billMainApi; @Override @Transactional public SalesOrderDetailRespVO createSalesOrderDetail(SalesOrderDetailSaveReqVO createReqVO) { // 插入 SalesOrderDetailDO salesOrderDetail = BeanUtils.toBean(createReqVO, SalesOrderDetailDO.class); + salesOrderDetail.setTrfQty(BigDecimal.ZERO); salesOrderDetail.setOrderId(Long.valueOf(createReqVO.getOrderId())); salesOrderDetailMapper.insert(salesOrderDetail); // 返回 @@ -76,12 +82,22 @@ public class SalesOrderDetailServiceImpl implements SalesOrderDetailService { @Override @Transactional(rollbackFor = Exception.class) public void deleteSalesOrderDetailListByIds(List ids) { + //校验是否可以删除 + validateBillMainCanDelete(ids); // 校验存在 validateSalesOrderDetailExists(ids); // 删除 salesOrderDetailMapper.deleteByIds(ids); } - + private void validateBillMainCanDelete(List ids) { + ids.forEach(id -> { + CommonResult booleanCommonResult = billMainApi.notOffsetIsExistOrderDetailId(id); + if (booleanCommonResult.isSuccess() && booleanCommonResult.getData()) { + SalesOrderDetailDO salesOrderDetailDO = salesOrderDetailMapper.selectById(id); + throw new RuntimeException("行目为【" + salesOrderDetailDO.getLineNumber() + "】的订单明细存在发货数据。不允许删除"); + } + }); + } private void validateSalesOrderDetailExists(List ids) { List list = salesOrderDetailMapper.selectByIds(ids); if (CollUtil.isEmpty(list) || list.size() != ids.size()) {