From f2f6880d673c9c05a28173798b1ed1f87c74331f Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 29 May 2024 04:14:31 +0800 Subject: [PATCH] md --- .../erp/emis/domain/EmisQuotePrice.java | 17 ++- .../domain/enumtype/EmisBizErrorType.java | 5 +- .../emis/domain/enumtype/PaymentStatus.java | 23 ++++ .../erp/emis/mapper/EmisQuotePriceMapper.java | 10 ++ .../erp/emis/service/EmisBaseService.java | 79 ++++++++++--- .../emis/service/IEmisQuotePriceService.java | 5 +- .../EmisElectronicPagApplyServiceImpl.java | 6 +- .../impl/EmisQuotePriceServiceImpl.java | 31 ++++- .../service/impl/EmisWaybillServiceImpl.java | 7 +- .../resources/mapper/EmisQuotePriceMapper.xml | 110 ++++++++++++------ 10 files changed, 222 insertions(+), 71 deletions(-) create mode 100644 emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/PaymentStatus.java diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisQuotePrice.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisQuotePrice.java index 5484a430d..833747c93 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisQuotePrice.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisQuotePrice.java @@ -38,22 +38,24 @@ public class EmisQuotePrice extends BaseEntity /* 序号 */ private Long quoteId; - /* 报价名称 */ - private String quoteName; /* 报价编码 */ private String quoteCode; + /* 报价名称 */ + private String quoteName; + /* 报价类型 1-干线费 2-特殊费 3-大客户运输费 4-大客户特殊费 */ + private String quoteType; + /* 大客户编号 */ + private String customerCode; + /* 客户月结编号 */ + private String custNo; /* 使用站点代码 */ private String useSiteCode; - /* 使用站点名称 */ - private String useSite; /* 所属线路代码 */ private String transLineCode; - /* 费用类型 运输费 */ private String feeType; /* 产品类型代码 */ private String prodCode; - /* 录入收费项 */ private String recPayType; /* 计费类型 1-重量计费 2-体积计费 */ @@ -111,6 +113,9 @@ public class EmisQuotePrice extends BaseEntity /* 产品类型名称 */ private String prodName; + /* 大客户编号 */ + private String customerName; + private List exprList; } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java index 3d5667762..b292a66b0 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/EmisBizErrorType.java @@ -10,8 +10,9 @@ public enum EmisBizErrorType { CALC_WEIGHT_ERROR("E003", "重量计算错误"), CALC_QUOTE_ERROR("E004", "报价未配置"), - BILL_LOCK("E901", "已锁账,不允许修改"), - NOT_EXISTS("E902","运单不存在"), + BILL_LOCK("E901", "已锁账"), + NOT_EXISTS("E902","不存在"), + EXISTS("E903","已存在"), PARSE_ADDRESS_ERROR("E980","地址解析错误"), diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/PaymentStatus.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/PaymentStatus.java new file mode 100644 index 000000000..f9e817636 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/PaymentStatus.java @@ -0,0 +1,23 @@ +package com.xdadan.erp.emis.domain.enumtype; + +/** + * 付款状态 + */ +public enum PaymentStatus { + + INIT("0","未付款"), + PAID("1","已付款"), + PAID_SOME("2","部分付款"), + REFUSE("3","拒付"), + FREE("4","免单"), + OTHER("9","其他"); + + + public String statusCode; + public String statusName; + + PaymentStatus(String statusCode, String statusName) { + this.statusCode = statusCode; + this.statusName = statusName; + } +} diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisQuotePriceMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisQuotePriceMapper.java index 6478177ee..62e5c0b7f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisQuotePriceMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisQuotePriceMapper.java @@ -67,4 +67,14 @@ public interface EmisQuotePriceMapper extends BaseMapper * @return 结果 */ public int deleteEmisQuotePriceByQuoteIds(Long[] quoteIds); + + + /** + * 检查是否重复 + * + * @param emisQuotePrice + * @return 数量 + */ + public List checkUnique(EmisQuotePrice emisQuotePrice); + } 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 aca499c44..ccce3b9ce 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 @@ -20,6 +20,7 @@ package com.xdadan.erp.emis.service; import com.xdadan.erp.common.utils.SecurityUtils; import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; + import com.xdadan.erp.emis.domain.enumtype.PaymentStatus; import com.xdadan.erp.emis.domain.enumtype.ScanType; import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.domain.vo.WaybillOrder; @@ -832,7 +833,16 @@ public class EmisBaseService { * @param billType * @return */ - public List getValidQuotePriceList(String lineCode,String prodCode,String sendSiteCode,String destSiteCode,String billType) { + public List getValidQuotePriceList( + String lineCode, + String prodCode, + String sendSiteCode, + String destSiteCode, + String billType, + String customerCode, + String custNo + + ) { EmisQuotePrice queryEmisQuotePrice = new EmisQuotePrice(); queryEmisQuotePrice.setTransLineCode(lineCode); queryEmisQuotePrice.setProdCode(prodCode); @@ -844,29 +854,72 @@ public class EmisBaseService { queryEmisQuotePrice.setSendAreaSiteCode(sendSiteCode); queryEmisQuotePrice.setDispAreaSiteCode(destSiteCode); + // 客户 + queryEmisQuotePrice.setCustomerCode(customerCode); + queryEmisQuotePrice.setCustNo(custNo); + + Map existsMap = new HashMap(); + // 客户优先级最高 + List listQuoteVip = emisQuotePriceMapper.selectEmisQuotePriceList(queryEmisQuotePrice); + for (EmisQuotePrice item:listQuoteVip) { + existsMap.put(item.getFeeType(),"1"); + } + // 取通用数据排重 List listQuote = emisQuotePriceMapper.selectEmisQuotePriceList(queryEmisQuotePrice); + for (EmisQuotePrice item:listQuote) { + if(existsMap.containsKey(item.getFeeType())){ + continue; + } + } return listQuote; } + /** - * 超时锁账时间 - * @param data + * 判断是否锁账 + * @param emisWaybill * @return */ - public static boolean isOutTime(Date data) { - //24小时 - long house=60*60*24; - //系统当前时间, - long currentTime = System.currentTimeMillis()/1000; - //业务时间 - long endTime=data.getTime()/1000; - if((endTime + house) < currentTime ){ + public boolean isWaybillLock(EmisWaybill emisWaybill) { + // 判断运单状态,如果已锁账,则不允许修改 + // 下单超过 24小时 + // (1)当天开单的,次日9点前允许修改面单; + //(2)当天开单次日上午9点后未锁帐,总部/财务中心修改; + //(3)若运单已签收、已确认账单、已收款、已锁帐,登记申请审批后进行修改; + + if("1".equals(emisWaybill.getBlBill()) + || ScanType.SIGNED.opCode.equals(emisWaybill.getWaybillStatus()) + || PaymentStatus.PAID.statusCode.equals(emisWaybill.getPaymentStatus()) + || PaymentStatus.PAID_SOME.statusCode.equals(emisWaybill.getPaymentStatus()) + ){ return true; - }else{ - return false; } + + // 判断系统是否已锁账 + + + // 创建时间<服务器0点 次日9点锁账 + Date createTime = emisWaybill.getCreateTime(); + + Date now = new Date(); + + Calendar calendar = Calendar.getInstance(); + int todayHour = calendar.get(Calendar.HOUR_OF_DAY); + + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MILLISECOND, 0); + + long todayZero = calendar.getTimeInMillis(); + + if(createTime.getTime()9 ){ + return true; + } + + return false; } /** diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisQuotePriceService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisQuotePriceService.java index c010b33c7..ae23f0216 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisQuotePriceService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisQuotePriceService.java @@ -12,6 +12,7 @@ package com.xdadan.erp.emis.service; import java.util.List; import com.xdadan.erp.emis.domain.EmisQuotePrice; import com.xdadan.erp.emis.domain.EmisWaybillFeeitem; +import com.xdadan.erp.emis.domain.exception.EmisBizError; /** * @ClassName EmisQuotePriceService @@ -44,7 +45,7 @@ public interface IEmisQuotePriceService * @param emisQuotePrice 费用报价 * @return 结果 */ - public int insertEmisQuotePrice(EmisQuotePrice emisQuotePrice); + public int insertEmisQuotePrice(EmisQuotePrice emisQuotePrice) throws EmisBizError; /** * 修改费用报价 @@ -52,7 +53,7 @@ public interface IEmisQuotePriceService * @param emisQuotePrice 费用报价 * @return 结果 */ - public int updateEmisQuotePrice(EmisQuotePrice emisQuotePrice); + public int updateEmisQuotePrice(EmisQuotePrice emisQuotePrice) throws EmisBizError; /** * 批量删除费用报价 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisElectronicPagApplyServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisElectronicPagApplyServiceImpl.java index 52fc3d8af..dfc91703f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisElectronicPagApplyServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisElectronicPagApplyServiceImpl.java @@ -70,7 +70,11 @@ public class EmisElectronicPagApplyServiceImpl extends EmisBaseService implement emisElectronicPagApply.setApplySiteCode(getCurrentUser().getOwnerSiteCode()); emisElectronicPagApply.setApplyManCode(getCurrentUser().getEmpCode()); emisElectronicPagApply.preInsert(); - return emisElectronicPagApplyMapper.insertEmisElectronicPagApply(emisElectronicPagApply); + int ret=emisElectronicPagApplyMapper.insertEmisElectronicPagApply(emisElectronicPagApply); + + // 自动发放 + + return 1; } /** diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisQuotePriceServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisQuotePriceServiceImpl.java index 854ce095f..2818f6631 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisQuotePriceServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisQuotePriceServiceImpl.java @@ -14,6 +14,8 @@ import java.util.List; import cn.hutool.core.collection.CollectionUtil; import com.xdadan.erp.emis.domain.EmisQuoteExpression; +import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; +import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.mapper.EmisQuoteExpressionMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -71,8 +73,19 @@ public class EmisQuotePriceServiceImpl implements IEmisQuotePriceService */ @Override @Transactional - public int insertEmisQuotePrice(EmisQuotePrice emisQuotePrice) - { + public int insertEmisQuotePrice(EmisQuotePrice emisQuotePrice) throws EmisBizError { + + // 检查是否重复 + List listOld=emisQuotePriceMapper.checkUnique(emisQuotePrice); + + if(!CollectionUtil.isEmpty(listOld)){ + String estNameStr=""; + for (EmisQuotePrice item:listOld) { + estNameStr=estNameStr+item.getQuoteName()+","; + } + throw new EmisBizError(EmisBizErrorType.EXISTS,"报价重复["+estNameStr+"]"); + } + // 插入主表 emisQuotePriceMapper.insertEmisQuotePrice(emisQuotePrice); @@ -98,8 +111,18 @@ public class EmisQuotePriceServiceImpl implements IEmisQuotePriceService */ @Override @Transactional - public int updateEmisQuotePrice(EmisQuotePrice emisQuotePrice) - { + public int updateEmisQuotePrice(EmisQuotePrice emisQuotePrice) throws EmisBizError { + // 检查是否重复 + List listOld=emisQuotePriceMapper.checkUnique(emisQuotePrice); + + if(!CollectionUtil.isEmpty(listOld)){ + String estNameStr=""; + for (EmisQuotePrice item:listOld) { + estNameStr=estNameStr+item.getQuoteName()+","; + } + throw new EmisBizError(EmisBizErrorType.EXISTS,"报价重复["+estNameStr+"]"); + } + // 更新主表 int ret=emisQuotePriceMapper.updateEmisQuotePrice(emisQuotePrice); return ret; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index ead26adfb..a36166b58 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -269,12 +269,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // return LocalTime.now().isAfter(localTime); if(emisWaybillOld!=null ) { - if ( - "1".equals(emisWaybillOld.getBlBill()) - || ScanType.SIGNED.opCode.equals(emisWaybillOld.getWaybillStatus()) - || isOutTime(emisWaybillOld.getCreateTime()) - - ) { + if (isWaybillLock(emisWaybillOld)) { throw new EmisBizError(EmisBizErrorType.BILL_LOCK, "已锁账,不允许修改"); } } diff --git a/emis-biz/src/main/resources/mapper/EmisQuotePriceMapper.xml b/emis-biz/src/main/resources/mapper/EmisQuotePriceMapper.xml index 8b8303ac1..474db2315 100644 --- a/emis-biz/src/main/resources/mapper/EmisQuotePriceMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisQuotePriceMapper.xml @@ -6,10 +6,12 @@ - + + + + - @@ -19,7 +21,16 @@ - + + + + + + + + + + @@ -37,23 +48,10 @@ - - - - - - - - - - - - - - + @@ -77,12 +75,6 @@ - - - select quote_id, quote_name, quote_code, use_site_code, use_site, trans_line_code, trans_line, fee_type, prod_code, prod_name, rec_pay_type, bill_type, other_type1, other_type2, carry_type, status, disp_area_id, disp_area_name, disp_area_site, disp_area_site_code, disp_area_site_id, send_area_id, send_area_name, send_area_site, send_area_site_code, send_area_site_id, carries_number, discards_number, least_price, price_type, start_date, end_date, priority_level, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_quote_price - - - @@ -95,12 +87,20 @@ select a.site_name from emis_site a where a.site_code = #{code} limit 1 + + + + select quote_id, quote_code, quote_name, quote_type, customer_code, cust_no, use_site_code, trans_line_code, fee_type, prod_code, rec_pay_type, bill_type, other_type1, other_type2, carry_type, status, disp_area_id, disp_area_name, disp_area_site, disp_area_site_code, disp_area_site_id, send_area_id, send_area_name, send_area_site, send_area_site_code, send_area_site_id, carries_number, discards_number, least_price, price_type, start_date, end_date, priority_level, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_quote_price + + + + + + insert into emis_quote_price - quote_name, + quote_id, quote_code, + quote_name, + quote_type, + customer_code, + cust_no, use_site_code, - use_site, trans_line_code, - trans_line, fee_type, prod_code, - prod_name, rec_pay_type, bill_type, other_type1, @@ -248,15 +283,16 @@ update_site, - #{quoteName}, + #{quoteId}, #{quoteCode}, + #{quoteName}, + #{quoteType}, + #{customerCode}, + #{custNo}, #{useSiteCode}, - #{useSite}, #{transLineCode}, - #{transLine}, #{feeType}, #{prodCode}, - #{prodName}, #{recPayType}, #{billType}, #{otherType1}, @@ -295,15 +331,15 @@ update emis_quote_price - quote_name = #{quoteName}, quote_code = #{quoteCode}, + quote_name = #{quoteName}, + quote_type = #{quoteType}, + customer_code = #{customerCode}, + cust_no = #{custNo}, use_site_code = #{useSiteCode}, - use_site = #{useSite}, trans_line_code = #{transLineCode}, - trans_line = #{transLine}, fee_type = #{feeType}, prod_code = #{prodCode}, - prod_name = #{prodName}, rec_pay_type = #{recPayType}, bill_type = #{billType}, other_type1 = #{otherType1},