md
This commit is contained in:
parent
b7609be65f
commit
2be6cc183d
@ -0,0 +1,134 @@
|
||||
|
||||
/**
|
||||
* @Project: emis
|
||||
* @Title: EmisTmsTransferTraceController.java
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
* @Copyright: ShangHai Duta 2022 All rights reserved.
|
||||
* @version v1.0
|
||||
* @Description: <p> 转件物流信息记录表 控制器 </p>
|
||||
*/
|
||||
|
||||
package com.xdadan.erp.web.emis;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.xdadan.erp.common.annotation.Log;
|
||||
import com.xdadan.erp.common.core.controller.BaseController;
|
||||
import com.xdadan.erp.common.core.domain.AjaxResult;
|
||||
import com.xdadan.erp.common.core.page.TableDataInfo;
|
||||
import com.xdadan.erp.common.enums.BusinessType;
|
||||
import com.xdadan.erp.common.utils.StringUtils;
|
||||
import com.xdadan.erp.common.utils.poi.ExcelUtil;
|
||||
|
||||
import com.xdadan.erp.emis.domain.EmisTmsTransferTrace;
|
||||
import com.xdadan.erp.emis.service.IEmisTmsTransferTraceService;
|
||||
|
||||
/**
|
||||
* 转件物流信息记录表Controller
|
||||
*
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/emis/emisTmsTransferTrace")
|
||||
public class EmisTmsTransferTraceController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IEmisTmsTransferTraceService emisTmsTransferTraceService;
|
||||
|
||||
/**
|
||||
* 查询转件物流信息记录表列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
startPage();
|
||||
List<EmisTmsTransferTrace> list = emisTmsTransferTraceService.selectEmisTmsTransferTraceList(emisTmsTransferTrace);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查是否重复
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return 数量
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:list')")
|
||||
@GetMapping("/checkUnique")
|
||||
public AjaxResult checkUnique(EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
int cnt=emisTmsTransferTraceService.checkUnique(emisTmsTransferTrace);
|
||||
return AjaxResult.success("检查成功",cnt);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出转件物流信息记录表列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:export')")
|
||||
@Log(title = "转件物流信息记录表", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
List<EmisTmsTransferTrace> list = emisTmsTransferTraceService.selectEmisTmsTransferTraceList(emisTmsTransferTrace);
|
||||
ExcelUtil<EmisTmsTransferTrace> util = new ExcelUtil<EmisTmsTransferTrace>(EmisTmsTransferTrace.class);
|
||||
util.exportExcel(response, list, "转件物流信息记录表数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取转件物流信息记录表详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(emisTmsTransferTraceService.selectEmisTmsTransferTraceById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增转件物流信息记录表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:add')")
|
||||
@Log(title = "转件物流信息记录表", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
return toAjax(emisTmsTransferTraceService.insertEmisTmsTransferTrace(emisTmsTransferTrace));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改转件物流信息记录表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:edit')")
|
||||
@Log(title = "转件物流信息记录表", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
return toAjax(emisTmsTransferTraceService.updateEmisTmsTransferTrace(emisTmsTransferTrace));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除转件物流信息记录表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisTmsTransferTrace:remove')")
|
||||
@Log(title = "转件物流信息记录表", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(emisTmsTransferTraceService.deleteEmisTmsTransferTraceByIds(ids));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
/**
|
||||
* @Project: emis
|
||||
* @Title: EmisTmsTransferTrace.java
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
* @Copyright: ShangHai Duta 2022 All rights reserved.
|
||||
* @version v1.0
|
||||
* @Description: <p> 转件物流信息记录表 实体类 </p>
|
||||
*/
|
||||
|
||||
package com.xdadan.erp.emis.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.xdadan.erp.common.annotation.Excel;
|
||||
import com.xdadan.erp.common.core.domain.BaseEntity;
|
||||
import com.xdadan.erp.common.core.domain.TreeEntity;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* @ClassName EmisTmsTransferTrace
|
||||
* @Description 转件物流信息记录表
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
*/
|
||||
@Data
|
||||
public class EmisTmsTransferTrace extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/* id */
|
||||
private Long id;
|
||||
/* 单号 */
|
||||
private String billCode;
|
||||
/* 跟进日期 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date lastTraceDate;
|
||||
/* 50-签收 */
|
||||
private String lastWaybliiStatus;
|
||||
/* 轨迹信息 */
|
||||
private String traceInfo;
|
||||
/* 跟进渠道 */
|
||||
private String chId;
|
||||
/* 转件单号 */
|
||||
private String transferBillCode;
|
||||
/* 转件公司 */
|
||||
private String transferExpress;
|
||||
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
/**
|
||||
* @Project: emis
|
||||
* @Title: EmisTmsTransferTraceMapper.java
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
* @Copyright: ShangHai Doitinfo 2022 All rights reserved.
|
||||
* @version v1.0
|
||||
* @Description: <p> 转件物流信息记录表 Mapper 接口 </p>
|
||||
* <span style='color:red'> Warning : This file is generate by ai tools,don't edit!!! </span>
|
||||
*/
|
||||
package com.xdadan.erp.emis.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsTransferTrace;
|
||||
/**
|
||||
* @ClassName EmisTmsTransferTraceMapper
|
||||
* @Description <p> 转件物流信息记录表 Mapper 接口 </p>
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
*/
|
||||
public interface EmisTmsTransferTraceMapper extends BaseMapper<EmisTmsTransferTrace>
|
||||
{
|
||||
/**
|
||||
* 主键查询
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public EmisTmsTransferTrace selectEmisTmsTransferTraceById(Long id);
|
||||
|
||||
/**
|
||||
* 查询列表
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return 集合
|
||||
*/
|
||||
public List<EmisTmsTransferTrace> selectEmisTmsTransferTraceList(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
|
||||
/**
|
||||
* 检查是否重复
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return 数量
|
||||
*/
|
||||
public int checkUnique(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return
|
||||
*/
|
||||
public int insertEmisTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return
|
||||
*/
|
||||
public int updateEmisTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisTmsTransferTraceById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisTmsTransferTraceByIds(Long[] ids);
|
||||
}
|
||||
@ -15,6 +15,7 @@ package com.xdadan.erp.emis.service;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.db.DbUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.serializer.PropertyFilter;
|
||||
import com.alibaba.fastjson.serializer.SerializeFilter;
|
||||
@ -38,6 +39,7 @@ package com.xdadan.erp.emis.service;
|
||||
import com.xdadan.erp.emis.service.IEmisWaybillCargoService;
|
||||
import com.xdadan.erp.emis.service.IEmisWaybillFeeitemService;
|
||||
import com.xdadan.erp.emis.service.IEmisWaybillService;
|
||||
import com.xdadan.erp.emis.utils.Kd100Helper;
|
||||
import com.xdadan.erp.emis.utils.WaybillHelper;
|
||||
import com.xdadan.erp.emis.utils.sensitive.Convert;
|
||||
import com.xdadan.erp.system.mapper.SysUserMapper;
|
||||
@ -114,6 +116,13 @@ public class EmisBaseService {
|
||||
private EmisWaybillProblemInfoMapper emisWaybillProblemInfoMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private EmisTmsTransferTraceMapper emisTmsTransferTraceMapper;
|
||||
|
||||
@Autowired
|
||||
private EmisWaybillTransferMapper emisWaybillTransferMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 获取客户完整手机号 国家+电话 eg: 0086-1381861188
|
||||
* @param countryCode
|
||||
@ -355,8 +364,98 @@ public class EmisBaseService {
|
||||
upd.setBlDispFd("1");// 转单标识
|
||||
emisWaybillMapper.updateTransferInfo(upd);
|
||||
|
||||
// 插入跟踪记录表
|
||||
EmisTmsTransferTrace emisTmsTransferTrace=new EmisTmsTransferTrace();
|
||||
emisTmsTransferTrace.setBillCode(billCode);
|
||||
emisTmsTransferTrace.setTransferBillCode(transferBillcode);
|
||||
emisTmsTransferTrace.setTransferExpress(transferCode);
|
||||
int rst=emisTmsTransferTraceMapper.checkUnique(emisTmsTransferTrace);
|
||||
if(rst==0){
|
||||
emisTmsTransferTraceMapper.insertEmisTmsTransferTrace(emisTmsTransferTrace);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取三方物流轨迹
|
||||
* @param billCode
|
||||
* @return
|
||||
*/
|
||||
public EmisTmsTransferTrace getEmisTmsTransferTraceByBillCode(String billCode){
|
||||
|
||||
EmisTmsTransferTrace emisTmsTransferTrace = new EmisTmsTransferTrace();
|
||||
emisTmsTransferTrace.setBillCode(billCode);
|
||||
List<EmisTmsTransferTrace> listTrace=emisTmsTransferTraceMapper.selectEmisTmsTransferTraceList(emisTmsTransferTrace);
|
||||
if(!CollectionUtil.isEmpty(listTrace)){
|
||||
return listTrace.get(0);
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 获取第三方转件记录
|
||||
* @param billCode
|
||||
* @return
|
||||
*/
|
||||
public List<EmisTmsScanRecord> cvtTransferTraceToScanRecord(String billCode) {
|
||||
List<EmisTmsScanRecord> recordList= null;
|
||||
try {
|
||||
EmisWaybill waybill=getWaybillByBillCode(billCode);
|
||||
if("1".equals(waybill.getBlDispFd())){
|
||||
EmisTmsTransferTrace emisTmsTransferTrace = getEmisTmsTransferTraceByBillCode(billCode);
|
||||
if(emisTmsTransferTrace!=null){
|
||||
if(!StringUtils.isEmpty(emisTmsTransferTrace.getTraceInfo())){
|
||||
JSONObject jsonObject = JSONObject.parseObject(emisTmsTransferTrace.getTraceInfo());
|
||||
JSONArray steps=jsonObject.getJSONArray("data");
|
||||
if(steps!=null && steps.size()>0){
|
||||
recordList = new ArrayList<>();
|
||||
for (Object obj:steps) {
|
||||
JSONObject stepItem = (JSONObject)obj;
|
||||
EmisTmsScanRecord recordItem = new EmisTmsScanRecord();
|
||||
recordItem.setBillCode(billCode);
|
||||
recordItem.setScanDate(stepItem.getDate("time"));
|
||||
recordItem.setRemark(stepItem.getString("context"));
|
||||
recordItem.setScanType("81");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return recordList;
|
||||
}
|
||||
|
||||
public void doTransferTraceUpdate() {
|
||||
EmisTmsTransferTrace emisTmsTransferTrace = new EmisTmsTransferTrace();
|
||||
emisTmsTransferTrace.getParams().put("needTrace", "1");
|
||||
List<EmisTmsTransferTrace> list = emisTmsTransferTraceMapper.selectEmisTmsTransferTraceList(emisTmsTransferTrace);
|
||||
if(!CollectionUtil.isEmpty(list)){
|
||||
for(EmisTmsTransferTrace dt:list){
|
||||
log.error("===>Start 三方物流跟踪单号:"+dt.getBillCode()+","+dt.getTransferExpress()+" "+dt.getTransferBillCode());
|
||||
EmisTmsTransferTrace rstUpd=Kd100Helper.queryTmsTransferTraceByKd100(dt);
|
||||
// 如果已签收,需要做签收扫描
|
||||
if(WaybillStatus.SIGNED.equals(rstUpd.getLastWaybliiStatus())){
|
||||
// 查询转件的站点
|
||||
EmisWaybillTransfer qEmisWaybillTransfer=new EmisWaybillTransfer();
|
||||
qEmisWaybillTransfer.setBillCode(rstUpd.getBillCode());
|
||||
List<EmisWaybillTransfer> listTransfer = emisWaybillTransferMapper.selectEmisWaybillTransferList(qEmisWaybillTransfer);
|
||||
if(!CollectionUtil.isEmpty(listTransfer)) {
|
||||
EmisWaybillTransfer trans0=listTransfer.get(0);
|
||||
updateSignStatus(rstUpd.getBillCode(),"转件签收",trans0.getCreateBy(),trans0.getCreateSite(),rstUpd.getLastTraceDate(),"");
|
||||
}
|
||||
}
|
||||
emisTmsTransferTraceMapper.updateEmisTmsTransferTrace(rstUpd);
|
||||
log.error("===>End 三方物流跟踪单号:"+dt.getTraceInfo());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据billCode 获取单号信息
|
||||
|
||||
@ -0,0 +1,78 @@
|
||||
/**
|
||||
* @Project: emis
|
||||
* @Title: EmisTmsTransferTraceService.java
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
* @Copyright: ShangHai Duta 2022 All rights reserved.
|
||||
* @version v1.0
|
||||
* @Description: <p> 转件物流信息记录表 服务类接口 </p>
|
||||
*/
|
||||
package com.xdadan.erp.emis.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsTransferTrace;
|
||||
|
||||
/**
|
||||
* @ClassName EmisTmsTransferTraceService
|
||||
* @Description 转件物流信息记录表
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
*/
|
||||
public interface IEmisTmsTransferTraceService
|
||||
{
|
||||
/**
|
||||
* 主键查询
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public EmisTmsTransferTrace selectEmisTmsTransferTraceById(Long id);
|
||||
|
||||
/**
|
||||
* 查询转件物流信息记录表列表
|
||||
*
|
||||
* @param emisTmsTransferTrace 转件物流信息记录表
|
||||
* @return 转件物流信息记录表集合
|
||||
*/
|
||||
public List<EmisTmsTransferTrace> selectEmisTmsTransferTraceList(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
|
||||
/**
|
||||
* 检查是否重复
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return 数量
|
||||
*/
|
||||
public int checkUnique(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
/**
|
||||
* 新增转件物流信息记录表
|
||||
*
|
||||
* @param emisTmsTransferTrace 转件物流信息记录表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertEmisTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
/**
|
||||
* 修改转件物流信息记录表
|
||||
*
|
||||
* @param emisTmsTransferTrace 转件物流信息记录表
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateEmisTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace);
|
||||
|
||||
/**
|
||||
* 批量删除转件物流信息记录表
|
||||
*
|
||||
* @param ids 需要删除的转件物流信息记录表主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisTmsTransferTraceByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除转件物流信息记录表信息
|
||||
*
|
||||
* @param id 转件物流信息记录表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisTmsTransferTraceById(Long id);
|
||||
}
|
||||
@ -13,6 +13,7 @@ package com.xdadan.erp.emis.service.impl;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.xdadan.erp.common.core.domain.entity.SysUser;
|
||||
import com.xdadan.erp.common.utils.DateUtils;
|
||||
import com.xdadan.erp.common.utils.DictUtils;
|
||||
@ -26,7 +27,9 @@ 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.mapper.EmisTmsTransferTraceMapper;
|
||||
import com.xdadan.erp.emis.service.EmisBaseService;
|
||||
import com.xdadan.erp.emis.utils.Kd100Helper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -51,6 +54,8 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
|
||||
|
||||
@Autowired
|
||||
private EmisTmsPackDtlMapper emisTmsPackDtlMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 查询TMS扫描记录
|
||||
*
|
||||
@ -495,7 +500,7 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
|
||||
changeWaybillCurrentSite(emisTmsScanRecord.getBillCode(),emisTmsScanRecord.getScanSiteCode());
|
||||
|
||||
}
|
||||
// 转单扫描
|
||||
// 转件扫描
|
||||
else if(ScanType.TRANSFER.opCode.equals(scanType)){
|
||||
// "billCode": "T001,T002,T002",
|
||||
// "transferCode": "转单同行快递代码",
|
||||
@ -510,6 +515,8 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
|
||||
|
||||
emisTmsScanRecord.setPreOrNextStation(destCity);
|
||||
|
||||
emisTmsScanRecord.setRemark(transferCode+":"+transferBillcode +" "+destCity);
|
||||
|
||||
// 更新waybill做转单
|
||||
wayBillTransfer(emisTmsScanRecord.getBillCode(),transferCode,transferBillcode,destCity);
|
||||
|
||||
@ -709,7 +716,14 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
|
||||
*/
|
||||
@Override
|
||||
public List<EmisTmsScanRecord> getTraceListByBillCode(String billCode) {
|
||||
return emisTmsScanRecordMapper.selectTraceListByBillCode(billCode);
|
||||
|
||||
List<EmisTmsScanRecord> listTraces = emisTmsScanRecordMapper.selectTraceListByBillCode(billCode);
|
||||
List<EmisTmsScanRecord> transferList=cvtTransferTraceToScanRecord(billCode);
|
||||
if(!CollectionUtil.isEmpty(transferList)){
|
||||
listTraces.addAll(transferList);
|
||||
}
|
||||
|
||||
return listTraces;
|
||||
}
|
||||
|
||||
// 获取物流跟踪列表
|
||||
|
||||
@ -0,0 +1,117 @@
|
||||
/**
|
||||
* @Project: emis
|
||||
* @Title: EmisTmsTransferTraceServiceImpl.java
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
* @Copyright: ShangHai Duta 2022 All rights reserved.
|
||||
* @version v1.0
|
||||
* @Description: <p> 转件物流信息记录表 实体类 </p>
|
||||
*/
|
||||
|
||||
package com.xdadan.erp.emis.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsTransferTrace;
|
||||
import com.xdadan.erp.emis.mapper.EmisTmsTransferTraceMapper;
|
||||
import com.xdadan.erp.emis.service.IEmisTmsTransferTraceService;
|
||||
|
||||
/**
|
||||
* 转件物流信息记录表Service业务层处理
|
||||
*
|
||||
* @author linfso
|
||||
* @date 2024-06-13 08:54:23
|
||||
*/
|
||||
@Service
|
||||
public class EmisTmsTransferTraceServiceImpl implements IEmisTmsTransferTraceService
|
||||
{
|
||||
@Autowired
|
||||
private EmisTmsTransferTraceMapper emisTmsTransferTraceMapper;
|
||||
|
||||
/**
|
||||
* 查询转件物流信息记录表
|
||||
*
|
||||
* @param id 转件物流信息记录表主键
|
||||
* @return 转件物流信息记录表
|
||||
*/
|
||||
@Override
|
||||
public EmisTmsTransferTrace selectEmisTmsTransferTraceById(Long id)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.selectEmisTmsTransferTraceById(id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询转件物流信息记录表列表
|
||||
*
|
||||
* @param emisTmsTransferTrace 转件物流信息记录表
|
||||
* @return 转件物流信息记录表
|
||||
*/
|
||||
@Override
|
||||
public List<EmisTmsTransferTrace> selectEmisTmsTransferTraceList(EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.selectEmisTmsTransferTraceList(emisTmsTransferTrace);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否重复
|
||||
*
|
||||
* @param emisTmsTransferTrace
|
||||
* @return 数量
|
||||
*/
|
||||
@Override
|
||||
public int checkUnique(EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.checkUnique(emisTmsTransferTrace);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增转件物流信息记录表
|
||||
*
|
||||
* @param emisTmsTransferTrace 转件物流信息记录表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertEmisTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.insertEmisTmsTransferTrace(emisTmsTransferTrace);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改转件物流信息记录表
|
||||
*
|
||||
* @param emisTmsTransferTrace 转件物流信息记录表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateEmisTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.updateEmisTmsTransferTrace(emisTmsTransferTrace);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除转件物流信息记录表
|
||||
*
|
||||
* @param ids 需要删除的转件物流信息记录表主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteEmisTmsTransferTraceByIds(Long[] ids)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.deleteEmisTmsTransferTraceByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除转件物流信息记录表信息
|
||||
*
|
||||
* @param id 转件物流信息记录表主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteEmisTmsTransferTraceById(Long id)
|
||||
{
|
||||
return emisTmsTransferTraceMapper.deleteEmisTmsTransferTraceById(id);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
package com.xdadan.erp.emis.task;
|
||||
|
||||
import com.xdadan.erp.common.core.redis.RedissonService;
|
||||
import com.xdadan.erp.emis.service.EmisBaseService;
|
||||
import com.xdadan.erp.emis.service.IEmisTmsTransferTraceService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Configurable;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
|
||||
@Slf4j
|
||||
@Configurable
|
||||
@EnableScheduling
|
||||
@EnableAsync
|
||||
@Component
|
||||
public class LogisticTask {
|
||||
private int count=0;
|
||||
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
|
||||
|
||||
@Autowired
|
||||
RedissonService redissonService;
|
||||
|
||||
@Autowired
|
||||
private EmisBaseService emisBaseService;
|
||||
|
||||
|
||||
/**
|
||||
* 自动查询转件物流信息
|
||||
*/
|
||||
@Async
|
||||
@Scheduled(fixedRate = 1000L * 60 * 5)
|
||||
public void autoQueryTransferInfo() {
|
||||
String lockKey="autoQueryTransferInfo";
|
||||
log.error("autoQueryTransferInfo start");
|
||||
|
||||
// 加锁查询
|
||||
redissonService.lock(lockKey,300);
|
||||
try{
|
||||
emisBaseService.doTransferTraceUpdate();
|
||||
}catch(Exception ex){
|
||||
ex.printStackTrace();
|
||||
log.error("autoQueryTransferInfo exception:"+ex.getMessage());
|
||||
}
|
||||
log.error("autoQueryTransferInfo end");
|
||||
|
||||
redissonService.unlock(lockKey);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,275 @@
|
||||
package com.xdadan.erp.emis.utils;
|
||||
|
||||
import com.xdadan.erp.emis.utils.okhttp.PersistenceCookieJar;
|
||||
import com.xdadan.erp.emis.utils.okhttp.SSLSocketClient;
|
||||
import okhttp3.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.net.ssl.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.security.KeyStore;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class HTTPHelperV3 {
|
||||
|
||||
public static final String CHARSET = "UTF-8";
|
||||
private static PersistenceCookieJar persistenceCookieJar = null;
|
||||
private static OkHttpClient clientWithCookie = null;
|
||||
static {
|
||||
|
||||
persistenceCookieJar = new PersistenceCookieJar();
|
||||
try {
|
||||
TrustManagerFactory trustManagerFactory = null;
|
||||
trustManagerFactory = TrustManagerFactory.getInstance(
|
||||
TrustManagerFactory.getDefaultAlgorithm());
|
||||
trustManagerFactory.init((KeyStore) null);
|
||||
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
|
||||
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
|
||||
throw new IllegalStateException("Unexpected default trust managers:"
|
||||
+ Arrays.toString(trustManagers));
|
||||
}
|
||||
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
sslContext.init(null, new TrustManager[]{trustManager}, null);
|
||||
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
|
||||
|
||||
clientWithCookie = new OkHttpClient.Builder()
|
||||
.connectTimeout(1000, TimeUnit.SECONDS)
|
||||
.readTimeout(30000, TimeUnit.SECONDS)
|
||||
.sslSocketFactory(sslSocketFactory, trustManager)
|
||||
.hostnameVerifier(SSLSocketClient.getHostnameVerifier())
|
||||
.cookieJar(persistenceCookieJar)
|
||||
.connectionPool(new ConnectionPool(1500, 3, TimeUnit.MINUTES))
|
||||
.build();
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Cookie> getCookies2(){
|
||||
List<Cookie> cookies = persistenceCookieJar.getCacheCookies();
|
||||
return cookies;
|
||||
}
|
||||
|
||||
public static String get(String url) throws Exception{
|
||||
return doGet(url);
|
||||
}
|
||||
|
||||
public static String post(String url, Map postData) throws Exception{
|
||||
return doPost(url, postData,null, CHARSET);
|
||||
}
|
||||
|
||||
public static String post(String url,Map postData,String contentType) throws Exception{
|
||||
Map headers = new HashMap();
|
||||
headers.put("Content-Type",contentType);
|
||||
return doPost(url, postData,headers, CHARSET);
|
||||
}
|
||||
|
||||
public static String postWithCookieAndHeader2(String url,Map postData,Map headers) throws Exception{
|
||||
return doPost(url, postData,headers, CHARSET);
|
||||
}
|
||||
|
||||
public static String postMultipartFormData(String url, Map postData,Map headers) throws Exception {
|
||||
return doUploadPost(url, postData,headers, CHARSET);
|
||||
|
||||
}
|
||||
|
||||
public static String postJson(String url,Map headers, String json) throws Exception {
|
||||
if(headers==null){
|
||||
headers=new HashMap();
|
||||
}
|
||||
headers.put("Content-Type","application/json");
|
||||
return doPostBody(url, json,headers, CHARSET);
|
||||
}
|
||||
|
||||
|
||||
public static String doGet(String url) throws IOException{
|
||||
if (StringUtils.isBlank(url)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String result = null;
|
||||
Request request = new Request.Builder().url(url).build();
|
||||
// 执行请求操作
|
||||
Response response = clientWithCookie.newCall(request).execute();
|
||||
if(response.isSuccessful()){
|
||||
result = response.body().string();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* HTTP Post 获取内容
|
||||
*
|
||||
* @param url 请求的url地址 ?之前的地址
|
||||
* @param params 请求的参数
|
||||
* @param charset 编码格式
|
||||
* @return 页面内容
|
||||
* @throws IOException
|
||||
*/
|
||||
private static String doPost(String url, Map<String, Object> params,Map<String, Object> headers, String charset) throws IOException {
|
||||
if (StringUtils.isBlank(url)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String result = null;
|
||||
FormBody.Builder builder= null;
|
||||
|
||||
if (params != null && !params.isEmpty()) {
|
||||
|
||||
builder= new FormBody.Builder();
|
||||
Iterator iter = params.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
if (entry.getValue() != null) {
|
||||
String value = entry.getValue().toString();
|
||||
builder.add((String)entry.getKey(), value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Request.Builder reqBuilder= new Request.Builder();
|
||||
// add headers
|
||||
if(headers != null) {
|
||||
if (!headers.isEmpty()) {
|
||||
Iterator iter = headers.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
String key = (String) entry.getKey();
|
||||
String val = "";
|
||||
if (entry.getValue() != null) {
|
||||
val = entry.getValue().toString();
|
||||
}
|
||||
reqBuilder.addHeader(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RequestBody body = builder.build();
|
||||
// 创建请求方式
|
||||
Request request = reqBuilder.url(url).post(body).build();;
|
||||
|
||||
// 执行请求操作
|
||||
Response response = clientWithCookie.newCall(request).execute();
|
||||
if(response.isSuccessful()){
|
||||
result = response.body().string();
|
||||
}
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static String doPostBody(String url, String body,Map<String, String> headers, String charset) throws IOException {
|
||||
if (StringUtils.isBlank(url)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String result = null;
|
||||
// String contentType ="application/json; charset="+charset;
|
||||
String contentType ="application/x-www-form-urlencoded; charset="+charset;
|
||||
Request.Builder reqBuilder= new Request.Builder();
|
||||
// add headers
|
||||
if(headers != null) {
|
||||
if (!headers.isEmpty()) {
|
||||
Iterator iter = headers.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
String key = (String) entry.getKey();
|
||||
|
||||
|
||||
String val = "";
|
||||
if (entry.getValue() != null) {
|
||||
val = entry.getValue().toString();
|
||||
}
|
||||
if("content-type".equals(key.toLowerCase())){
|
||||
contentType=val;
|
||||
}
|
||||
reqBuilder.addHeader(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RequestBody requestBody= RequestBody.create(MediaType.parse(contentType),body);
|
||||
// 创建请求方式
|
||||
Request request = reqBuilder.url(url).post(requestBody).build();;
|
||||
|
||||
// 执行请求操作
|
||||
Response response = clientWithCookie.newCall(request).execute();
|
||||
if(response.isSuccessful()){
|
||||
result = response.body().string();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* HTTP Upload 获取内容
|
||||
*
|
||||
* @param url 请求的url地址 ?之前的地址
|
||||
* @param params 请求的参数
|
||||
* @param charset 编码格式
|
||||
* @return 页面内容
|
||||
* @throws IOException
|
||||
*/
|
||||
private static String doUploadPost(String url, Map<String, Object> params,Map<String, String> headers, String charset) throws IOException {
|
||||
if (StringUtils.isBlank(url)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String result = null;
|
||||
|
||||
Request.Builder reqBuilder= new Request.Builder();
|
||||
// add headers
|
||||
if(headers != null) {
|
||||
if (!headers.isEmpty()) {
|
||||
Iterator iter = headers.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
String key = (String) entry.getKey();
|
||||
String val = "";
|
||||
if (entry.getValue() != null) {
|
||||
val = entry.getValue().toString();
|
||||
}
|
||||
reqBuilder.addHeader(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MultipartBody.Builder mutiBuilder = new MultipartBody.Builder();
|
||||
// 添加请求类型
|
||||
// mutiBuilder.setType(MediaType.parse("multipart/form-data"));
|
||||
mutiBuilder.setType(MultipartBody.ALTERNATIVE);
|
||||
// 创建请求的请求体
|
||||
if (params != null && !params.isEmpty()) {
|
||||
MediaType type= MediaType.parse("application/octet-stream");
|
||||
Iterator iter = params.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
if (entry.getValue() != null) {
|
||||
Object object = entry.getValue();
|
||||
if (object instanceof File) {
|
||||
File file = (File) object;
|
||||
mutiBuilder.addFormDataPart((String)entry.getKey(), file.getName(), RequestBody.create(type, file));
|
||||
} else {
|
||||
mutiBuilder.addFormDataPart((String)entry.getKey(), object.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
RequestBody body = mutiBuilder.build();
|
||||
Request request = reqBuilder.url(url).post(body).build();;
|
||||
|
||||
// 执行请求操作
|
||||
Response response = clientWithCookie.newCall(request).execute();
|
||||
if(response.isSuccessful()){
|
||||
result = response.body().string();
|
||||
}
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,123 @@
|
||||
package com.xdadan.erp.emis.utils;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsScanRecord;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsTransferTrace;
|
||||
import com.xdadan.erp.emis.domain.EmisWaybill;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 快递100 Api
|
||||
* 请求头必须添加: "Content-type","application/x-www-form-urlencoded;charset=UTF-8”
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
@Component
|
||||
@Slf4j
|
||||
public class Kd100Helper {
|
||||
|
||||
|
||||
private static final String POLL_QUERY_URL = "https://poll.kuaidi100.com/poll/query.do";
|
||||
|
||||
// 授权码,授权码,请到快递100页面申请企业版接口获取
|
||||
private static final String KEY = "UpQfyYaY2889";
|
||||
private static final String CUSTOMER = "61B9DD3182821BBC65F4D79A62F378F9";
|
||||
|
||||
/**
|
||||
* 快递100 物流查询
|
||||
* @param com 快递公司编码
|
||||
* @param num 快递单号
|
||||
* @return data
|
||||
*/
|
||||
public static String queryTraceByMainNoAndCom(String mainNo, String com) throws Exception {
|
||||
|
||||
Map<String, String> param = new HashMap<>();
|
||||
param.put("com", com);//快递公司编码
|
||||
param.put("num", mainNo);//快递单号
|
||||
param.put("phone", "1234");
|
||||
param.put("from", "");
|
||||
param.put("to", "");
|
||||
param.put("show", "0");
|
||||
param.put("order", "desc");
|
||||
param.put("resultv2", "1");
|
||||
String mgsData = JSON.toJSONString(param);
|
||||
Map<String, String> postDataMap = new HashMap<>();
|
||||
postDataMap.put("customer", CUSTOMER); // 授权码,请到快递100页面申请企业版接口获取
|
||||
postDataMap.put("sign", genDigest(mgsData, KEY, CUSTOMER)); // 数字签名
|
||||
postDataMap.put("param", mgsData);
|
||||
|
||||
String allResult=HTTPHelperV3.post(POLL_QUERY_URL,postDataMap,"application/x-www-form-urlencoded");
|
||||
|
||||
return allResult;
|
||||
}
|
||||
|
||||
|
||||
public static EmisTmsTransferTrace queryTmsTransferTraceByKd100(EmisTmsTransferTrace emisTmsTransferTrace) {
|
||||
|
||||
String rstStr= null;
|
||||
try {
|
||||
emisTmsTransferTrace.setChId("KD100");
|
||||
rstStr = queryTraceByMainNoAndCom(emisTmsTransferTrace.getTransferBillCode(),emisTmsTransferTrace.getTransferExpress());
|
||||
JSONObject jsonObject=JSONObject.parseObject(rstStr);
|
||||
emisTmsTransferTrace.setTraceInfo(rstStr);
|
||||
/*
|
||||
快递单当前状态,默认为0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签等10个基础物流状态,如需要返回高级物流状态,请参考 resultv2 传值
|
||||
*/
|
||||
String state=jsonObject.getString("state");
|
||||
if("3".equals(state)){
|
||||
emisTmsTransferTrace.setLastWaybliiStatus("50");
|
||||
}
|
||||
|
||||
JSONArray steps=jsonObject.getJSONArray("data");
|
||||
if(steps!=null && steps.size()>0){
|
||||
JSONObject lastObj = steps.getJSONObject(0);
|
||||
emisTmsTransferTrace.setLastTraceDate(new Date(lastObj.getString("time")));
|
||||
emisTmsTransferTrace.setRemark(lastObj.getString("context"));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return emisTmsTransferTrace;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 业务数据加密 --> param + key + customer 的顺序进行MD5加密(注意加密后字符串一定要转大写)
|
||||
* @param timestamp
|
||||
* @param mgsData
|
||||
* @param md5key
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private static String genDigest(String mgsData, String key, String customer) {
|
||||
return DigestUtils.md5Hex(mgsData + key + customer).toUpperCase();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String rst= null;
|
||||
try {
|
||||
rst = queryTraceByMainNoAndCom("SF1532297522428","shunfeng");
|
||||
System.out.println(rst);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
package com.xdadan.erp.emis.utils.okhttp;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import okhttp3.Cookie;
|
||||
import okhttp3.CookieJar;
|
||||
import okhttp3.HttpUrl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PersistenceCookieJar implements CookieJar {
|
||||
|
||||
List<Cookie> cache = new ArrayList<>();
|
||||
|
||||
public List<Cookie> getCacheCookies(){
|
||||
return cache;
|
||||
}
|
||||
|
||||
// Http请求结束,Response中有Cookie时候回调
|
||||
@Override
|
||||
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
|
||||
System.out.println(JSON.toJSONString(cookies));
|
||||
//内存中缓存Cookie
|
||||
cache.addAll(cookies);
|
||||
}
|
||||
|
||||
//Http发送请求前回调,Request中设置Cookie
|
||||
@Override
|
||||
public List<Cookie> loadForRequest(HttpUrl url) {
|
||||
//过期的Cookie
|
||||
List<Cookie> invalidCookies = new ArrayList<>();
|
||||
//有效的Cookie
|
||||
List<Cookie> validCookies = new ArrayList<>();
|
||||
|
||||
for (Cookie cookie : cache) {
|
||||
|
||||
if (cookie.expiresAt() < System.currentTimeMillis()) {
|
||||
//判断是否过期
|
||||
invalidCookies.add(cookie);
|
||||
} else if (cookie.matches(url)) {
|
||||
//匹配Cookie对应url
|
||||
validCookies.add(cookie);
|
||||
}
|
||||
}
|
||||
|
||||
//缓存中移除过期的Cookie
|
||||
cache.removeAll(invalidCookies);
|
||||
|
||||
//返回List<Cookie>让Request进行设置
|
||||
return validCookies;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package com.xdadan.erp.emis.utils.okhttp;
|
||||
|
||||
import javax.net.ssl.*;
|
||||
import java.security.SecureRandom;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
|
||||
public class SSLSocketClient {
|
||||
|
||||
//获取这个SSLSocketFactory
|
||||
public static SSLSocketFactory getSSLSocketFactory() {
|
||||
try {
|
||||
// SSLContext sslContext = SSLContext.getInstance("SSL");
|
||||
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
|
||||
sslContext.init(null, getTrustManager(), new SecureRandom());
|
||||
return sslContext.getSocketFactory();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
//获取TrustManager
|
||||
private static TrustManager[] getTrustManager() {
|
||||
TrustManager[] trustAllCerts = new TrustManager[]{
|
||||
new X509TrustManager() {
|
||||
@Override
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return new X509Certificate[]{};
|
||||
}
|
||||
}
|
||||
};
|
||||
return trustAllCerts;
|
||||
}
|
||||
|
||||
//获取HostnameVerifier
|
||||
public static HostnameVerifier getHostnameVerifier() {
|
||||
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
|
||||
@Override
|
||||
public boolean verify(String s, SSLSession sslSession) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
return hostnameVerifier;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xdadan.erp.emis.mapper.EmisTmsTransferTraceMapper">
|
||||
|
||||
<resultMap type="EmisTmsTransferTrace" id="EmisTmsTransferTraceResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="billCode" column="bill_code" />
|
||||
<result property="lastTraceDate" column="last_trace_date" />
|
||||
<result property="lastWaybliiStatus" column="last_wayblii_status" />
|
||||
<result property="traceInfo" column="trace_info" />
|
||||
<result property="chId" column="ch_id" />
|
||||
<result property="transferBillCode" column="transfer_bill_code" />
|
||||
<result property="transferExpress" column="transfer_express" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectEmisTmsTransferTraceVo">
|
||||
select id, bill_code, last_trace_date, last_wayblii_status, trace_info, ch_id, transfer_bill_code, transfer_express, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_transfer_trace
|
||||
</sql>
|
||||
|
||||
<select id="selectEmisTmsTransferTraceList" parameterType="EmisTmsTransferTrace" resultMap="EmisTmsTransferTraceResult">
|
||||
<include refid="selectEmisTmsTransferTraceVo"/>
|
||||
<where>
|
||||
del_flag='0'
|
||||
<if test="id != null "> and id = #{id}</if>
|
||||
<if test="billCode != null and billCode != ''"> and bill_code =#{billCode}</if>
|
||||
<if test="lastTraceDate != null "> and last_trace_date = #{lastTraceDate}</if>
|
||||
<if test="lastWaybliiStatus != null and lastWaybliiStatus != ''"> and last_wayblii_status=#{lastWaybliiStatus}</if>
|
||||
<if test="traceInfo != null and traceInfo != ''"> and trace_info like concat('%', #{traceInfo}, '%')</if>
|
||||
<if test="chId != null and chId != ''"> and ch_id like concat('%', #{chId}, '%')</if>
|
||||
<if test="transferBillCode != null and transferBillCode != ''"> and transfer_bill_code=#{transferBillCode}</if>
|
||||
<if test="transferExpress != null and transferExpress != ''"> and transfer_express=#{transferExpress}</if>
|
||||
<if test="remark != null and remark != ''"> and remark like concat('%', #{remark}, '%')</if>
|
||||
<if test="delFlag != null and delFlag != ''"> and del_flag like concat('%', #{delFlag}, '%')</if>
|
||||
<if test="createBy != null and createBy != ''"> and create_by like concat('%', #{createBy}, '%')</if>
|
||||
<if test="createTime != null "> and create_time = #{createTime}</if>
|
||||
<if test="updateBy != null and updateBy != ''"> and update_by like concat('%', #{updateBy}, '%')</if>
|
||||
<if test="updateTime != null "> and update_time = #{updateTime}</if>
|
||||
<if test="createSite != null and createSite != ''"> and create_site like concat('%', #{createSite}, '%')</if>
|
||||
<if test="updateSite != null and updateSite != ''"> and update_site like concat('%', #{updateSite}, '%')</if>
|
||||
<if test="createTime != null "> and create_time = #{createTime}</if>
|
||||
|
||||
<if test="params.beginLastTraceDate != null and params.beginLastTraceDate != ''">
|
||||
and last_trace_date <![CDATA[ >= ]]> #{params.beginLastTraceDate}
|
||||
</if>
|
||||
<if test="params.endLastTraceDate != null and params.endLastTraceDate != ''">
|
||||
and last_trace_date <![CDATA[ <= ]]> #{params.endLastTraceDate}
|
||||
</if>
|
||||
|
||||
<if test="params.needTrace != null and params.needTrace != '1'">
|
||||
and last_wayblii_status != '50'
|
||||
and DATE_SUB(CURDATE(), INTERVAL 30 DAY) <![CDATA[ <= ]]> date(last_trace_date)
|
||||
</if>
|
||||
|
||||
</where>
|
||||
order by last_trace_date asc
|
||||
</select>
|
||||
|
||||
<select id="checkUnique" parameterType="EmisTmsTransferTrace" resultType="int">
|
||||
select count(1) from emis_tms_transfer_trace
|
||||
where del_flag='0'
|
||||
and bill_code = #{billCode}
|
||||
<if test="transferExpress != null and transferExpress != ''">
|
||||
and transfer_express = #{transferExpress}
|
||||
</if>
|
||||
<if test="transferBillCode != null and transferBillCode != ''">
|
||||
and transfer_bill_code = #{transferBillCode}
|
||||
</if>
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="selectEmisTmsTransferTraceById" parameterType="Long" resultMap="EmisTmsTransferTraceResult">
|
||||
select id, bill_code, last_trace_date, last_wayblii_status, trace_info, ch_id, transfer_bill_code, transfer_express, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||
from emis_tms_transfer_trace a
|
||||
where a.id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertEmisTmsTransferTrace" parameterType="EmisTmsTransferTrace" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into emis_tms_transfer_trace
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">id,</if>
|
||||
<if test="billCode != null and billCode != ''">bill_code,</if>
|
||||
<if test="lastTraceDate != null">last_trace_date,</if>
|
||||
<if test="lastWaybliiStatus != null and lastWaybliiStatus != ''">last_wayblii_status,</if>
|
||||
<if test="traceInfo != null and traceInfo != ''">trace_info,</if>
|
||||
<if test="chId != null and chId != ''">ch_id,</if>
|
||||
<if test="transferBillCode != null and transferBillCode != ''">transfer_bill_code,</if>
|
||||
<if test="transferExpress != null and transferExpress != ''">transfer_express,</if>
|
||||
<if test="remark != null and remark != ''">remark,</if>
|
||||
<if test="delFlag != null and delFlag != ''">del_flag,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="createSite != null and createSite != ''">create_site,</if>
|
||||
<if test="updateSite != null and updateSite != ''">update_site,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">#{id},</if>
|
||||
<if test="billCode != null and billCode != ''">#{billCode},</if>
|
||||
<if test="lastTraceDate != null">#{lastTraceDate},</if>
|
||||
<if test="lastWaybliiStatus != null and lastWaybliiStatus != ''">#{lastWaybliiStatus},</if>
|
||||
<if test="traceInfo != null and traceInfo != ''">#{traceInfo},</if>
|
||||
<if test="chId != null and chId != ''">#{chId},</if>
|
||||
<if test="transferBillCode != null and transferBillCode != ''">#{transferBillCode},</if>
|
||||
<if test="transferExpress != null and transferExpress != ''">#{transferExpress},</if>
|
||||
<if test="remark != null and remark != ''">#{remark},</if>
|
||||
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null and updateBy != ''">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="createSite != null and createSite != ''">#{createSite},</if>
|
||||
<if test="updateSite != null and updateSite != ''">#{updateSite},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateEmisTmsTransferTrace" parameterType="EmisTmsTransferTrace">
|
||||
update emis_tms_transfer_trace
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="billCode != null and billCode != ''">bill_code = #{billCode},</if>
|
||||
<if test="lastTraceDate != null">last_trace_date = #{lastTraceDate},</if>
|
||||
<if test="lastWaybliiStatus != null and lastWaybliiStatus != ''">last_wayblii_status = #{lastWaybliiStatus},</if>
|
||||
<if test="traceInfo != null and traceInfo != ''">trace_info = #{traceInfo},</if>
|
||||
<if test="chId != null and chId != ''">ch_id = #{chId},</if>
|
||||
<if test="transferBillCode != null and transferBillCode != ''">transfer_bill_code = #{transferBillCode},</if>
|
||||
<if test="transferExpress != null and transferExpress != ''">transfer_express = #{transferExpress},</if>
|
||||
<if test="remark != null and remark != ''">remark = #{remark},</if>
|
||||
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
|
||||
<if test="createBy != null and createBy != ''">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="createSite != null and createSite != ''">create_site = #{createSite},</if>
|
||||
<if test="updateSite != null and updateSite != ''">update_site = #{updateSite},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteEmisTmsTransferTraceById" parameterType="Long">
|
||||
delete from emis_tms_transfer_trace where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteEmisTmsTransferTraceByIds" parameterType="String">
|
||||
delete from emis_tms_transfer_trace where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue
Block a user