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}
+
+
+
+
+