diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java index 10ffacc4e..47be17417 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java @@ -537,6 +537,14 @@ public class EmisWaybillController extends EmisBaseController list = emisWaybillService.selectEmisWaybillList(emisWaybill); } + if("1".equals(emisWaybill.getQueryQuotaType())){ + // 查询超期的运单列表 + list = emisBaseService.filterOverTermEmisWaybillList(list); + } + if("2".equals(emisWaybill.getQueryQuotaType())){ + // 查询未超期的账单列表 + list = emisBaseService.filterInTermEmisWaybillList(list); + } return getDataTable(list); } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java index 43eac088a..237f5ede2 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java @@ -43,6 +43,10 @@ public class EmisCreditSalesmen extends BaseEntity private BigDecimal creditMoney; /* 使用额度 */ private BigDecimal useMoney; + /* 超期额度 */ + private BigDecimal overTermMoney; + /* 账期内额度 */ + private BigDecimal inTermMoney; /* 币种 */ private String currency; /* 运输方式 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java index 9197fad63..1f26d2625 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java @@ -675,6 +675,9 @@ public class EmisWaybill extends BaseEntity private String customerNickName; @TableField(exist = false) private String customerAvatar; + // 查询现金客户额度属性; 1:查询超期额度,2:查询账期内额度 + @TableField(exist = false) + private String queryQuotaType; // transType - 运输类型 @TableField(exist = false) 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 ddf15d742..1a8a41202 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 @@ -156,4 +156,5 @@ public interface EmisSettleSubBillMapper extends BaseMapper public int deleteEmisSettleSubBillByBillCode(String billCode); + List querysSettleSubBillByBillCodeList(@Param("billCodeList") List billCodeList); } 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 b3674d5bf..909da88f6 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 @@ -44,6 +44,7 @@ package com.xdadan.erp.emis.service; import java.math.BigDecimal; import java.util.*; + import java.util.stream.Collectors; /** * 运单列表Service业务层处理 @@ -1503,7 +1504,18 @@ public class EmisBaseService { try { Map useMoneyMap=emisCreditSalesmenMapper.getUseMoneyMap(item); BigDecimal useMoney = (BigDecimal)useMoneyMap.get("useMoney"); - emisCreditSalesmenMapper.updateUseMoney(item.getId(),useMoney); + List emisWaybillList = getEmisWaybills(item); + // 账期内金额 + BigDecimal inTermMoney = getInTermMoney(emisWaybillList); + // 超期金额 + BigDecimal overTermMoney = BigDecimal.valueOf(useMoney.subtract(inTermMoney).stripTrailingZeros().longValue()); + EmisCreditSalesmen emisCreditSalesmen = new EmisCreditSalesmen(); + emisCreditSalesmen.setId(item.getId()); + emisCreditSalesmen.setUseMoney(useMoney); + emisCreditSalesmen.setOverTermMoney(overTermMoney); + emisCreditSalesmen.setInTermMoney(inTermMoney); + emisCreditSalesmenMapper.updateEmisCreditSalesmen(emisCreditSalesmen); + log.info("success.autoDoCredit , emisCreditSalesmen,{}", JSON.toJSONString(emisCreditSalesmen)); }catch (Exception ex){ ex.printStackTrace(); } @@ -1526,6 +1538,74 @@ public class EmisBaseService { } } + private BigDecimal getInTermMoney(List emisWaybillList) { + List inTermList = filterInTermEmisWaybillList(emisWaybillList); + List billCodeList = inTermList.stream().map(EmisWaybill::getBillCode).collect(Collectors.toList()); + log.info("cd getInTermMoney , billCodeList,{}", billCodeList); + if (CollectionUtil.isEmpty(billCodeList)) { + return BigDecimal.ZERO; + } + List emisSettleSubBillList = emisSettleSubBillMapper.querysSettleSubBillByBillCodeList(billCodeList); + if (CollectionUtil.isEmpty(emisSettleSubBillList)) { + return BigDecimal.ZERO; + } + log.info("query emisSettleSubBillList , emisSettleSubBillList,{}", emisSettleSubBillList); + BigDecimal inTermMoney = BigDecimal.valueOf(emisSettleSubBillList.stream() + .map(EmisSettleSubBill::getBillFee) + .filter(i -> i != null) + .reduce(BigDecimal.ZERO, BigDecimal::add) + .stripTrailingZeros().longValue()); + log.info("success.getInTermMoney , inTermMoney,{}", inTermMoney); + return inTermMoney; + } + + public List filterOverTermEmisWaybillList(List list) { + log.info("cd filterOverTermEmisWaybillList , emisWaybillList,{}", list); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + List overTermList = list.stream() + .filter(item -> item.getOrderDate() != null) + .filter(item -> (System.currentTimeMillis() - item.getOrderDate().getTime()) > (10 * 1000 * 60 * 60 * 24)) + .collect(Collectors.toList()); + log.info("success.filterOverTermEmisWaybillList , overTermList,{}", overTermList); + return overTermList; + } + + public List filterInTermEmisWaybillList(List list) { + log.info("cd filterInTermEmisWaybillList , emisWaybillList,{}", list); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + List overTermList = filterOverTermEmisWaybillList(list); + if (CollectionUtil.isEmpty(overTermList)) { + return list; + } + List inTermList = list.stream() + .filter(item -> !overTermList.contains(item)) + .collect(Collectors.toList()); + log.info("success.filterInTermEmisWaybillList , inTermList,{}", inTermList); + return inTermList; + } + + private List getEmisWaybills(EmisCreditSalesmen item) { + EmisWaybill emisWaybill = new EmisWaybill(); + emisWaybill.setPaymentType("1,3"); + emisWaybill.setPayee(item.getSalesmen()); + emisWaybill.setPaymentStatus("0,2"); + emisWaybill.getParams().put("problemQueryType", "2"); + emisWaybill.getParams().put("problemQueryIds", "173,170,151"); + emisWaybill.getParams().put("queryTabType", "1"); + emisWaybill.getParams().put("querySendType", "1"); + emisWaybill.getParams().put("beginSendDate", + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", item.getStartDate())); + emisWaybill.getParams().put("endSendDate", + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", item.getEndDate())); + emisWaybill.setCarryType(item.getTransType()); + List emisWaybillList = emisWaybillMapper.selectEmisWaybillList(emisWaybill); + return emisWaybillList; + } + @Transactional public void redoGenerateBill(String billCode) throws EmisBizError{ diff --git a/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml b/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml index b8a542438..6dfa6dd9e 100644 --- a/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml @@ -10,6 +10,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -22,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -120,6 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" salesmen, credit_money, use_money, + over_term_money, + in_term_Money, currency, trans_type, start_date, @@ -140,6 +144,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{salesmen}, #{creditMoney}, #{useMoney}, + #{overTermMoney}, + #{inTermMoney}, #{currency}, #{transType}, #{startDate}, @@ -162,6 +168,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" credit_money = #{creditMoney}, use_money = #{useMoney}, + over_term_money = #{overTermMoney}, + in_term_Money = #{inTermMoney}, currency = #{currency}, trans_type = #{transType}, start_date = #{startDate}, diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml index 0d6260a94..0b2358c6c 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml @@ -627,8 +627,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where a.del_flag='0' and a.bill_code = #{billCode} - - +