md
This commit is contained in:
parent
b6bd3298a8
commit
ad832199fe
@ -14,11 +14,13 @@ package com.xdadan.erp.web.emis;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.xdadan.erp.emis.domain.EmisSettleSubBill;
|
||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||
import com.xdadan.erp.emis.domain.vo.scan.ScanResult;
|
||||
import com.xdadan.erp.emis.service.EmisBaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
@ -141,6 +143,49 @@ public class EmisSettleBillController extends BaseController
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运单总账单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisSettleBill:edit')")
|
||||
@Log(title = "增加运单到账单", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/addSubBillToSettleBill")
|
||||
public AjaxResult addSubBillToSettleBill(@RequestBody EmisSettleBill emisSettleBill)
|
||||
{
|
||||
try {
|
||||
return toAjax(emisSettleBillService.addSubBillToSettleBill(emisSettleBill));
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
// 返回子定义异常
|
||||
if(ex instanceof EmisBizError){
|
||||
return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode());
|
||||
}
|
||||
return AjaxResult.error("系统异常,联系客服");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增运单总账单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisSettleBill:edit')")
|
||||
@Log(title = "从总账单移除", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/removeSubBillFromSettleBill")
|
||||
public AjaxResult removeSubBillFromSettleBill(@RequestBody EmisSettleBill emisSettleBill)
|
||||
{
|
||||
try {
|
||||
return toAjax(emisSettleBillService.removeSubBillFromSettleBill(emisSettleBill));
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
// 返回子定义异常
|
||||
if(ex instanceof EmisBizError){
|
||||
return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode());
|
||||
}
|
||||
return AjaxResult.error("系统异常,联系客服");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改结算总账单
|
||||
*/
|
||||
|
||||
@ -47,6 +47,9 @@ public interface EmisSettleSubBillMapper extends BaseMapper<EmisSettleSubBill>
|
||||
*/
|
||||
public List<EmisSettleSubBill> selectEmisSettleSubBillList(EmisSettleSubBill emisSettleSubBill);
|
||||
|
||||
|
||||
public List<EmisSettleSubBill> selectSubBillListBySettleBillNo(String settleBillNo);
|
||||
|
||||
/**
|
||||
* 统计数据
|
||||
* @param emisSettleSubBill
|
||||
@ -90,7 +93,13 @@ public interface EmisSettleSubBillMapper extends BaseMapper<EmisSettleSubBill>
|
||||
|
||||
|
||||
// 更新主账单号
|
||||
public int updateMainSettleBillNo(EmisSettleSubBill emisSettleSubBill);
|
||||
public int addToSettleBill(EmisSettleSubBill emisSettleSubBill);
|
||||
|
||||
|
||||
// 移除子账单
|
||||
public int removeFromMainSettleBill(EmisSettleSubBill emisSettleSubBill);
|
||||
|
||||
|
||||
public int batchUpdateMainSettleBillNo(@Param("param") EmisSettleSubBill emisSettleSubBill,@Param("idsObj") List<EmisSettleSubBill> ids);
|
||||
|
||||
|
||||
|
||||
@ -2554,6 +2554,14 @@ public class EmisBaseService {
|
||||
// 财务确认出账明细锁账
|
||||
return true;
|
||||
}
|
||||
|
||||
// 财务或业务确认不出账不允许修改
|
||||
if("2".equals(emisSettleSubBill.getBlConfirmCenter())
|
||||
|| "2".equals(emisSettleSubBill.getBlConfirmSite())
|
||||
){
|
||||
// 财务确认出账明细锁账
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 系统锁账
|
||||
|
||||
@ -28,6 +28,7 @@ public interface IEmisSettleBillService
|
||||
*/
|
||||
public EmisSettleBill selectEmisSettleBillById(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* 查询结算总账单列表
|
||||
*
|
||||
@ -53,12 +54,20 @@ public interface IEmisSettleBillService
|
||||
*/
|
||||
public int insertEmisSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError;
|
||||
|
||||
/**
|
||||
* 修改结算总账单
|
||||
*
|
||||
* @param emisSettleBill 结算总账单
|
||||
* @return 结果
|
||||
*/
|
||||
|
||||
public int addSubBillToSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError;
|
||||
|
||||
public int removeSubBillFromSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改结算总账单
|
||||
*
|
||||
* @param emisSettleBill 结算总账单
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateEmisSettleBill(EmisSettleBill emisSettleBill);
|
||||
|
||||
/**
|
||||
|
||||
@ -15,11 +15,14 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.xdadan.erp.common.core.domain.AjaxResult;
|
||||
import com.xdadan.erp.common.utils.StringUtils;
|
||||
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 com.xdadan.erp.emis.utils.WaybillHelper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.xdadan.erp.emis.domain.EmisSettleBill;
|
||||
@ -55,6 +58,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询结算总账单列表
|
||||
*
|
||||
@ -113,12 +117,20 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
|
||||
}
|
||||
|
||||
if(!"1".equals(subBllOld.getBlConfirmCenter()) ){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,子单号["+subBllOld.getBillCode()+"]未确认");
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,子单号["+subBllOld.getBillCode()+"]财务未确认");
|
||||
}
|
||||
|
||||
if(!"1".equals(subBllOld.getBlConfirmSite()) ){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,子单号["+subBllOld.getBillCode()+"]业务未确认");
|
||||
}
|
||||
|
||||
if(!StringUtils.isEmpty(subBllOld.getSettleBillNo())){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"合账失败,子单号["+subBllOld.getBillCode()+"]已被合账,不允许再合并");
|
||||
}
|
||||
|
||||
// 更新主账单编号
|
||||
subBllOld.setSettleBillNo(emisSettleBill.getSettleBillNo());
|
||||
emisSettleSubBillMapper.updateMainSettleBillNo(subBllOld);
|
||||
emisSettleSubBillMapper.addToSettleBill(subBllOld);
|
||||
|
||||
// 累加应收
|
||||
totalRecMoney=totalRecMoney.add(subBllOld.getBillFee());
|
||||
@ -146,6 +158,161 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
|
||||
return emisSettleBillMapper.insertEmisSettleBill(emisSettleBill);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改账单加入运单号
|
||||
*
|
||||
* @param emisSettleBill 结算总账单
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int addSubBillToSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError {
|
||||
|
||||
// 判断账单是否存在
|
||||
EmisSettleBill old= getSettleBillBySettleBillNo(emisSettleBill.getSettleBillNo());
|
||||
if(old==null){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"总账单不存在");
|
||||
}
|
||||
|
||||
// 已核销,不允许操作
|
||||
if("1".equals(old.getChargeStatus())){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"已核销,不允许操作");
|
||||
}
|
||||
|
||||
// 检查子账单是否可加入
|
||||
String billCodeStr=WaybillHelper.formatQueryValue((String) emisSettleBill.getParams().get("billCodeStr"));
|
||||
if(StringUtils.isEmpty(billCodeStr)){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"加入失败,子账单列表为空");
|
||||
}
|
||||
|
||||
String[] subBillNoArr = billCodeStr.split(",");
|
||||
|
||||
for (String billNo: subBillNoArr) {
|
||||
EmisSettleSubBill subBllOld = getSettleSubBillBySubBillNo(billNo);
|
||||
if(subBllOld==null){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"加入失败,子账单["+billNo+"]不存在");
|
||||
}
|
||||
|
||||
if(!"1".equals(subBllOld.getBlConfirmCenter()) ){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"加入失败,子单号["+billNo+"]未确认");
|
||||
}
|
||||
|
||||
if(!"1".equals(subBllOld.getBlConfirmSite()) ){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"加入失败,子单号["+billNo+"]业务未确认");
|
||||
}
|
||||
|
||||
if(!StringUtils.isEmpty(subBllOld.getSettleBillNo())){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"加入失败,子单号["+billNo+"]已被合账,请先移除");
|
||||
}
|
||||
|
||||
// 更新子账单归属主账单编号,并且标记为已合并
|
||||
subBllOld.setSettleBillNo(emisSettleBill.getSettleBillNo());
|
||||
emisSettleSubBillMapper.addToSettleBill(subBllOld);
|
||||
|
||||
}
|
||||
|
||||
// 总账单重算
|
||||
return reCalcSettleBillFee(emisSettleBill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int removeSubBillFromSettleBill(EmisSettleBill emisSettleBill) throws EmisBizError {
|
||||
|
||||
// 判断账单是否存在
|
||||
EmisSettleBill old= getSettleBillBySettleBillNo(emisSettleBill.getSettleBillNo());
|
||||
if(old==null){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"总账单不存在");
|
||||
}
|
||||
|
||||
// 已核销,不允许操作
|
||||
if("1".equals(old.getChargeStatus())){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"已核销,不允许操作");
|
||||
}
|
||||
|
||||
// 检查子账单是否可移除
|
||||
String billCodeStr=WaybillHelper.formatQueryValue((String) emisSettleBill.getParams().get("billCodeStr"));
|
||||
if(StringUtils.isEmpty(billCodeStr)){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"子账单列表为空");
|
||||
}
|
||||
|
||||
String[] subBillNoArr = billCodeStr.split(",");
|
||||
|
||||
for (String billNo: subBillNoArr) {
|
||||
EmisSettleSubBill subBllOld = getSettleSubBillBySubBillNo(billNo);
|
||||
if(subBllOld==null){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"移除失败,子账单["+billNo+"]不存在");
|
||||
}
|
||||
|
||||
if(!old.getSettleBillNo().equals(subBllOld.getSettleBillNo())){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"移除失败,子单号["+subBllOld.getBillCode()+"]不属于该账单");
|
||||
}
|
||||
|
||||
// 子账单移除
|
||||
subBllOld.setSettleBillNo(emisSettleBill.getSettleBillNo());
|
||||
emisSettleSubBillMapper.removeFromMainSettleBill(subBllOld);
|
||||
}
|
||||
|
||||
// 总账单重算
|
||||
return reCalcSettleBillFee(emisSettleBill);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 总账单重算
|
||||
* @param emisSettleBill
|
||||
* @return
|
||||
* @throws EmisBizError
|
||||
*/
|
||||
private int reCalcSettleBillFee(EmisSettleBill emisSettleBill) throws EmisBizError {
|
||||
|
||||
// 计算应收总账单金额
|
||||
// 检查子账单是否可加入
|
||||
BigDecimal totalRecMoney = BigDecimal.ZERO;
|
||||
/* 总票数 */
|
||||
|
||||
// /* 总件数 */
|
||||
Integer pieceNumber=0;
|
||||
// /* 总重量 */
|
||||
BigDecimal feeWeight = BigDecimal.ZERO;
|
||||
// /* 合计金额 */
|
||||
BigDecimal sendMoneySum= BigDecimal.ZERO;
|
||||
|
||||
sendMoneySum=totalRecMoney;
|
||||
|
||||
List<EmisSettleSubBill> listSubBill=emisSettleSubBillMapper.selectSubBillListBySettleBillNo(emisSettleBill.getSettleBillNo());
|
||||
if(CollectionUtil.isEmpty(listSubBill)){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"子账单数量为空,请检查");
|
||||
}
|
||||
|
||||
Integer sendPieceSum = listSubBill.size();
|
||||
|
||||
for (EmisSettleSubBill subBill: listSubBill) {
|
||||
// 累加应收
|
||||
totalRecMoney=totalRecMoney.add(subBill.getBillFee());
|
||||
pieceNumber=pieceNumber+subBill.getWaybillDetail().getParcelQty();
|
||||
feeWeight=feeWeight.add(subBill.getWaybillDetail().getSettlementWeight());
|
||||
}
|
||||
|
||||
// 总票数
|
||||
emisSettleBill.setSendPieceSum(sendPieceSum);
|
||||
// 总件数
|
||||
emisSettleBill.setPieceNumber(pieceNumber);
|
||||
|
||||
// 总重量
|
||||
emisSettleBill.setFeeWeight(feeWeight);
|
||||
|
||||
// 总营收应该
|
||||
emisSettleBill.setRecMoney(totalRecMoney);
|
||||
|
||||
// 更新账单为未核销状态
|
||||
emisSettleBill.setChargeStatus("0");
|
||||
|
||||
// emisSettleBill.setRecMoney(sendMoneySum);
|
||||
|
||||
// 账单总金额
|
||||
return emisSettleBillMapper.updateEmisSettleBill(emisSettleBill);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改结算总账单
|
||||
*
|
||||
|
||||
@ -508,6 +508,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectSubBillListBySettleBillNo" 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, bl_merge, bill_month, cust_no, cust_name, customer_code, customer_name, payee, salesmen, bl_special_quote, bl_sensitive, bl_confirm_center, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||
from emis_settle_sub_bill a
|
||||
where a.settle_bill_no = #{settleBillNo}
|
||||
</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, bl_merge, bill_month, cust_no, cust_name, customer_code, customer_name, payee, salesmen, bl_special_quote, bl_sensitive, bl_confirm_center, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||
from emis_settle_sub_bill a
|
||||
@ -641,7 +648,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</update>
|
||||
|
||||
<!-- 更新合账单 -->
|
||||
<update id="updateMainSettleBillNo" parameterType="EmisSettleSubBill">
|
||||
<update id="addToSettleBill" parameterType="EmisSettleSubBill">
|
||||
update emis_settle_sub_bill
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
settle_bill_no = #{settleBillNo},
|
||||
@ -653,6 +660,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<!-- 更新合账单 -->
|
||||
<update id="removeFromMainSettleBill" parameterType="EmisSettleSubBill">
|
||||
update emis_settle_sub_bill
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
settle_bill_no = null,
|
||||
bl_merge = '0',
|
||||
<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="batchUpdateMainSettleBillNo" parameterType="String">
|
||||
update emis_settle_sub_bill
|
||||
|
||||
Loading…
Reference in New Issue
Block a user