From 66e308d7af3f88ee3f94d29d4e1024d1b8a1f377 Mon Sep 17 00:00:00 2001 From: linfso Date: Tue, 9 Jul 2024 15:48:21 +0800 Subject: [PATCH] md --- .../web/emis/EmisSettleBillController.java | 16 +++- .../erp/emis/domain/EmisSettleBill.java | 5 ++ .../emis/mapper/EmisSettleSubBillMapper.java | 8 ++ .../erp/emis/service/EmisBaseService.java | 10 +++ .../emis/service/IEmisSettleBillService.java | 5 +- .../impl/EmisSettleBillServiceImpl.java | 77 ++++++++++++++++++- .../mapper/EmisSettleSubBillMapper.xml | 19 +++++ 7 files changed, 133 insertions(+), 7 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java index 9d929b63f..a4e2ad64d 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java @@ -13,6 +13,9 @@ package com.xdadan.erp.web.emis; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.domain.vo.scan.ScanResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; @@ -107,7 +110,18 @@ public class EmisSettleBillController extends BaseController @PostMapping public AjaxResult add(@RequestBody EmisSettleBill emisSettleBill) { - return toAjax(emisSettleBillService.insertEmisSettleBill(emisSettleBill)); + try { + return toAjax(emisSettleBillService.insertEmisSettleBill(emisSettleBill)); + }catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("系统异常,联系客服"); + } + } /** diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java index d558d2ef7..718e179c1 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java @@ -19,6 +19,8 @@ import com.xdadan.erp.common.core.domain.TreeEntity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import lombok.Data; @@ -116,4 +118,7 @@ public class EmisSettleBill extends BaseEntity /* 网点确认备注 */ private String siteConfirmNote; + List subBillList; + + } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java index 24d078ddf..f9d99205f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java @@ -35,6 +35,9 @@ public interface EmisSettleSubBillMapper extends BaseMapper public EmisSettleSubBill selectSettleSubBillByBillCode(String billCode); + + public EmisSettleSubBill selectSettleSubBillBySubBillNo(String subBillNo); + /** * 查询列表 * @@ -76,6 +79,11 @@ public interface EmisSettleSubBillMapper extends BaseMapper */ public int updateEmisSettleSubBill(EmisSettleSubBill emisSettleSubBill); + + // 更新主账单号 + public int updateMainSettleBillNo(EmisSettleSubBill emisSettleSubBill); + + // 财务中心取消和确认,确认不出账,设置异常 public int confirmBillByCenter(EmisSettleSubBill emisSettleSubBill); public int cancelConfirmBillByCenter(EmisSettleSubBill emisSettleSubBill); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 7cd2c6cfa..b8641aacf 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -1048,6 +1048,16 @@ public class EmisBaseService { public EmisSettleSubBill getSettleSubBillByBillCode(String billCode){ return emisSettleSubBillMapper.selectSettleSubBillByBillCode(billCode); } + + /** + * 获取运单主账单信息 根据子账单编号 + * @param subBillNo + * @return + */ + public EmisSettleSubBill getSettleSubBillBySubBillNo(String subBillNo){ + return emisSettleSubBillMapper.selectSettleSubBillBySubBillNo(subBillNo); + } + /** * 财务账单确认 * @param emisSettleSubBill diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java index 10a77c87f..3f40c1326 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java @@ -11,8 +11,9 @@ package com.xdadan.erp.emis.service; import java.util.List; import com.xdadan.erp.emis.domain.EmisSettleBill; +import com.xdadan.erp.emis.domain.exception.EmisBizError; -/** + /** * @ClassName EmisSettleBillService * @Description 结算总账单 * @author linfso @@ -50,7 +51,7 @@ public interface IEmisSettleBillService * @param emisSettleBill 结算总账单 * @return 结果 */ - public int insertEmisSettleBill(EmisSettleBill emisSettleBill); + public int insertEmisSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError; /** * 修改结算总账单 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java index ff2208000..5308e9f48 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java @@ -10,25 +10,38 @@ package com.xdadan.erp.emis.service.impl; +import java.math.BigDecimal; +import java.util.Collection; import java.util.List; + +import cn.hutool.core.collection.CollectionUtil; +import com.xdadan.erp.emis.domain.EmisSettleSubBill; +import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.mapper.EmisSettleSubBillMapper; +import com.xdadan.erp.emis.service.EmisBaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.xdadan.erp.emis.domain.EmisSettleBill; import com.xdadan.erp.emis.mapper.EmisSettleBillMapper; import com.xdadan.erp.emis.service.IEmisSettleBillService; +import org.springframework.transaction.annotation.Transactional; -/** + /** * 结算总账单Service业务层处理 * * @author linfso * @date 2024-07-03 18:54:51 */ @Service -public class EmisSettleBillServiceImpl implements IEmisSettleBillService +public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisSettleBillService { @Autowired private EmisSettleBillMapper emisSettleBillMapper; + @Autowired + private EmisSettleSubBillMapper emisSettleSubBillMapper; + /** * 查询结算总账单 * @@ -73,8 +86,64 @@ public class EmisSettleBillServiceImpl implements IEmisSettleBillService * @return 结果 */ @Override - public int insertEmisSettleBill(EmisSettleBill emisSettleBill) - { + public int insertEmisSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError { + // 检查子账单是否可加入 + + if(CollectionUtil.isEmpty(emisSettleBill.getSubBillList())){ + throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,未选择子账单"); + } + + // 计算应收总账单金额 + // 检查子账单是否可加入 + BigDecimal totalRecMoney = BigDecimal.ZERO; + /* 总票数 */ + Integer sendPieceSum = emisSettleBill.getSubBillList().size(); +// /* 总件数 */ + Integer pieceNumber=0; +// /* 总重量 */ + BigDecimal feeWeight = BigDecimal.ZERO; +// /* 合计金额 */ + BigDecimal sendMoneySum= BigDecimal.ZERO; + + for (EmisSettleSubBill subBill: emisSettleBill.getSubBillList() + ) { + EmisSettleSubBill subBllOld = getSettleSubBillBySubBillNo(subBill.getBillNo()); + if(subBllOld==null){ + throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,子账单["+subBllOld.getBillCode()+"]不存在"); + } + + if(!"1".equals(subBllOld.getBlConfirm()) ){ + throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,子单号["+subBllOld.getBillCode()+"]未确认"); + } + + + + + // 更新主账单编号 + subBllOld.setSettleBillNo(emisSettleBill.getSettleBillNo()); + emisSettleSubBillMapper.updateMainSettleBillNo(subBllOld); + + // 累加应收 + totalRecMoney=totalRecMoney.add(subBllOld.getBillFee()); + pieceNumber=pieceNumber+subBllOld.getWaybillDetail().getParcelQty(); + feeWeight=feeWeight.add(subBllOld.getWaybillDetail().getSettlementWeight()); + + // 主账单公共信息 + emisSettleBill.setSettleType(subBllOld.getSettleType()); + emisSettleBill.setCustNo(subBllOld.getCustNo()); + emisSettleBill.setCustomerCode(subBllOld.getCustomerCode()); + emisSettleBill.setCustomerName(subBllOld.getCustomerName()); + } + + sendMoneySum=totalRecMoney; + + emisSettleBill.setSendPieceSum(sendPieceSum); + emisSettleBill.setPieceNumber(pieceNumber); + emisSettleBill.setFeeWeight(feeWeight); + emisSettleBill.setRecMoney(totalRecMoney); + emisSettleBill.setRecMoney(sendMoneySum); + + // 账单总金额 return emisSettleBillMapper.insertEmisSettleBill(emisSettleBill); } diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml index 3d8c3e133..362e6ebed 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml @@ -316,6 +316,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from emis_settle_sub_bill a where a.del_flag='0' and a.bill_code = #{billCode} and a.parent_bill_no='0' limit 1 + + + insert into emis_settle_sub_bill @@ -421,6 +428,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + + update emis_settle_sub_bill + + settle_bill_no = #{settleBillNo} + update_by = #{updateBy}, + update_time = #{updateTime}, + update_site = #{updateSite}, + + where id = #{id} + +