diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 2ca9e292d..141ba3175 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -4,7 +4,6 @@ - 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 e6819716c..3b339c526 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 @@ -343,7 +343,7 @@ public class EmisWaybill extends BaseEntity /* 签收站点代码 */ private String signSiteCode; /* 签收时间 */ - private String signDate; + private Date signDate; /* 揽收图片备注 */ private String billPicSendRmk; /* 签收底单图片 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/WaybillStatus.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/WaybillStatus.java new file mode 100644 index 000000000..f1f7dfa07 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/enumtype/WaybillStatus.java @@ -0,0 +1,134 @@ +package com.xdadan.erp.emis.domain.enumtype; + +/** + * waybill status + */ +public enum WaybillStatus { + + +// 1 收件 +// 2 发件 +// 3 到件 +// 4 派件 +// 5 客户签收 +// 10 订单创建成功 +// 100 等待派送 +// 150 仓库入库 +// 180 干线集包 +// 190 仓库出口 +// 200 干线揽收成功 +// 220 干线航班起飞 +// 221 干线海运出港 +// 222 干线车辆出发 +// 230 干线航班落地 +// 231 干线船舶到港 +// 232 干线车辆到达 +// 330 清关提货 +// 360 清关中 +// 370 清关放行 +// 415 运输中 +// 430 海外签收 +// 730 退货完成 +// -1 问题件 +//------------------------- + /* + 10 揽收扫描 + 20 发件扫描 + 30 到件扫描 + 40 派件扫描 + 50 签收扫描 + 51 签收异常 + 52 拒收 + 60 退回件 + 70 留仓扫描 + 80 转单扫描 + -1 问题件 + 100 入库扫描 + 101 出库扫描 + 200 合包扫描 + 201 拆包扫描 + 301 装车扫描 + 302 卸车扫描 + 700 报关扫描 + 701 报关放行 + 702 清关失败 + 800 清关扫描 + 801 清关放行 + 802 清关失败 + 999 其它 + */ + + INIT("0","创建成功"), + + GOT("10","揽件扫描"), + + DEPARTURE("20","发件扫描"), + + ARRIVAL("30","到件扫描"), + + SENT("40","派送扫描"), + + SIGNED("50","签收扫描"), + SIGNFAIL("51","签收异常"), + REJECTION("52","拒收"), + + RETURN("60","退回件"), + + HOLD("70","留仓"), + + TRANSFER("80","转单"), + + ISSUE("-1","问题件"), + +// ---------------- + INBOUND("100","入库扫描"), + OUTBOUND("101","出库扫描"), + + CO_PACKING("200","合包扫描"), + UN_PACKING("201","拆包扫描"), + + LOADING("301","装车扫描"), + UN_LOADING("302","卸车扫描"), + + DECLEARE("700","报关扫描"), + DECLEARE_SUCCESS("701","报关放行"), + DECLEARE_FAIL("702","报关失败"), + + CLEARANCE("800","清关扫描"), + CLEARANCE_SUCCESS("801","清关放行"), + CLEARANCE_FAIL("802","清关失败"), + + OTHER("999","其他"), + + + +// OVERSEA_IN("海外入库扫描"), +// OVERSEA_OUT("海外出库扫描"), + +// ARRIVAL("入中转"), +// DEPARTURE("出中转"), +// SENT("派件中"), + +// SIGNED("已签收"), +// SIGNFAIL("签收失败"), +// RETURN("退回件"), +// ISSUE("问题件"), +// REJECTION("拒收"), +// OTHER("其他"), +// +// CLEARANCE_START("清关开始"), +// CLEARANCE_FINISH("清关结束"), +// CLEARANCE_FAIL("清关失败"), +// OVERSEA_ARRIVAL("干线到达"), +// OVERSEA_DEPARTURE("干线离开"), +// TRANSFER("转单"), + ; + + public String statusCode; + public String statusName; + + WaybillStatus(String statusCode, String statusName) { + this.statusCode = statusCode; + this.statusName = statusName; + } +} diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java index 15f7d3631..740a92b26 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsPackDtlMapper.java @@ -52,6 +52,10 @@ public interface EmisTmsPackDtlMapper extends BaseMapper */ public int updateEmisTmsPackDtl(EmisTmsPackDtl emisTmsPackDtl); + + + + /** * 删除 * @@ -67,4 +71,11 @@ public interface EmisTmsPackDtlMapper extends BaseMapper * @return 结果 */ public int deleteEmisTmsPackDtlByIds(Long[] ids); + + /** + * 更新子单扫描状态 + * @param emisTmsPackDtl + * @return + */ + public int updateScanStatus(EmisTmsPackDtl emisTmsPackDtl); } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java index 37a2a6fea..d866cda2f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java @@ -97,6 +97,11 @@ public interface EmisWaybillMapper extends BaseMapper public int updatePrintStatus(EmisWaybill emisWaybill); + public int updateSignStatus(EmisWaybill emisWaybill); + + // 更新问题件状态 + public int updateProblemStatus(EmisWaybill emisWaybill); + public int updateEmisWaybillByBillCode(EmisWaybill emisWaybill); 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 68c2cf898..3e08422e7 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 @@ -14,6 +14,7 @@ package com.xdadan.erp.emis.service; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; + import com.fasterxml.jackson.annotation.JsonFormat; import com.xdadan.erp.common.core.domain.entity.SysUser; import com.xdadan.erp.common.utils.DateUtils; import com.xdadan.erp.common.utils.DictUtils; @@ -22,6 +23,7 @@ package com.xdadan.erp.emis.service; 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.enumtype.WaybillStatus; import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.domain.vo.WaybillOrder; import com.xdadan.erp.emis.domain.vo.scan.ScanResultItem; @@ -101,6 +103,9 @@ public class EmisBaseService { @Autowired private EmisDestinationMapper emisDestinationMapper; + @Autowired + private EmisWaybillProblemInfoMapper emisWaybillProblemInfoMapper; + /** * 获取当前登录用户 * @return @@ -320,27 +325,83 @@ public class EmisBaseService { */ public void updatePrintStatus(String billCode) { - boolean isSubBill=false; // 判断是否是子单 - String queryBillCode = ""; - String subBillSuffix = ""; - if(queryBillCode.startsWith("T7080") && queryBillCode.length()>14 ){ - isSubBill = true; - queryBillCode=billCode.substring(0,14); - subBillSuffix=billCode.substring(14); + String mainBillCode = billCode; + if(billCode.startsWith("T7080") && billCode.length()>14 ){ + mainBillCode=billCode.substring(0,14); } - if(!isSubBill) { - EmisWaybill waybill = new EmisWaybill(); - waybill.setBillCode(billCode); - waybill.setPrintManCode(getCurrentUser().getEmpCode()); - emisWaybillMapper.updatePrintStatus(waybill); - } - - // 插入打单记录 + EmisWaybill waybill = new EmisWaybill(); + waybill.setBillCode(mainBillCode); + waybill.setPrintManCode(getCurrentUser().getEmpCode()); + waybill.setPrintSite(getCurrentUser().getOwnerSiteCode()); + emisWaybillMapper.updatePrintStatus(waybill); } + /** + * 更新签收状态 + * @param billCode + */ + public void updateSignStatus(String billCode,String signMan,String signManCode,String signSiteCode,Date signDate,String billPicDispatchRmk) { + String mainBillCode = billCode; + if(billCode.startsWith("T7080") && billCode.length()>14 ){ + mainBillCode=billCode.substring(0,14); + } + + EmisWaybill waybill = new EmisWaybill(); + waybill.setBillCode(mainBillCode); + waybill.setSignMan(signMan); + waybill.setSignManCode(signManCode); + waybill.setSignSiteCode(signSiteCode); + waybill.setSignDate(signDate); + waybill.setWaybillStatus(WaybillStatus.SIGNED.statusCode); + waybill.setBillPicDispatchRmk(billPicDispatchRmk); + waybill.preUpdate(); + emisWaybillMapper.updateSignStatus(waybill); + + } + + + /** + * 更新问题件状态 + * @param billCode + */ + public void updateProblemStatus(String billCode,String problemType,String problemCause) { + String mainBillCode = billCode; + if(billCode.startsWith("T7080") && billCode.length()>14 ){ + mainBillCode=billCode.substring(0,14); + } + + EmisWaybill waybill = new EmisWaybill(); + waybill.setBillCode(mainBillCode); + waybill.setBlIsQuestion("1"); + waybill.setProblemType(problemType); + waybill.setProblemCause(problemCause); + + // 记录延迟天数 + EmisProblemType emisProblemType =getEmisProblemTypebyTypeId(Long.valueOf(problemType)); + waybill.setProblemDelayDays(emisProblemType.getDelayDay()); + + waybill.preUpdate(); + emisWaybillMapper.updateProblemStatus(waybill); + + } + + public EmisProblemType getEmisProblemTypebyTypeId(Long typeId){ + return emisProblemTypeMapper.selectEmisProblemTypeById(typeId); + } + + /** + * 登记问题件 + * @param waybillProblemInfo + */ + public void registerWaybillProblemInfo(EmisWaybillProblemInfo waybillProblemInfo){ + waybillProblemInfo.preInsert(); + emisWaybillProblemInfoMapper.insertEmisWaybillProblemInfo(waybillProblemInfo); + } + + /** * 根据客户编号,获取客户信息 * @param customerCode diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java index 01fcae242..fe1b5b445 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java @@ -15,20 +15,18 @@ import java.util.*; import com.xdadan.erp.common.core.domain.entity.SysUser; import com.xdadan.erp.common.utils.DateUtils; -import com.xdadan.erp.emis.domain.EmisSite; -import com.xdadan.erp.emis.domain.EmisTmsScanPicInfo; -import com.xdadan.erp.emis.domain.EmisWaybill; +import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.ScanType; import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.domain.vo.scan.ScanInfo; import com.xdadan.erp.emis.domain.vo.scan.ScanResult; import com.xdadan.erp.emis.domain.vo.scan.ScanResultItem; +import com.xdadan.erp.emis.mapper.EmisTmsPackDtlMapper; import com.xdadan.erp.emis.mapper.EmisTmsScanPicInfoMapper; import com.xdadan.erp.emis.service.EmisBaseService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.xdadan.erp.emis.domain.EmisTmsScanRecord; import com.xdadan.erp.emis.mapper.EmisTmsScanRecordMapper; import com.xdadan.erp.emis.service.IEmisTmsScanRecordService; @@ -46,6 +44,9 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm @Autowired private EmisTmsScanPicInfoMapper emisTmsScanPicInfoMapper; + + @Autowired + private EmisTmsPackDtlMapper emisTmsPackDtlMapper; /** * 查询TMS扫描记录 * @@ -258,6 +259,16 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm continue; } + // 已签收不允许扫描 + if(ScanType.SIGNED.opCode.equals(emisWaybill.getWaybillStatus())){ + scanResultItem.setResult("fail"); + scanResultItem.setMessage("已签收"); + itemList.add(scanResultItem); + continue; + } + + // 有签收记录不允许再 + // 2.重复扫描 // 同站点,同动作,同一天不允许重复扫描 @@ -394,6 +405,7 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm String remark = (String)scanDataItem.get("remark"); emisTmsScanRecord.setSignMan(signMan); emisTmsScanRecord.setSignDate(emisTmsScanRecord.getScanDate()); + emisTmsScanRecord.setPicUrl(picUrl); // 签收站点 emisTmsScanRecord.setSignSite(getCurrentUser().getOwnerSiteName()); @@ -408,6 +420,15 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm emisTmsScanPicInfo.preInsert(); emisTmsScanPicInfoMapper.insertEmisTmsScanPicInfo(emisTmsScanPicInfo); + // 更新总运单签收记录 + updateSignStatus(emisTmsScanRecord.getBillCode(), + signMan, + emisTmsScanRecord.getScanManCode(), + emisTmsScanRecord.getSignSiteCode(), + emisTmsScanRecord.getSignDate(), + emisTmsScanRecord.getPicUrl() + ); + } // 留仓 else if(ScanType.HOLD.opCode.equals(scanType)){ @@ -468,6 +489,22 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm emisTmsScanRecord.setRemark(remark); + // 登记问题件 + EmisWaybillProblemInfo waybillProblemInfo = new EmisWaybillProblemInfo(); + waybillProblemInfo.setBillCode(emisTmsScanRecord.getBillCode()); + waybillProblemInfo.setProblemType(problemType); + waybillProblemInfo.setProblemCause(remark); + waybillProblemInfo.setSendSiteCode(notifySite); + waybillProblemInfo.setRegisterDate(emisTmsScanRecord.getScanDate()); + waybillProblemInfo.setRegisterManCode(emisTmsScanRecord.getScanManCode()); + waybillProblemInfo.setRegisterSiteCode(emisTmsScanRecord.getScanSiteCode()); + waybillProblemInfo.setProblemTitle(remark); + waybillProblemInfo.setFilePath(picUrl); + registerWaybillProblemInfo(waybillProblemInfo); + + // 更新运单状态为问题件 + updateProblemStatus(emisTmsScanRecord.getBillCode(),problemType,waybillProblemInfo.getProblemCause()); + } // 合包 else if(ScanType.CO_PACKING.opCode.equals(scanType)){ @@ -477,16 +514,36 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm // "scanDate": "2024-05-02 12:03:05", // "scanWeight": "0.2" - String bagNo = (String)scanDataItem.get("bagNo"); - emisTmsScanRecord.setBagNo(bagNo); + String packNo = (String)scanDataItem.get("bagNo"); + emisTmsScanRecord.setBagNo(packNo); + + // 更新合包运单扫描状态 + EmisTmsPackDtl emisTmsPackDtl = new EmisTmsPackDtl(); + emisTmsPackDtl.setBillCode(emisTmsScanRecord.getBillCode()); + emisTmsPackDtl.setPackNo(packNo); + emisTmsPackDtl.setPackStatus("1"); + emisTmsPackDtl.setScanStatus("1"); + emisTmsPackDtl.setScanDate(emisTmsScanRecord.getScanDate()); + emisTmsPackDtl.setScanMan(emisTmsScanRecord.getScanManCode()); + emisTmsPackDtlMapper.updateScanStatus(emisTmsPackDtl); + } else if(ScanType.UN_PACKING.opCode.equals(scanType)){ // "billCode": "T001,T002,T002", // "scanDate": "2024-05-02 12:03:05", // "scanWeight": "0.2" -// String bagNo = (String)scanDataItem.get("bagNo"); -// emisTmsScanRecord.setBagNo(bagNo); - // 从包里面去除 + String packNo = (String)scanDataItem.get("bagNo"); + emisTmsScanRecord.setBagNo(packNo); + + // 更新合包运单扫描状态 ,拆包 + EmisTmsPackDtl emisTmsPackDtl = new EmisTmsPackDtl(); + emisTmsPackDtl.setBillCode(emisTmsScanRecord.getBillCode()); + emisTmsPackDtl.setPackNo(packNo); + emisTmsPackDtl.setPackStatus("0"); + emisTmsPackDtl.setScanStatus("1"); + emisTmsPackDtl.setScanDate(emisTmsScanRecord.getScanDate()); + emisTmsPackDtl.setScanMan(emisTmsScanRecord.getScanManCode()); + emisTmsPackDtlMapper.updateScanStatus(emisTmsPackDtl); } // 装车 @@ -555,8 +612,6 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm } - - } diff --git a/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml index f025f04e1..5960d259a 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsPackDtlMapper.xml @@ -119,6 +119,20 @@ where id = #{id} + + update emis_tms_pack_dtl + + scan_date = #{scanDate}, + scan_status = #{scanStatus}, + pack_status = #{packStatus}, + scan_man = #{scanMan}, + remark = #{remark}, + update_by = #{updateBy}, + update_site = #{updateSite}, + + where bill_code = #{billCode} and pack_no = #{packNo} + + delete from emis_tms_pack_dtl where id = #{id} diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml index 208d51958..96d056b5c 100644 --- a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml @@ -1256,6 +1256,36 @@ update emis_waybill set bl_print='1',print_man_code=#{printManCode},print_site=#{printSite},print_date=now(),print_count=print_count+1 where bill_code=#{billCode} + + update emis_waybill + set sign_man=#{signMan}, + sign_man_code=#{signManCode}, + sign_site_code = #{signSiteCode}, + sign_date = #{signDate}, + bill_pic_dispatch_rmk = #{billPicDispatchRmk} + ,update_by = #{updateBy} + ,update_site = #{updateSite} + + where bill_code=#{billCode} + + + + + update emis_waybill set + bl_is_question = #{blIsQuestion}, + problem_type = #{problemType}, + problem_cause = #{problemCause}, + problem_delay_days = #{problemDelayDays} + + ,update_by = #{updateBy} + ,update_site = #{updateSite} + + where bill_code=#{billCode} + + + + +