From ce2faad03190adaecc331bba958bacb5bfc9832a Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Thu, 15 Jan 2026 10:08:19 +0800 Subject: [PATCH 1/6] =?UTF-8?q?demand:=20=E6=96=B0=E5=A2=9E=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E9=A2=84=E8=AD=A6=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E5=AE=9A=E6=97=B6=E6=89=AB=E6=8F=8F=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E8=BF=90=E5=8D=95=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E7=9B=B8=E5=85=B3=E8=B4=A3=E4=BB=BB=E4=BA=BA?= =?UTF-8?q?=20=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1=E7=90=86-=E5=8F=91?= =?UTF-8?q?=E4=BB=B6=E6=89=AB=E6=8F=8F-=E6=89=AB=E6=8F=8F=E5=8F=AF?= =?UTF-8?q?=E5=8B=BE=E9=80=89`=E8=BD=A8=E8=BF=B9=E5=B7=B2=E7=BB=93?= =?UTF-8?q?=E6=9D=9F`=EF=BC=8C=E7=94=A8=E4=BA=8E=E4=BA=BA=E5=B7=A5?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E8=BF=90=E5=8D=95=E8=BD=A8=E8=BF=B9=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=20=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2-?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=A2=9E=E5=8A=A0'?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E7=8A=B6=E6=80=81=E2=80=98=EF=BC=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=94=E5=9B=9E=E5=A2=9E=E5=8A=A0'=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E7=8A=B6=E6=80=81=E2=80=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/domain/EmisTmsScanRecord.java | 2 + .../domain/enumtype/EmisBizErrorType.java | 1 + .../erp/emis/domain/vo/scan/ScanInfo.java | 4 +- .../erp/emis/service/EmisBaseService.java | 6 ++- .../impl/EmisTmsScanRecordServiceImpl.java | 21 +++++--- .../service/impl/EmisWaybillServiceImpl.java | 52 ++++++++----------- .../mapper/EmisTmsScanRecordMapper.xml | 16 +++--- 7 files changed, 58 insertions(+), 44 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsScanRecord.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsScanRecord.java index afc768d29..6f082ea35 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsScanRecord.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsScanRecord.java @@ -48,6 +48,8 @@ public class EmisTmsScanRecord extends BaseEntity private String orderSn; /* 扫描类型: 收发到派签 */ private String scanType; + /* 判断轨迹是否结束 1:是 0:否,默认为0 */ + private String blLastTrack; /* 上下一站点 */ @DataAuditField(fieldComment = "上/下一站名称") private String preOrNextStation; 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 5658e2d8f..93f433de5 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 @@ -42,6 +42,7 @@ public enum EmisBizErrorType { SCAN_HAS_SIGN("E604","已签收"), SCAN_HAS_PACK("E605","已组包"), SCAN_NO_ALLOW("E606","不允许操作"), + SCAN_CONFIRM_LAST_TRACK("E607","不允许手动完成轨迹"), BILL_LOCK("E901", "已锁定"), diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/scan/ScanInfo.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/scan/ScanInfo.java index 1db21b413..0e66a39e6 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/scan/ScanInfo.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/scan/ScanInfo.java @@ -24,7 +24,9 @@ public class ScanInfo implements Serializable { private String scanType; private Integer opType; - private String dataFrom; + private String dataFrom; + /* 判断轨迹是否结束 1:是 0:否,默认为0 */ + private String blLastTrack; private List> scanData; 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 2dd6f6ba5..9c8545a30 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 @@ -3246,15 +3246,17 @@ public class EmisBaseService { /** * 改变运单状态 + * * @param billCode * @param waybillStatus + * @param blLastTrack * @return */ - public int changeWaybillStatus(String billCode,String waybillStatus){ + public int changeWaybillStatus(String billCode, String waybillStatus, String blLastTrack){ EmisWaybill emisWaybill = new EmisWaybill(); emisWaybill.setBillCode(billCode); emisWaybill.setWaybillStatus(waybillStatus); - if("50".equals(waybillStatus)){ + if ("1".equals(blLastTrack) || "50".equals(waybillStatus)) { emisWaybill.setBlSign("1"); } return emisWaybillMapper.changeWaybillStatusByBillCode(emisWaybill); 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 acb38e0b4..1b999bfb1 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 @@ -19,7 +19,6 @@ import com.alibaba.fastjson.JSON; import com.xdadan.erp.common.core.domain.entity.SysUser; import com.xdadan.erp.common.utils.DateUtils; import com.xdadan.erp.common.utils.DictUtils; -import com.xdadan.erp.common.utils.ServletUtils; import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.*; import com.xdadan.erp.emis.domain.exception.EmisBizError; @@ -29,14 +28,12 @@ import com.xdadan.erp.emis.domain.vo.scan.ScanResult; import com.xdadan.erp.emis.domain.vo.scan.ScanResultItem; import com.xdadan.erp.emis.mapper.*; import com.xdadan.erp.emis.service.EmisBaseService; -import com.xdadan.erp.emis.utils.Kd100Helper; import com.xdadan.erp.emis.utils.WaybillHelper; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.xdadan.erp.emis.service.IEmisTmsScanRecordService; import org.springframework.transaction.annotation.Transactional; @@ -451,11 +448,13 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm /** * 扫描操作 + * * @param scanType * @param scanDataItem + * @param blLastTrack * @return */ - public List doScan(String scanType,Map scanDataItem,String scanManCode,String scanSiteCode) { + public List doScan(String scanType, Map scanDataItem, String scanManCode, String scanSiteCode, String blLastTrack) { List itemList = new ArrayList<>(); @@ -682,6 +681,16 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm EmisWaybill emisWaybill = getWaybillByBillCode(mainBillCode); + if ("1".equals(blLastTrack)) { + if (!"2".equals(emisWaybill.getCustomsClear())) { + scanResultItem.setResult("fail"); + scanResultItem.setMessage(emisWaybill.getBillCode() + "清关方式不为自提清关,无法手动完成轨迹"); + scanResultItem.setErrorCode(EmisBizErrorType.SCAN_CONFIRM_LAST_TRACK.errorCode); + itemList.add(scanResultItem); + return itemList; + } + emisTmsScanRecord.setBlLastTrack(blLastTrack); + } // 填充运单基础数据 emisTmsScanRecord.setMainBillCode(emisWaybill.getBillCode()); @@ -717,7 +726,7 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm // 修改主运单状态 - this.changeWaybillStatus(mainBillCode, scanType); + this.changeWaybillStatus(mainBillCode, scanType, blLastTrack); scanResultItem.setResult("success"); scanResultItem.setErrorCode(EmisBizErrorType.SUCCESS.errorCode); scanResultItem.setMessage("操作成功"); @@ -2606,7 +2615,7 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm List resultList = new ArrayList<>(); if(scanInfo.getOpType()==2){ for (Map item: scanInfo.getScanData()) { - List itemCheckList=doScan(scanInfo.getScanType(),item,scanManCode,scanSiteCode); + List itemCheckList=doScan(scanInfo.getScanType(),item,scanManCode,scanSiteCode,scanInfo.getBlLastTrack()); resultList.addAll(itemCheckList); } } 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 6f737712d..1226637d4 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 @@ -14,7 +14,6 @@ package com.xdadan.erp.emis.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; - import com.beust.jcommander.internal.Lists; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.data.PictureType; @@ -24,22 +23,16 @@ package com.xdadan.erp.emis.service.impl; import com.xdadan.erp.common.config.PayConfig; import com.xdadan.erp.common.core.domain.entity.SysUser; import com.xdadan.erp.common.core.redis.RedissonService; - import com.xdadan.erp.common.utils.BarcodeUtils; - import com.xdadan.erp.common.utils.DateUtils; - import com.xdadan.erp.common.utils.DictUtils; -import com.xdadan.erp.common.utils.SecurityUtils; -import com.xdadan.erp.common.utils.NoticeUtils; + import com.xdadan.erp.common.utils.*; import com.xdadan.erp.common.utils.file.FileUploadUtils; import com.xdadan.erp.common.utils.idgen.UUID; -import com.xdadan.erp.emis.domain.*; -import com.xdadan.erp.emis.domain.enumtype.*; -import com.xdadan.erp.emis.domain.exception.EmisBizError; -import com.xdadan.erp.emis.domain.vo.WaybillOrder; -import com.xdadan.erp.emis.domain.vo.scan.ScanInfo; -import com.xdadan.erp.emis.mapper.EmisSalesmenRelMapper; -import com.xdadan.erp.emis.domain.EmisSalesmenRel; -import com.xdadan.erp.emis.mapper.*; -import com.xdadan.erp.emis.service.*; + import com.xdadan.erp.emis.domain.*; + import com.xdadan.erp.emis.domain.enumtype.*; + import com.xdadan.erp.emis.domain.exception.EmisBizError; + import com.xdadan.erp.emis.domain.vo.WaybillOrder; + import com.xdadan.erp.emis.domain.vo.scan.ScanInfo; + import com.xdadan.erp.emis.mapper.*; + import com.xdadan.erp.emis.service.*; import com.xdadan.erp.emis.service.print.IXddTplPrint; import com.xdadan.erp.emis.service.print.tanex.TanexPdfPrinter; import com.xdadan.erp.emis.service.warehouse.DocUtils; @@ -74,8 +67,8 @@ import com.xdadan.erp.emis.service.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import java.util.stream.Collectors; -import java.util.regex.Pattern; + import java.util.regex.Pattern; + import java.util.stream.Collectors; /** * 运单列表Service业务层处理 @@ -6263,9 +6256,10 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } - // 销售支持(可能为逗号分隔) - if (!StringUtils.isEmpty(waybill.getSalesSupport())) { - String[] supports = waybill.getSalesSupport().split("[,,]"); + // 销售支持 + EmisWaybillOther waybillOther = waybill.getWaybillOther(); + if (waybillOther != null && !StringUtils.isEmpty(waybillOther.getSalesSupport())) { + String[] supports = waybillOther.getSalesSupport().split("[,,]"); for (String support : supports) { if (!StringUtils.isEmpty(support)) { notifyEmpCodes.add(support.trim()); @@ -6277,18 +6271,18 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb continue; } - String empCodeStr = String.join(",", notifyEmpCodes); String billCode = waybill.getBillCode(); String timeStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, now); String title = "轨迹异常:运单【" + billCode + "】停留超过3天_" + timeStr; String content = title; - String url = "/d24/waybillManagement/WaybillList?billCode=" + billCode; - - try { - NoticeUtils.outSendNoticeToInner(title, content, url, empCodeStr, 3); - } catch (Exception ex) { - log.error("autoTraceWarning: send notice error, billCode={}, empCodes={}", billCode, empCodeStr, ex); - } + String url = "/d24/waybillManagement/SendWaybillList?billCode=" + billCode; + notifyEmpCodes.forEach(empCode -> { + try { + NoticeUtils.outSendNoticeToInner(title, content, url, empCode, 3); + } catch (Exception ex) { + log.error("autoTraceWarning: send notice error, billCode={}, empCode={}", billCode, empCode, ex); + } + }); } catch (Exception ex) { log.error("autoTraceWarning: handle waybill error, billCode={}", waybill.getBillCode(), ex); } @@ -6512,7 +6506,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb int startIndex = remark.indexOf("T7080"); if (startIndex != -1) { String subStr = remark.substring(startIndex); - java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("T7080\\d+"); + Pattern pattern = Pattern.compile("T7080\\d+"); java.util.regex.Matcher matcher = pattern.matcher(subStr); if (matcher.find()) { return matcher.group(); diff --git a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml index ac7d31045..c2ad5bcfc 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml @@ -11,6 +11,7 @@ + @@ -230,7 +231,7 @@ - select id, bill_code, main_bill_code, bl_sub_bill, order_sn, scan_type, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, pre_or_next_man_code, pre_or_next_man_phone, scan_date, scan_man_code, scan_man_phone, scan_man, pre_or_next_man, scan_site, scan_site_code, scan_site_phone, scan_weight, weight, dest_site_code, dest_code, dispatch_or_send_man, dispatch_or_send_man_code, dispatch_or_send_man_phone, sign_date, sign_man, sign_site, sign_site_code, record_man, record_man_code, record_man_phone, record_site_code, car_no, bag_no, truck_man, truck_code, data_from, pic_url, public_trace_info, inner_trace_info, rel_id, status, del_flag, create_by, create_time, update_by, update_time, remark, update_site, create_site + select id, bill_code, main_bill_code, bl_sub_bill, order_sn, scan_type, bl_last_track, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, pre_or_next_man_code, pre_or_next_man_phone, scan_date, scan_man_code, scan_man_phone, scan_man, pre_or_next_man, scan_site, scan_site_code, scan_site_phone, scan_weight, weight, dest_site_code, dest_code, dispatch_or_send_man, dispatch_or_send_man_code, dispatch_or_send_man_phone, sign_date, sign_man, sign_site, sign_site_code, record_man, record_man_code, record_man_phone, record_site_code, car_no, bag_no, truck_man, truck_code, data_from, pic_url, public_trace_info, inner_trace_info, rel_id, status, del_flag, create_by, create_time, update_by, update_time, remark, update_site, create_site from emis_tms_scan_record a where del_flag='0' and a.main_bill_code = #{billCode} and scan_type in('10','20','30','40','50') order by create_time desc limit 1 @@ -272,12 +273,12 @@ - select id, bill_code, main_bill_code, bl_sub_bill, order_sn, scan_type, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, pre_or_next_man_code, pre_or_next_man_phone, scan_date, scan_man_code, scan_man_phone, scan_man, pre_or_next_man, scan_site, scan_site_code, scan_site_phone, scan_weight, weight, dest_site_code, dest_code, dispatch_or_send_man, dispatch_or_send_man_code, dispatch_or_send_man_phone, sign_date, sign_man, sign_site, sign_site_code, record_man, record_man_code, record_man_phone, record_site_code, car_no, bag_no, truck_man, truck_code, data_from, pic_url, public_trace_info, inner_trace_info, rel_id, status, del_flag, create_by, create_time, update_by, update_time, remark, update_site, create_site from emis_tms_scan_record + select id, bill_code, main_bill_code, bl_sub_bill, order_sn, scan_type, bl_last_track, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, pre_or_next_man_code, pre_or_next_man_phone, scan_date, scan_man_code, scan_man_phone, scan_man, pre_or_next_man, scan_site, scan_site_code, scan_site_phone, scan_weight, weight, dest_site_code, dest_code, dispatch_or_send_man, dispatch_or_send_man_code, dispatch_or_send_man_phone, sign_date, sign_man, sign_site, sign_site_code, record_man, record_man_code, record_man_phone, record_site_code, car_no, bag_no, truck_man, truck_code, data_from, pic_url, public_trace_info, inner_trace_info, rel_id, status, del_flag, create_by, create_time, update_by, update_time, remark, update_site, create_site from emis_tms_scan_record - select id, bill_code, main_bill_code, bl_sub_bill, order_sn, scan_type, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, pre_or_next_man_code, pre_or_next_man_phone, scan_date, scan_man_code, scan_man_phone, scan_man, pre_or_next_man, scan_site, scan_site_code, scan_site_phone, scan_weight, weight, dest_site_code, dest_code, dispatch_or_send_man, dispatch_or_send_man_code, dispatch_or_send_man_phone, sign_date, sign_man, sign_site, sign_site_code, record_man, record_man_code, record_man_phone, record_site_code, car_no, bag_no, truck_man, truck_code, data_from, pic_url, public_trace_info, inner_trace_info, rel_id, status, del_flag, create_by, create_time, update_by, update_time, remark, update_site, create_site + select id, bill_code, main_bill_code, bl_sub_bill, order_sn, scan_type, bl_last_track, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, pre_or_next_man_code, pre_or_next_man_phone, scan_date, scan_man_code, scan_man_phone, scan_man, pre_or_next_man, scan_site, scan_site_code, scan_site_phone, scan_weight, weight, dest_site_code, dest_code, dispatch_or_send_man, dispatch_or_send_man_code, dispatch_or_send_man_phone, sign_date, sign_man, sign_site, sign_site_code, record_man, record_man_code, record_man_phone, record_site_code, car_no, bag_no, truck_man, truck_code, data_from, pic_url, public_trace_info, inner_trace_info, rel_id, status, del_flag, create_by, create_time, update_by, update_time, remark, update_site, create_site from emis_tms_scan_record a del_flag='0' @@ -527,7 +528,7 @@ @@ -541,6 +542,7 @@ bl_sub_bill, order_sn, scan_type, + bl_last_track, pre_or_next_station, pre_or_next_station_code, pre_or_next_station_phone, @@ -595,6 +597,7 @@ #{blSubBill}, #{orderSn}, #{scanType}, + #{blLastTrack}, #{preOrNextStation}, #{preOrNextStationCode}, #{preOrNextStationPhone}, @@ -652,6 +655,7 @@ bl_sub_bill = #{blSubBill}, order_sn = #{orderSn}, scan_type = #{scanType}, + bl_last_track = #{blLastTrack}, pre_or_next_station = #{preOrNextStation}, pre_or_next_station_code = #{preOrNextStationCode}, pre_or_next_station_phone = #{preOrNextStationPhone}, From 01e22b98fc023cd4182c2ee2417e4c203527273c Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 16 Jan 2026 09:37:25 +0800 Subject: [PATCH 2/6] =?UTF-8?q?demand:=20=E6=96=B0=E5=A2=9E=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E9=A2=84=E8=AD=A6=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E5=AE=9A=E6=97=B6=E6=89=AB=E6=8F=8F=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E8=BF=90=E5=8D=95=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E7=9B=B8=E5=85=B3=E8=B4=A3=E4=BB=BB=E4=BA=BA?= =?UTF-8?q?=20=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1=E7=90=86-=E5=8F=91?= =?UTF-8?q?=E4=BB=B6=E6=89=AB=E6=8F=8F-=E6=89=AB=E6=8F=8F=E5=8F=AF?= =?UTF-8?q?=E5=8B=BE=E9=80=89`=E8=BD=A8=E8=BF=B9=E5=B7=B2=E7=BB=93?= =?UTF-8?q?=E6=9D=9F`=EF=BC=8C=E7=94=A8=E4=BA=8E=E4=BA=BA=E5=B7=A5?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E8=BF=90=E5=8D=95=E8=BD=A8=E8=BF=B9=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=20=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2-?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=A2=9E=E5=8A=A0'?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E7=8A=B6=E6=80=81=E2=80=98=EF=BC=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=94=E5=9B=9E=E5=A2=9E=E5=8A=A0'=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E7=8A=B6=E6=80=81=E2=80=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml index c2ad5bcfc..4f83c05eb 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml @@ -300,6 +300,7 @@ and scan_type=#{scanType} + bl_last_track=#{blLastTrack} and pre_or_next_station like concat('%', #{preOrNextStation}, '%') and pre_or_next_station_code=#{preOrNextStationCode} and pre_or_next_station_phone like concat('%', #{preOrNextStationPhone}, '%') @@ -726,4 +727,4 @@ - \ No newline at end of file + From c14b91a81a05bf2c772aa145bf4cf06e5fe9d30e Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 16 Jan 2026 10:53:23 +0800 Subject: [PATCH 3/6] =?UTF-8?q?demand:=20=E6=96=B0=E5=A2=9E=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E9=A2=84=E8=AD=A6=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E5=AE=9A=E6=97=B6=E6=89=AB=E6=8F=8F=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E8=BF=90=E5=8D=95=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E7=9B=B8=E5=85=B3=E8=B4=A3=E4=BB=BB=E4=BA=BA?= =?UTF-8?q?=20=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1=E7=90=86-=E5=8F=91?= =?UTF-8?q?=E4=BB=B6=E6=89=AB=E6=8F=8F-=E6=89=AB=E6=8F=8F=E5=8F=AF?= =?UTF-8?q?=E5=8B=BE=E9=80=89`=E8=BD=A8=E8=BF=B9=E5=B7=B2=E7=BB=93?= =?UTF-8?q?=E6=9D=9F`=EF=BC=8C=E7=94=A8=E4=BA=8E=E4=BA=BA=E5=B7=A5?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E8=BF=90=E5=8D=95=E8=BD=A8=E8=BF=B9=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=20=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2-?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=A2=9E=E5=8A=A0'?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E7=8A=B6=E6=80=81=E2=80=98=EF=BC=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=94=E5=9B=9E=E5=A2=9E=E5=8A=A0'=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E7=8A=B6=E6=80=81=E2=80=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EmisWaybillServiceImpl.java | 51 ++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) 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 1226637d4..b7022beef 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 @@ -38,9 +38,10 @@ package com.xdadan.erp.emis.service.impl; import com.xdadan.erp.emis.service.warehouse.DocUtils; import com.xdadan.erp.emis.utils.WaybillHelper; import com.xdadan.erp.emis.utils.sensitive.Convert; - import com.xdadan.erp.system.domain.SysFileInfo; - import com.xdadan.erp.system.service.ISysFileInfoService; - import com.xdadan.erp.system.service.ISysNoticeService; +import com.xdadan.erp.system.domain.SysFileInfo; +import com.xdadan.erp.system.mapper.SysUserMapper; +import com.xdadan.erp.system.service.ISysFileInfoService; +import com.xdadan.erp.system.service.ISysNoticeService; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; @@ -156,6 +157,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb @Autowired private EmisMoneyUserMapper emisMoneyUserMapper; + @Autowired + private SysUserMapper sysUserMapper; + /** * 保存或更新运单其他信息副表 * @param emisWaybillSave @@ -6236,13 +6240,13 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } try { - // 收集需要通知的员工编码:销售联系人、销售支持、销售分享人 - Set notifyEmpCodes = new LinkedHashSet<>(); + // 收集需要通知的员工姓名:销售联系人、销售支持、销售分享人 + Set notifyEmpNames = new LinkedHashSet<>(); // 销售联系人 if (!StringUtils.isEmpty(waybill.getSalesmen())) { String salesmen = waybill.getSalesmen(); - notifyEmpCodes.add(salesmen); + notifyEmpNames.add(salesmen); // 销售分享关系:salesmen -> salesAss(使用当前批次预加载的关系) List relList = salesRelMap.get(salesmen); @@ -6251,7 +6255,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb if (rel == null || StringUtils.isEmpty(rel.getSalesAss())) { continue; } - notifyEmpCodes.add(rel.getSalesAss()); + notifyEmpNames.add(rel.getSalesAss()); } } } @@ -6262,23 +6266,46 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb String[] supports = waybillOther.getSalesSupport().split("[,,]"); for (String support : supports) { if (!StringUtils.isEmpty(support)) { - notifyEmpCodes.add(support.trim()); + notifyEmpNames.add(support.trim()); } } } + if (notifyEmpNames.isEmpty()) { + continue; + } + + // 根据notifyEmpNames查询sys_user获取所有的notifyEmpCodes + Set notifyEmpCodes = new LinkedHashSet<>(); + for (String empName : notifyEmpNames) { + try { + SysUser cond = new SysUser(); + cond.setEmpName(empName); + List users = sysUserMapper.selectUserList(cond); + if (!CollectionUtils.isEmpty(users)) { + for (SysUser u : users) { + if (u != null && !StringUtils.isEmpty(u.getEmpCode())) { + notifyEmpCodes.add(u.getEmpCode()); + } + } + } + } catch (Exception ex) { + log.error("autoTraceWarning: query sys_user error, billCode={}, empName={}", waybill.getBillCode(), empName, ex); + } + } + if (notifyEmpCodes.isEmpty()) { continue; } String billCode = waybill.getBillCode(); - String timeStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, now); - String title = "轨迹异常:运单【" + billCode + "】停留超过3天_" + timeStr; - String content = title; String url = "/d24/waybillManagement/SendWaybillList?billCode=" + billCode; notifyEmpCodes.forEach(empCode -> { try { - NoticeUtils.outSendNoticeToInner(title, content, url, empCode, 3); +// String timeStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, now); + String title = "轨迹异常:运单【" + billCode + "】停留超过3天_" + empCode; + String content = title; + NoticeUtils.outSendNoticeToInner(title, content, url, empCode, 2); } catch (Exception ex) { log.error("autoTraceWarning: send notice error, billCode={}, empCode={}", billCode, empCode, ex); } From fc3fed843dae50c2c5ff98944bdda7c1fe90d385 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 16 Jan 2026 11:18:21 +0800 Subject: [PATCH 4/6] =?UTF-8?q?demand:=20tms-=E5=9F=BA=E7=A1=80=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E5=AE=A2=E6=88=B7=E5=BC=80=E7=A5=A8=E4=B8=BB?= =?UTF-8?q?=E4=BD=93-=E5=B0=86=E5=88=A0=E9=99=A4=E6=94=B9=E6=88=90?= =?UTF-8?q?=E8=BD=AF=E5=88=A0=E9=99=A4=20=20tms-=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E5=85=AC=E5=8F=B8=E5=BC=80=E7=A5=A8?= =?UTF-8?q?=E4=B8=BB=E4=BD=93-=E5=B0=86=E5=88=A0=E9=99=A4=E6=94=B9?= =?UTF-8?q?=E6=88=90=E8=BD=AF=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/EmisBaseInvoiceInfoMapper.xml | 6 +++--- .../main/resources/mapper/EmisCustomerInvoiceInfoMapper.xml | 4 ++-- .../src/main/resources/mapper/EmisTmsScanRecordMapper.xml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/emis-biz/src/main/resources/mapper/EmisBaseInvoiceInfoMapper.xml b/emis-biz/src/main/resources/mapper/EmisBaseInvoiceInfoMapper.xml index f73b665b7..4fd13fab3 100644 --- a/emis-biz/src/main/resources/mapper/EmisBaseInvoiceInfoMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisBaseInvoiceInfoMapper.xml @@ -164,13 +164,13 @@ - delete from emis_base_invoice_info where id = #{id} + update emis_base_invoice_info set del_flag='1' where id = #{id} - delete from emis_base_invoice_info where id in + update emis_base_invoice_info set del_flag='1' where id in #{id} - \ No newline at end of file + diff --git a/emis-biz/src/main/resources/mapper/EmisCustomerInvoiceInfoMapper.xml b/emis-biz/src/main/resources/mapper/EmisCustomerInvoiceInfoMapper.xml index 607a017c9..4639c6e30 100644 --- a/emis-biz/src/main/resources/mapper/EmisCustomerInvoiceInfoMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCustomerInvoiceInfoMapper.xml @@ -175,11 +175,11 @@ - delete from emis_customer_invoice_info where id = #{id} + update emis_customer_invoice_info set del_flag='1' where id = #{id} - delete from emis_customer_invoice_info where id in + update emis_customer_invoice_info set del_flag='1' where id in #{id} diff --git a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml index 4f83c05eb..b08765439 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml @@ -300,7 +300,7 @@ and scan_type=#{scanType} - bl_last_track=#{blLastTrack} + and bl_last_track=#{blLastTrack} and pre_or_next_station like concat('%', #{preOrNextStation}, '%') and pre_or_next_station_code=#{preOrNextStationCode} and pre_or_next_station_phone like concat('%', #{preOrNextStationPhone}, '%') From e7e0fd1c4e38e555044d9b23cc95603ea878dab3 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 16 Jan 2026 14:06:54 +0800 Subject: [PATCH 5/6] =?UTF-8?q?demand:=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E6=89=AB=E6=8F=8F=E8=AE=B0=E5=BD=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2-=E5=88=A0=E9=99=A4=E6=89=AB=E6=8F=8F=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E8=BF=90=E5=8D=95?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E5=B7=B2=E7=BB=93=E6=9D=9F=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=BF=90=E5=8D=95=E4=B8=BA=E6=9C=AA=E7=AD=BE=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisTmsScanRecordServiceImpl.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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 1b999bfb1..797bd4592 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 @@ -197,8 +197,28 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm * @return 结果 */ @Override + @Transactional public int deleteEmisTmsScanRecordByIds(Long[] ids) { + // 校验:如果扫描记录的blLastTrack=1,需要修改对应运单的bl_sign='0' + if (ids != null && ids.length > 0) { + for (Long id : ids) { + EmisTmsScanRecord record = selectEmisTmsScanRecordById(id); + if (record != null && "1".equals(record.getBlLastTrack())) { + String mainBillCode = record.getMainBillCode(); + if (StringUtils.isNotEmpty(mainBillCode)) { + EmisWaybill waybill = getWaybillByBillCode(mainBillCode); + if (waybill != null) { + EmisWaybill updateWaybill = new EmisWaybill(); + updateWaybill.setBillCode(mainBillCode); + updateWaybill.setWaybillStatus(waybill.getWaybillStatus()); + updateWaybill.setBlSign("0"); + emisWaybillMapper.changeWaybillStatusByBillCode(updateWaybill); + } + } + } + } + } return emisTmsScanRecordMapper.deleteEmisTmsScanRecordByIds(ids); } From 7ac80898ed524798c75326c5c5a953e50f38bc05 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 16 Jan 2026 16:27:21 +0800 Subject: [PATCH 6/6] =?UTF-8?q?demand:=20tms-=E6=89=AB=E6=8F=8F=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E6=89=AB=E6=8F=8F=E8=AE=B0=E5=BD=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2-=E5=88=A0=E9=99=A4=E6=89=AB=E6=8F=8F=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E8=BF=90=E5=8D=95?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E5=B7=B2=E7=BB=93=E6=9D=9F=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=BF=90=E5=8D=95=E4=B8=BA=E6=9C=AA=E7=AD=BE=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/service/impl/EmisWaybillServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 b7022beef..eea54419c 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 @@ -6190,10 +6190,10 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb @Override public void autoTraceWarning() { try { - // 2025-12-01 00:00:00 之后的运单 + // 2026-01-01 00:00:00 之后的运单 Calendar cal = Calendar.getInstance(); - cal.set(Calendar.YEAR, 2025); - cal.set(Calendar.MONTH, Calendar.DECEMBER); + cal.set(Calendar.YEAR, 2026); + cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0);