This commit is contained in:
linfso 2024-06-01 11:20:38 +08:00
parent 29df762278
commit d4cfe1b7be
9 changed files with 337 additions and 28 deletions

View File

@ -4,7 +4,6 @@
<file url="file://$PROJECT_DIR$/emis-biz-web/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/emis-biz/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/emis-biz/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/emis-oms2c-web/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/emis-wms-web/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/emis-wms/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/emis-wms/src/main/resources" charset="UTF-8" />

View File

@ -343,7 +343,7 @@ public class EmisWaybill extends BaseEntity
/* 签收站点代码 */
private String signSiteCode;
/* 签收时间 */
private String signDate;
private Date signDate;
/* 揽收图片备注 */
private String billPicSendRmk;
/* 签收底单图片 */

View File

@ -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;
}
}

View File

@ -52,6 +52,10 @@ public interface EmisTmsPackDtlMapper extends BaseMapper<EmisTmsPackDtl>
*/
public int updateEmisTmsPackDtl(EmisTmsPackDtl emisTmsPackDtl);
/**
* 删除
*
@ -67,4 +71,11 @@ public interface EmisTmsPackDtlMapper extends BaseMapper<EmisTmsPackDtl>
* @return 结果
*/
public int deleteEmisTmsPackDtlByIds(Long[] ids);
/**
* 更新子单扫描状态
* @param emisTmsPackDtl
* @return
*/
public int updateScanStatus(EmisTmsPackDtl emisTmsPackDtl);
}

View File

@ -97,6 +97,11 @@ public interface EmisWaybillMapper extends BaseMapper<EmisWaybill>
public int updatePrintStatus(EmisWaybill emisWaybill);
public int updateSignStatus(EmisWaybill emisWaybill);
// 更新问题件状态
public int updateProblemStatus(EmisWaybill emisWaybill);
public int updateEmisWaybillByBillCode(EmisWaybill emisWaybill);

View File

@ -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

View File

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

View File

@ -119,6 +119,20 @@
where id = #{id}
</update>
<update id="updateScanStatus" parameterType="EmisTmsPackDtl">
update emis_tms_pack_dtl
<trim prefix="SET" suffixOverrides=",">
<if test="scanDate != null">scan_date = #{scanDate},</if>
<if test="scanStatus != null and scanStatus != ''">scan_status = #{scanStatus},</if>
<if test="packStatus != null and packStatus != ''">pack_status = #{packStatus},</if>
<if test="scanMan != null and scanMan != ''">scan_man = #{scanMan},</if>
<if test="remark != null and remark != ''">remark = #{remark},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="updateSite != null and updateSite != ''">update_site = #{updateSite},</if>
</trim>
where bill_code = #{billCode} and pack_no = #{packNo}
</update>
<delete id="deleteEmisTmsPackDtlById" parameterType="Long">
delete from emis_tms_pack_dtl where id = #{id}
</delete>

View File

@ -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>
<update id="updateSignStatus" parameterType="EmisWaybill">
update emis_waybill
set sign_man=#{signMan},
sign_man_code=#{signManCode},
sign_site_code = #{signSiteCode},
sign_date = #{signDate},
bill_pic_dispatch_rmk = #{billPicDispatchRmk}
<if test="updateBy != null and updateBy != ''">,update_by = #{updateBy}</if>
<if test="updateSite != null and updateSite != ''">,update_site = #{updateSite}</if>
where bill_code=#{billCode}
</update>
<update id="updateProblemStatus" parameterType="EmisWaybill">
update emis_waybill set
bl_is_question = #{blIsQuestion},
problem_type = #{problemType},
problem_cause = #{problemCause},
problem_delay_days = #{problemDelayDays}
<if test="updateBy != null and updateBy != ''">,update_by = #{updateBy}</if>
<if test="updateSite != null and updateSite != ''">,update_site = #{updateSite}</if>
where bill_code=#{billCode}
</update>
<update id="changeWaybillStatusByBillCode" parameterType="EmisWaybill">