This commit is contained in:
linfso 2024-07-09 15:48:21 +08:00
parent 910202b024
commit 66e308d7af
7 changed files with 133 additions and 7 deletions

View File

@ -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("系统异常,联系客服");
}
}
/**

View File

@ -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<EmisSettleSubBill> subBillList;
}

View File

@ -35,6 +35,9 @@ public interface EmisSettleSubBillMapper extends BaseMapper<EmisSettleSubBill>
public EmisSettleSubBill selectSettleSubBillByBillCode(String billCode);
public EmisSettleSubBill selectSettleSubBillBySubBillNo(String subBillNo);
/**
* 查询列表
*
@ -76,6 +79,11 @@ public interface EmisSettleSubBillMapper extends BaseMapper<EmisSettleSubBill>
*/
public int updateEmisSettleSubBill(EmisSettleSubBill emisSettleSubBill);
// 更新主账单号
public int updateMainSettleBillNo(EmisSettleSubBill emisSettleSubBill);
// 财务中心取消和确认,确认不出账,设置异常
public int confirmBillByCenter(EmisSettleSubBill emisSettleSubBill);
public int cancelConfirmBillByCenter(EmisSettleSubBill emisSettleSubBill);

View File

@ -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

View File

@ -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;
/**
* 修改结算总账单

View File

@ -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);
}

View File

@ -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
</select>
<select id="selectSettleSubBillBySubBillNo" parameterType="String" resultMap="EmisSettleSubBillResult">
select id, bill_no, parent_bill_no, settle_bill_no, bill_code, bill_date, bill_fee, currency, settle_type, bl_split, bill_month, cust_no, customer_code, customer_name, bl_confirm, confirm_date, confirm_site, confirm_man_code, bl_site_confirm, confirm_note, site_confirm_date, site_confirm_man_code, site_confirm_note, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
from emis_settle_sub_bill a
where a.del_flag='0' and a.bill_no = #{subBillNo} limit 1
</select>
<insert id="insertEmisSettleSubBill" parameterType="EmisSettleSubBill" useGeneratedKeys="true" keyProperty="id">
insert into emis_settle_sub_bill
@ -421,6 +428,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</update>
<!-- 更新合账单 -->
<update id="updateMainSettleBillNo" parameterType="EmisSettleSubBill">
update emis_settle_sub_bill
<trim prefix="SET" suffixOverrides=",">
settle_bill_no = #{settleBillNo}
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateSite != null and updateSite != ''">update_site = #{updateSite},</if>
</trim>
where id = #{id}
</update>
<!-- 中心确认 -->
<update id="confirmBillByCenter" parameterType="EmisSettleSubBill">