Commit cff22b08 authored by Allen Chen's avatar Allen Chen

commit

parent 5a31f746
package org.ta.pdd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("exp_mail")
public class ExpMailEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "remarks")
private String remarks;
@TableField(value = "status")
private int status;
/**
* 快递公司编号(选填)
*/
@TableField(value = "expressCode")
private String expressCode;
/**
* 运单号(必填)
*/
@TableField(value = "mailNo")
private String mailNo;
/**
* 照片(选填)
*/
@TableField(value = "url")
private String url;
}
package org.ta.pdd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("exp_mail_logs")
public class ExpMailLogsEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "remarks")
private String remarks;
@TableField(value = "status")
private int status;
/**
* 运单号(必填)
*/
@TableField(value = "mailNo")
private String mailNo;
/**
* 操作人(必填)
*/
@TableField(value = "operator")
private String operator;
/**
* 操作时间(必填)
*/
@TableField(value = "created")
private Date created;
}
package org.ta.pdd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@TableName("pick_record")
@Data
public class PickRecordEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "created")
private Date created;
@TableField(value = "creator")
private String creator;
@TableField(value = "orderCode")
private String orderCode;
@TableField(value = "type")
private Integer type;
@TableField(value = "receiver")
private String receiver;
@TableField(value = "receiveTime")
private Date receiveTime;
@TableField(value = "finisher")
private String finisher;
@TableField(value = "finishTime")
private Date finishTime;
}
......@@ -88,7 +88,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
......@@ -164,6 +163,11 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
......
package org.ta.pddserver.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.models.OpenAPI;
import jakarta.annotation.Resource;
import jakarta.annotation.security.RolesAllowed;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.ta.pdd.entity.*;
import org.ta.pddserver.config.PddAPIConfig;
import org.ta.pddserver.model.api.request.*;
import org.ta.pddserver.model.api.response.StorageListResponse;
import org.ta.pddserver.model.api.response.StorageResponse;
import org.ta.pddserver.model.enums.MailNoStatusEnum;
import org.ta.pddserver.model.enums.OrderRejectCode;
import org.ta.pddserver.model.enums.StatusEnum;
import org.ta.pddserver.model.pddjy.request.JYBaseRequestModel;
import org.ta.pddserver.model.pddjy.request.PddServiceConsoCoBizActionNotifyRequest;
import org.ta.pddserver.model.pddjy.request.PddServiceConsoFirstBizActionNotifyRequest;
import org.ta.pddserver.model.pddjy.request.PddServiceConsoInboundRequest;
import org.ta.pddserver.service.impl.*;
import org.ta.pddserver.serviceutil.MailNoStatusOperator;
import org.ta.pddserver.utils.*;
import java.util.*;
@RestController
@RequestMapping("/work")
@Slf4j
public class FirstWorkController {
@Resource
MailNoStatusOperator mailNoStatusOperator;
@Resource
LogOrderMailDetailImpl logOrderMailDetailImpl;
@Resource
LogOrderImpl logOrderImpl;
@Resource
LogOrderMailDetailIoImpl logOrderMailDetailIoImpl;
@Resource
StorageImpl storageImpl;
@Resource
LogsMailScanImpl logsMailScanImpl;
@Resource
ShelvesImpl shelvesImpl;
@Resource
UnpackNoticeImpl unpackNoticeImpl;
@Resource
CollectOrderImpl collectOrderImpl;
@Resource
OutboundNoticeImpl outboundNoticeImpl;
@Resource
CollectMailDetailImpl collectMailDetailImpl;
@Resource
PackageDetailImpl packageDetailImpl;
@Resource
LogOrderPackageImpl logOrderPackageImpl;
@Resource
PackageNoticeImpl packageNoticeImpl;
@Autowired
private ExpMailLogsImpl expMailLogsImpl;
@Resource
PickRecordImpl pickRecordImpl;
/* 查询一段包裹信息 */
@Operation(
summary = "查询一段包裹信息",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/queryLogMail")
public JSONObject queryLogMail(HttpServletRequest request, @RequestBody QueryLogMailRequest queryLogMailRequest) {
String mailNo = queryLogMailRequest.getMailNo();
logsMailScanImpl.makeLog(mailNo, queryLogMailRequest.getAction());
LogOrderMailDetailEntity mailDetailEntity = logOrderMailDetailImpl.getAllInfoByMailNo(mailNo);
if (mailDetailEntity == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到包裹信息");
}
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(mailDetailEntity.getLogisticsOrderCode());
Map<String, Object> map = new HashMap<>();
map.put("mail", mailDetailEntity);
map.put("logOrder", logOrderEntity);
map.put("list", logOrderMailDetailImpl.getListByCode(mailDetailEntity.getLogisticsOrderCode()));
map.put("status", mailNoStatusOperator.getMailByMailNo(mailNo));
return JsonResponse.generateLocalCommonSuccessResponse(map, "查询成功");
}
/* 一段签收 */
@Operation(
summary = "一段签收",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/receive")
public JSONObject receive(HttpServletRequest request, @RequestBody ReceiveRequest receiveRequest) {
logsMailScanImpl.makeLog(receiveRequest.getMailNo(), "SIGN");
LogOrderMailDetailEntity mailDetailEntity = logOrderMailDetailImpl.getAllInfoByMailNo(receiveRequest.getMailNo());
if (mailDetailEntity == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到需签收包裹");
}
String msg = mailNoStatusOperator.checkCanHandle(receiveRequest.getMailNo(), MailNoStatusEnum.SIGNED);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
String action = "warehouse_sign";
PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
notifyRequest.setLogisticsOrderCode(mailDetailEntity.getLogisticsOrderCode());
notifyRequest.setBizAction(action);
PddServiceConsoFirstBizActionNotifyRequest.Result notifyResult = new PddServiceConsoFirstBizActionNotifyRequest.Result();
notifyRequest.setMailNo(mailDetailEntity.getMailNo());
notifyRequest.setExpressCode(mailDetailEntity.getExpressCode());
notifyRequest.setBizActionDesc("仓库签收");
notifyResult.setCode(0);
notifyRequest.setResult(notifyResult);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.first.biz.action.notify");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
//更新log_order_mail_detail
Boolean result = logOrderMailDetailImpl.updateByMailNo(mailDetailEntity.getMailNo(), StatusEnum.SIGNED.getCode());
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
logOrderMailDetailIoEntity.setStatus(StatusEnum.SIGNED.getCode());
logOrderMailDetailIoEntity.setAction("RECEIVE");
logOrderMailDetailIoEntity.setMailNo(mailDetailEntity.getMailNo());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailDetailEntity.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailDetailEntity.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
mailNoStatusOperator.changeStatus(mailDetailEntity.getMailNo(), MailNoStatusEnum.SIGNED);
return JsonResponse.generateLocalCommonSuccessResponse(true, "签收成功");
}
/* 一段拒收 */
@Operation(
summary = "一段拒收",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/reject")
public JSONObject reject(HttpServletRequest request, @RequestBody ReceiveRequest receiveRequest) {
logsMailScanImpl.makeLog(receiveRequest.getMailNo(), "REJECT");
LogOrderMailDetailEntity mailDetailEntity = logOrderMailDetailImpl.getAllInfoByMailNo(receiveRequest.getMailNo());
if (mailDetailEntity == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到需签收包裹");
}
String msg = mailNoStatusOperator.checkCanHandle(receiveRequest.getMailNo(), MailNoStatusEnum.REJECTED);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
String action = "warehouse_reject_sign";
PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
notifyRequest.setLogisticsOrderCode(mailDetailEntity.getLogisticsOrderCode());
notifyRequest.setBizAction(action);
PddServiceConsoFirstBizActionNotifyRequest.Result notifyResult = new PddServiceConsoFirstBizActionNotifyRequest.Result();
notifyRequest.setMailNo(mailDetailEntity.getMailNo());
notifyRequest.setExpressCode(mailDetailEntity.getExpressCode());
notifyRequest.setBizActionDesc("仓库拒签");
notifyResult.setCode(receiveRequest.getCode());
notifyResult.setDesc(OrderRejectCode.getByCode(receiveRequest.getCode()).getDesc());
notifyResult.setRemark(OrderRejectCode.getByCode(receiveRequest.getCode()).getRemark());
if (receiveRequest.getLength() != null && receiveRequest.getLength() > 0) {
notifyRequest.setPackageInfo(new PddServiceConsoFirstBizActionNotifyRequest.PackageInfo());
notifyRequest.getPackageInfo().setWeight((long) PddJYPriceTool.calculateWeight((int) receiveRequest.getLength().longValue(), (int) receiveRequest.getWidth().longValue(), (int) receiveRequest.getHeight().longValue(), (int) receiveRequest.getWeight().longValue(), true));
notifyRequest.getPackageInfo().setActualWeight(receiveRequest.getWeight());
notifyRequest.getPackageInfo().setLength(receiveRequest.getLength());
notifyRequest.getPackageInfo().setWidth(receiveRequest.getWidth());
notifyRequest.getPackageInfo().setHeight(receiveRequest.getHeight());
}
notifyRequest.setResult(notifyResult);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.first.biz.action.notify");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
//更新log_order_mail_detail
Boolean result = logOrderMailDetailImpl.updateByMailNo(mailDetailEntity.getMailNo(), StatusEnum.REJECTED.getCode());
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
logOrderMailDetailIoEntity.setStatus(StatusEnum.REJECTED.getCode());
logOrderMailDetailIoEntity.setAction("REJECT");
logOrderMailDetailIoEntity.setMailNo(mailDetailEntity.getMailNo());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailDetailEntity.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailDetailEntity.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
mailNoStatusOperator.changeStatus(mailDetailEntity.getMailNo(), MailNoStatusEnum.REJECTED);
return JsonResponse.generateLocalCommonSuccessResponse(true, "拒签成功");
}
/* 一段入库*/
@Operation(
summary = "入库",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/inBound")
public JSONObject inBound(HttpServletRequest request, @RequestBody InBoundRequest inBoundRequest) {
logsMailScanImpl.makeLog(inBoundRequest.getMailNo(), "INBOUND");
LogOrderMailDetailEntity mailNoResponse = logOrderMailDetailImpl.getByMailNo(inBoundRequest.getMailNo());
if (mailNoResponse == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到需入库包裹");
}
String msg = mailNoStatusOperator.checkCanHandle(inBoundRequest.getMailNo(), MailNoStatusEnum.INBOUND);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
PddServiceConsoInboundRequest notifyRequest = new PddServiceConsoInboundRequest();
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(mailNoResponse.getLogisticsOrderCode());
int num = logOrderMailDetailImpl.getInboundedCountByOrderCode(mailNoResponse.getLogisticsOrderCode());
num += 1;
notifyRequest.setPackageQuantity(num);
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
if (num >= logOrderEntity.getPackageQuantity()) {
notifyRequest.setStatus("FULL_INBOUND");
} else {
notifyRequest.setStatus("PART_INBOUND");
}
notifyRequest.setPackageInfo(new PddServiceConsoInboundRequest.PackageInfo());
notifyRequest.getPackageInfo().setMailNo(mailNoResponse.getMailNo());
notifyRequest.getPackageInfo().setExpressCode(mailNoResponse.getExpressCode());
notifyRequest.getPackageInfo().setLength(inBoundRequest.getLength());
notifyRequest.getPackageInfo().setHeight(inBoundRequest.getHeight());
notifyRequest.getPackageInfo().setWidth(inBoundRequest.getWidth());
notifyRequest.getPackageInfo().setActualWeight(inBoundRequest.getWeight());
notifyRequest.getPackageInfo().setWeight((long) PddJYPriceTool.calculateWeight(inBoundRequest.getLength().intValue(), inBoundRequest.getWidth().intValue(), inBoundRequest.getHeight().intValue(), inBoundRequest.getWeight().intValue(), true));
notifyRequest.getPackageInfo().setGoodsType(inBoundRequest.getGoodsType());
notifyRequest.setResult(new PddServiceConsoInboundRequest.Result());
notifyRequest.getResult().setCode(0);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.inbound");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
time += time % 5; // 延时4秒内
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
logOrderMailDetailIoEntity.setMailNo(inBoundRequest.getMailNo());
logOrderMailDetailIoEntity.setStatus(StatusEnum.INBOUND.getCode());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailNoResponse.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoEntity.setAction("INBOUND");
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
List<LogOrderMailDetailEntity> list = logOrderMailDetailImpl.getListByMailNo(inBoundRequest.getMailNo());
for (LogOrderMailDetailEntity mailDetailEntity : list) {
//更新入库包裹状态
mailDetailEntity.setEnterTime(TimeTool.getNowDate());
mailDetailEntity.setStatus(StatusEnum.INBOUND.getCode());
mailDetailEntity.setLength(inBoundRequest.getLength().intValue());
mailDetailEntity.setWidth(inBoundRequest.getWidth().intValue());
mailDetailEntity.setHeight(inBoundRequest.getHeight().intValue());
mailDetailEntity.setWeight(inBoundRequest.getWeight().intValue());
logOrderMailDetailImpl.updateById(mailDetailEntity);
}
logOrderEntity.setNum(notifyRequest.getPackageQuantity().intValue());
//判断是否全部入库
if (notifyRequest.getStatus().equals("FULL_INBOUND")) {
//全部入库
logOrderEntity.setStatus(StatusEnum.FULLINBOUND.getCode());
} else {
logOrderEntity.setStatus(StatusEnum.PARTINBOUND.getCode());
}
logOrderImpl.updateById(logOrderEntity);
mailNoStatusOperator.changeStatus(mailNoResponse.getMailNo(), MailNoStatusEnum.INBOUND);
return JsonResponse.generateLocalCommonSuccessResponse(true, "入库成功");
}
/**
* 分配仓储位置
*
* @param request httpRequest
* @param storageRequest 分配库位请求参数
* @return 回复消息
*/
@RolesAllowed({"TEMPORARY", "WORKER", "ADMIN"})
@PostMapping("/generatePosition")
public JSONObject generatePosition(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "GENERATE-POSITION");
StorageEntity storageEntity = storageImpl.getInfoByMailNo(storageRequest.getMailNo());
if (storageEntity != null) {
return JsonResponse.generateLocalCommonSuccessResponse(storageEntity, "查询成功0");
}
//当前包裹未上架,开始分配上架
LogOrderMailDetailEntity mailNoResponse = logOrderMailDetailImpl.getAllInfoByMailNo(storageRequest.getMailNo());
if (mailNoResponse == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "1包裹无记录");
}
String msg = mailNoStatusOperator.checkCanHandle(storageRequest.getMailNo(), MailNoStatusEnum.POSITION);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
StorageEntity storageEntity2 = new StorageEntity();
// 根据集运单分配位置
storageEntity = storageImpl.getInfoByLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
if (storageEntity != null) {
storageEntity2.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
storageEntity2.setCode(storageEntity.getCode());
storageEntity2.setMailNo(mailNoResponse.getMailNo());
storageEntity2.setNum(0);
storageEntity2.setBuyerCode(storageEntity.getBuyerCode());
storageImpl.save(storageEntity2);
String[] codes = storageEntity.getCode().split("-");
shelvesImpl.updateNum(1, codes[0].substring(0, 1), Integer.parseInt(codes[0].substring(1)), Integer.parseInt(codes[1]));
mailNoStatusOperator.changeStatus(mailNoResponse.getMailNo(), MailNoStatusEnum.POSITION, storageEntity2.getCode());
return JsonResponse.generateLocalCommonSuccessResponse(storageEntity2, "分配成功1");
}
// 集运单未分配位置
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(mailNoResponse.getLogisticsOrderCode());
if (logOrderEntity == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "2入库集运单无记录");
}
// 取该会员已经存在的其他的未知
storageEntity = storageImpl.getByBuyerCode(logOrderEntity.getBuyerCode());
if (storageEntity != null) {
storageEntity2.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
storageEntity2.setCode(storageEntity.getCode());
storageEntity2.setMailNo(mailNoResponse.getMailNo());
storageEntity2.setNum(0);
storageEntity2.setBuyerCode(storageEntity.getBuyerCode());
storageImpl.save(storageEntity2);
String[] codes = storageEntity.getCode().split("-");
shelvesImpl.updateNum(1, codes[0].substring(0, 1), Integer.parseInt(codes[0].substring(1)), Integer.parseInt(codes[1]));
mailNoStatusOperator.changeStatus(mailNoResponse.getMailNo(), MailNoStatusEnum.POSITION, storageEntity2.getCode());
return JsonResponse.generateLocalCommonSuccessResponse(storageEntity2, "分配成功2");
}
ShelvesEntity shelvesEntity = shelvesImpl.getUsableOrdered();
storageEntity2.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
storageEntity2.setCode(shelvesEntity.getLevel1() + shelvesEntity.getLevel2() + "-" + shelvesEntity.getLevel3());
storageEntity2.setMailNo(mailNoResponse.getMailNo());
storageEntity2.setNum(0);
storageEntity2.setBuyerCode(logOrderEntity.getBuyerCode());
storageImpl.save(storageEntity2);
shelvesImpl.updateNum(1, shelvesEntity.getLevel1(), shelvesEntity.getLevel2(), shelvesEntity.getLevel3());
mailNoStatusOperator.changeStatus(mailNoResponse.getMailNo(), MailNoStatusEnum.POSITION, storageEntity2.getCode());
return JsonResponse.generateLocalCommonSuccessResponse(storageEntity2, "分配成功3");
}
/* 通过运单号查询存放区域准备上架 */
@PostMapping("/waitOnBoard")
public JSONObject waitOnBoard(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "WAIT-ONBOARD");
StorageResponse response = storageImpl.storageSelect(storageRequest.getMailNo());
if (response != null) {
if (response.getPlace() != null && !response.getPlace().isEmpty()) {
response.setCode(response.getCode() + '>' + response.getPlace());
}
}
return JsonResponse.generateLocalCommonSuccessResponse(response, "");
}
/**
* PDA 上架
*
* @param request httpRequest
* @param storageRequest 上架请求参数
* @return 回复消息
*/
@RolesAllowed({"TEMPORARY", "WORKER", "ADMIN"})
@PostMapping("/onBoard")
public JSONObject onBoard(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "ONBOARD");
StorageEntity storageEntity = storageImpl.getInfoByMailNo(storageRequest.getMailNo());
if (storageEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查询到商品区域信息");
}
String msg = mailNoStatusOperator.checkCanHandle(storageRequest.getMailNo(), MailNoStatusEnum.ONBOARD);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
String code = storageEntity.getCode().split("-")[0];
if (!storageRequest.getPlace().startsWith(code)) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "位置信息不匹配");
}
storageEntity.setPlace(storageRequest.getPlace());
storageImpl.updateById(storageEntity);
mailNoStatusOperator.changeStatus(storageEntity.getMailNo(), MailNoStatusEnum.ONBOARD, storageRequest.getPlace());
return JsonResponse.generateLocalCommonSuccessResponse(true, "上架成功");
}
/**
* PDA 扫码拣货
*
* @param request httpRequest
* @param storageRequest 上架请求参数
* @return 回复消息
*/
@RolesAllowed({"TEMPORARY", "WORKER", "ADMIN"})
@PostMapping("/scanPick")
public JSONObject scanPick(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "SCAN-PICK");
StorageEntity storageEntity = storageImpl.getInfoByMailNo(storageRequest.getMailNo());
if (storageEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查询到商品区域信息");
}
String msg = mailNoStatusOperator.checkCanHandle(storageRequest.getMailNo(), MailNoStatusEnum.PICKING);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
mailNoStatusOperator.changeStatus(storageEntity.getMailNo(), MailNoStatusEnum.PICKING);
return JsonResponse.generateLocalCommonSuccessResponse(storageEntity, "拣货成功");
}
/**
* PDA 扫码撤回拣货
*
* @param request httpRequest
* @param storageRequest 上架请求参数
* @return 回复消息
*/
@RolesAllowed({"TEMPORARY", "WORKER", "ADMIN"})
@PostMapping("/scanPickDel")
public JSONObject scanPickDel(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "DEL-SCAN-PICK");
StorageEntity storageEntity = storageImpl.getInfoByMailNo(storageRequest.getMailNo());
if (storageEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查询到商品区域信息");
}
String msg = mailNoStatusOperator.checkCanHandle(storageRequest.getMailNo(), MailNoStatusEnum.ONBOARD);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
mailNoStatusOperator.changeStatus(storageEntity.getMailNo(), MailNoStatusEnum.PICKING);
return JsonResponse.generateLocalCommonSuccessResponse(storageEntity, "拣货撤回成功");
}
/*拣货下架*/
@PostMapping("/storageDel")
public JSONObject storageDel(HttpServletRequest request, @RequestBody StorageDelRequest storageDelRequest) {
List<StorageListResponse> list = storageImpl.storageLists(storageDelRequest.getLogisticsOrderCode());
List<String> toMailList = new ArrayList<>();
List<StorageListResponse> toRemoveList = new ArrayList<>();
Map<String, Integer> integerMap = new HashMap<>();
if (list.size() != storageDelRequest.getMailNo().size()) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "下架包裹数量异常");
}
StorageListResponse first = list.get(0);
String ids = "(";
for (StorageListResponse lists : list) {
for (String mailNoLists : storageDelRequest.getMailNo()) {
if (lists.getMailNo().equals(mailNoLists)) {
if (integerMap.containsKey(lists.getCode())) {
integerMap.put(lists.getCode(), integerMap.get(lists.getCode()) + 1);
} else {
integerMap.put(lists.getCode(), 1);
}
toRemoveList.add(lists);
toMailList.add(mailNoLists);
ids += "'" + mailNoLists + "',";
}
}
}
ids = ids.substring(0, ids.length() - 1);
ids += ")";
list.removeAll(toRemoveList);
storageDelRequest.getMailNo().removeAll(toMailList);
if (list.size() != 0 || storageDelRequest.getMailNo().size() != 0) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "下架包裹信息异常");
}
for (StorageListResponse lists : toRemoveList) {
String msg = mailNoStatusOperator.checkCanHandle(lists.getMailNo(), MailNoStatusEnum.PICKED);
if (msg != null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", lists.getMailNo() + msg);
}
}
for (StorageListResponse lists : toRemoveList) {
logsMailScanImpl.makeLog(lists.getMailNo(), "DOWNBOARD");
mailNoStatusOperator.changeStatus(lists.getMailNo(), MailNoStatusEnum.PICKED);
}
//删除位置
storageImpl.storageDel(ids);
// 释放货架位置
for (String code: integerMap.keySet()) {
String[] codes = code.split("-");
shelvesImpl.updateNum(-1, codes[0].substring(0, 1), Integer.parseInt(codes[0].substring(1)), Integer.parseInt(codes[1]));
}
//根据type 区分修改状态
if (("pick").equals(storageDelRequest.getType())) {
// 出库拣货下架
outboundNoticeImpl.updateStatusByOrderCode(storageDelRequest.getLogisticsOrderCode(), StatusEnum.PICKDOWN.getCode());
// todo 申报拣货完成
} else {
// 拆包下架
unpackNoticeImpl.updateStatusByOrderCode(storageDelRequest.getLogisticsOrderCode(), StatusEnum.UNPACKFINISHPICK.getCode());
}
// 处理拣货单完成人
PickRecordEntity pickRecordEntity = pickRecordImpl.getByOrderCode(storageDelRequest.getLogisticsOrderCode());
String orderCode = storageDelRequest.getLogisticsOrderCode();
if (pickRecordEntity != null) {
if (pickRecordImpl.saveFinisher(pickRecordEntity)) {
if (pickRecordEntity.getType() == 2 && orderCode.startsWith("PP")) {
// 申报拣货完成
this.completePick(orderCode);
}
}
}
return JsonResponse.generateLocalCommonSuccessResponse(true, "拣货下架成功");
}
/**
* 扫码打包
*
* @param request httpRequest
* @param storageRequest 上架请求参数
* @return 回复消息
*/
@RolesAllowed({"TEMPORARY", "WORKER", "ADMIN"})
@PostMapping("/scanPacking")
public JSONObject scanPacking(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "SCAN-PACKING");
String msg = mailNoStatusOperator.checkCanHandle(storageRequest.getMailNo(), MailNoStatusEnum.PACKAGING);
if (msg != null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, msg);
}
mailNoStatusOperator.changeStatus(storageRequest.getMailNo(), MailNoStatusEnum.PACKAGING);
return JsonResponse.generateLocalCommonSuccessResponse(true, "打包扫码成功");
}
/* 打包完成 */
@PostMapping("/packageComplete")
public JSONObject packageComplete(HttpServletRequest request, @RequestBody PackageCompleteRequest completeRequest) {
List<String> mailList = new ArrayList<>();
String orderCode = completeRequest.getOrderCode();
for (PackageCompleteRequest.OutPackage outPackage : completeRequest.getOutPackageList()) {
mailList.addAll(outPackage.getOutBound());
}
for (String mailNo : mailList) {
String msg = mailNoStatusOperator.checkCanHandle(mailNo, MailNoStatusEnum.PACKAGED);
if (msg != null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", mailNo + msg);
}
}
for (String mailNo : mailList) {
logsMailScanImpl.makeLog(mailNo, "PACKAGED");
mailNoStatusOperator.changeStatus(mailNo, MailNoStatusEnum.PACKAGED);
}
boolean unpack = false;
//获取所有可出库订单
List<CollectMailDetailEntity> list = collectMailDetailImpl.getListByOrderCode(orderCode);
if (list == null || list.isEmpty()) {
unpack = true;
}
packageDetailImpl.removeByOrderCode(completeRequest.getOrderCode());
List<PackageDetailEntity> results = new ArrayList<>();
for (PackageCompleteRequest.OutPackage outPackage : completeRequest.getOutPackageList()) {
PackageDetailEntity detailEntity = new PackageDetailEntity();
detailEntity.setOrderCode(completeRequest.getOrderCode());
detailEntity.setMailNo(outPackage.getMailNo());
detailEntity.setWidth(outPackage.getWidth());
detailEntity.setHeight(outPackage.getHeight());
detailEntity.setLength(outPackage.getLength());
detailEntity.setWeight(outPackage.getWeight());
detailEntity.setInMails(JSONObject.toJSONString(outPackage.getOutBound()));
detailEntity.setPackageType(outPackage.getPackageType());
detailEntity.setOrderType(outPackage.getOrderType());
detailEntity.setOperator(SecurityContextHolder.getContext().getAuthentication().getName());
packageDetailImpl.save(detailEntity);
results.add(detailEntity);
}
if (!unpack) {
CollectOrderEntity collectOrderEntity = collectOrderImpl.getAllInfoByOrderCode(orderCode);
String info = "打包成功";
return JsonResponse.generateLocalCommonSuccessResponse(completeRequest.getOutPackageList(), info);
}
log.info("拆包单,同时发送拆包信息");
String action = "finish_unpack";
PddServiceConsoCoBizActionNotifyRequest notifyRequest = new PddServiceConsoCoBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setOrderCode(orderCode);
notifyRequest.setBizAction(action);
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
PddServiceConsoCoBizActionNotifyRequest.Result notifyResult = new PddServiceConsoCoBizActionNotifyRequest.Result();
CollectOrderEntity collectOrderEntity = new CollectOrderEntity();
UnpackNoticeEntity unpackNoticeEntity = unpackNoticeImpl.getByCode(orderCode);
notifyRequest.setBizActionDesc("拆包完成");
notifyRequest.setUnpackRemark("");
notifyResult.setCode(0);
notifyRequest.setPackageInfos(new ArrayList<>());
for (PackageCompleteRequest.OutPackage outPackage : completeRequest.getOutPackageList()) {
PddServiceConsoCoBizActionNotifyRequest.PackageInfo packageInfo = new PddServiceConsoCoBizActionNotifyRequest.PackageInfo();
packageInfo.setWeight(outPackage.getWeight());
packageInfo.setWidth(outPackage.getWidth());
packageInfo.setHeight(outPackage.getHeight());
packageInfo.setLength(outPackage.getLength());
packageInfo.setActualWeight(PddJYPriceTool.calculateWeight(outPackage.getLength(), outPackage.getWidth(), outPackage.getHeight(), outPackage.getWeight(), true));
packageInfo.setConsoType(unpackNoticeEntity.getConsoType());
packageInfo.setGoodsType(outPackage.getOrderType());
notifyRequest.getPackageInfos().add(packageInfo);
LogOrderPackageEntity logOrderPackageEntity = new LogOrderPackageEntity();
logOrderPackageEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
logOrderPackageEntity.setLogisticsOrderCode(orderCode);
logOrderPackageEntity.setPackageType(outPackage.getOrderType());
logOrderPackageEntity.setLength(outPackage.getLength());
logOrderPackageEntity.setWidth(outPackage.getWidth());
logOrderPackageEntity.setHeight(outPackage.getHeight());
logOrderPackageEntity.setWeight(outPackage.getWeight());
logOrderPackageImpl.save(logOrderPackageEntity);
PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(orderCode);
if (packageNoticeEntity != null) {
packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
packageNoticeImpl.updateById(packageNoticeEntity);
}
}
notifyRequest.setResult(notifyResult);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.co.biz.action.notify");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
// logOrderMailDetailIoEntity.setMailNo(finishUnpackRequest.getMailNo());
logOrderMailDetailIoEntity.setLogisticsOrderCode(orderCode);
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoEntity.setAction("FINISH-UNPACK");
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
return JsonResponse.generateLocalCommonSuccessResponse(completeRequest.getOutPackageList(), "打包成功且拆包成功");
}
// 拣货完成集合函数
public String completePick(String orderCode) {
PddServiceConsoCoBizActionNotifyRequest notifyRequest = new PddServiceConsoCoBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setOrderCode(orderCode);
notifyRequest.setBizAction("finish_pick");
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
PddServiceConsoCoBizActionNotifyRequest.Result notifyResult = new PddServiceConsoCoBizActionNotifyRequest.Result();
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHPICK.getCode());
notifyRequest.setBizActionDesc("拣货完成");
notifyResult.setCode(0);
notifyRequest.setResult(notifyResult);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.co.biz.action.notify");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return "拼多多上送拣货完成信息失败:" + respObject.getString("message") + ";请联系技术人员。";
}
logOrderMailDetailIoEntity.setLogisticsOrderCode(orderCode);
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoEntity.setAction("FINISH-PICK");
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
collectOrderImpl.updateStatusByOrderCode(logOrderMailDetailIoEntity.getStatus(), orderCode);
return null;
}
/**
* 修正包裹状态
*
* @param request httpRequest
* @param storageRequest 上架请求参数
* @return 回复消息
*/
@RolesAllowed({"TEMPORARY", "WORKER", "ADMIN"})
@PostMapping("/collectToPicked")
public JSONObject collectToPicked(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
mailNoStatusOperator.changeStatus(storageRequest.getMailNo(), MailNoStatusEnum.PICKED);
return JsonResponse.generateLocalCommonSuccessResponse(true, "修复成功");
}
/**
* PDA 扫码记录查询
*
* @param request httpRequest
* @param storageRequest 查询参数
* @return 回复消息
*/
@RolesAllowed({"WORKER", "ADMIN"})
@PostMapping("/scanRecordList")
public JSONObject scanRecordList(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
List<LogsMailScanEntity> list = logsMailScanImpl.getByMail(storageRequest.getMailNo());
Map<String, Object> map = new HashMap<>();
map.put("list", list);
return JsonResponse.generateLocalCommonSuccessResponse(map, "查询成功");
}
/**
* PDA 扫码记录查询
*
* @param request httpRequest
* @param storageRequest 查询参数
* @return 回复消息
*/
@RolesAllowed({"WORKER", "ADMIN"})
@PostMapping("/flowRecord")
public JSONObject flowRecord(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
Map<String, Object> map = new HashMap<>();
map.put("list", expMailLogsImpl.getByMail(storageRequest.getMailNo()));
return JsonResponse.generateLocalCommonSuccessResponse(map, "查询成功");
}
/* 通过运单号查询存放区域盘点用 */
@PostMapping("/getStorage")
public JSONObject getStorage(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
logsMailScanImpl.makeLog(storageRequest.getMailNo(), "STOCKTAKING");
StorageEntity response = storageImpl.getInfoByMailNo(storageRequest.getMailNo());
if (response == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到上架信息");
}
return JsonResponse.generateLocalCommonSuccessResponse(response, "");
}
/* 通过库位查询包裹列表 */
@PostMapping("/storageList")
public JSONObject storageList(HttpServletRequest request, @RequestBody StorageRequest storageRequest) {
List<StorageEntity> response = storageImpl.getListByPlace(storageRequest.getMailNo());
if (response == null || response.isEmpty()) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "货位未记录上架信息");
}
return JsonResponse.generateLocalCommonSuccessResponse(response, "");
}
/* 拣货接单情况 */
@Operation(
summary = "分页查询拆包列表",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/pickRecordList")
public JSONObject pickRecordList(HttpServletRequest request, @RequestBody PackageNoticeRequest packageNoticeRequest) {
return JsonResponse.generateLocalCommonSuccessResponse(pickRecordImpl.recordList(packageNoticeRequest), "");
}
}
......@@ -12,10 +12,13 @@ import org.springframework.web.bind.annotation.*;
import org.ta.pdd.entity.*;
import org.ta.pddserver.config.PddAPIConfig;
import org.ta.pddserver.model.api.request.*;
import org.ta.pddserver.model.enums.OrderRejectCode;
import org.ta.pddserver.model.enums.StatusEnum;
import org.ta.pddserver.model.pddjy.request.JYBaseRequestModel;
import org.ta.pddserver.model.pddjy.request.PddServiceConsoFirstBizActionNotifyRequest;
import org.ta.pddserver.model.pddjy.request.PddServiceConsoInboundRequest;
import org.ta.pddserver.service.impl.*;
import org.ta.pddserver.serviceutil.MailNoStatusOperator;
import org.ta.pddserver.utils.*;
import java.util.Date;
......@@ -56,6 +59,113 @@ public class OperationController {
private LogsPddDownImpl logsPddDownImpl;
@Resource
TraceObjectImpl traceObjectImpl;
@Resource
MailNoStatusOperator mailNoStatusOperator;
/* 签收 */
@Operation(
summary = "签收",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/receive")
public JSONObject receive(HttpServletRequest request, @RequestBody ReceiveRequest receiveRequest) {
LogOrderMailDetailEntity mailDetailEntity = logOrderMailDetailImpl.getAllInfoByMailNo(receiveRequest.getMailNo());
if (mailDetailEntity == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到需签收包裹");
}
boolean key = false;
String str = "";
String action = receiveRequest.getAction();
PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
notifyRequest.setLogisticsOrderCode(mailDetailEntity.getLogisticsOrderCode());
notifyRequest.setBizAction(action);
PddServiceConsoFirstBizActionNotifyRequest.Result notifyResult = new PddServiceConsoFirstBizActionNotifyRequest.Result();
notifyRequest.setMailNo(mailDetailEntity.getMailNo());
notifyRequest.setExpressCode(mailDetailEntity.getExpressCode());
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
if (action.equals("warehouse_sign")) {
notifyRequest.setBizActionDesc("仓库签收");
notifyResult.setCode(0);
logOrderMailDetailIoEntity.setStatus(StatusEnum.SIGNED.getCode());
str = "签收成功";
logOrderMailDetailIoEntity.setAction("RECEIVE");
} else if (action.equals("warehouse_reject_sign")) {
notifyRequest.setBizActionDesc("仓库拒签");
notifyResult.setCode(receiveRequest.getCode());
notifyResult.setDesc(OrderRejectCode.getByCode(receiveRequest.getCode()).getDesc());
notifyResult.setRemark(OrderRejectCode.getByCode(receiveRequest.getCode()).getRemark());
if (receiveRequest.getLength() != null && receiveRequest.getLength() > 0) {
notifyRequest.setPackageInfo(new PddServiceConsoFirstBizActionNotifyRequest.PackageInfo());
notifyRequest.getPackageInfo().setWeight((long) PddJYPriceTool.calculateWeight((int) receiveRequest.getLength().longValue(), (int) receiveRequest.getWidth().longValue(), (int) receiveRequest.getHeight().longValue(), (int) receiveRequest.getWeight().longValue(), true));
notifyRequest.getPackageInfo().setActualWeight(receiveRequest.getWeight());
notifyRequest.getPackageInfo().setLength(receiveRequest.getLength());
notifyRequest.getPackageInfo().setWidth(receiveRequest.getWidth());
notifyRequest.getPackageInfo().setHeight(receiveRequest.getHeight());
}
notifyRequest.setResult(notifyResult);
logOrderMailDetailIoEntity.setStatus(StatusEnum.REJECTED.getCode());
logOrderMailDetailIoEntity.setAction("REJECT");
str = "仓库拒签";
} else if (action.equals("destroy")) {
notifyRequest.setBizActionDesc("包裹销毁");
notifyResult.setCode(0);
logOrderMailDetailIoEntity.setStatus(StatusEnum.DESTROY.getCode());
logOrderMailDetailIoEntity.setAction("DESTROY");
str = "包裹销毁";
}
notifyRequest.setResult(notifyResult);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.first.biz.action.notify");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
//更新log_order_mail_detail
Boolean result = logOrderMailDetailImpl.updateByMailNo(receiveRequest.getMailNo(), logOrderMailDetailIoEntity.getStatus());
logOrderMailDetailIoEntity.setMailNo(receiveRequest.getMailNo());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailDetailEntity.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailDetailEntity.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
logOrderImpl.updateReceiveNum(1, mailDetailEntity.getLogisticsOrderCode());
return JsonResponse.generateLocalCommonSuccessResponse(true, str);
}
/*入库*/
@Operation(
......
......@@ -9,7 +9,6 @@ import jakarta.annotation.security.RolesAllowed;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
import org.ta.pdd.entity.*;
......@@ -21,7 +20,6 @@ import org.ta.pddserver.model.api.request.*;
import org.ta.pddserver.model.api.response.*;
import org.ta.pddserver.model.enums.ErrorEnum;
import org.ta.pddserver.model.enums.OrderProblemType;
import org.ta.pddserver.model.enums.OrderRejectCode;
import org.ta.pddserver.model.enums.StatusEnum;
import org.ta.pddserver.model.pddjy.request.*;
import org.ta.pddserver.model.pddjy.response.PddServiceConsoDerelictionResponse;
......@@ -76,15 +74,15 @@ public class PddLocalController {
@Resource
WaybillOperator waybillOperator;
@Autowired
@Resource
private LogOrderItemImpl logOrderItemImpl;
@Autowired
@Resource
private CollectOrderDetailImpl collectOrderDetailImpl;
@Autowired
@Resource
private AreaImpl areaImpl;
@Autowired
@Resource
private StorageImpl storageImpl;
@Autowired
@Resource
private OutboundNoticeImpl outboundNoticeImpl;
@Resource
......@@ -94,14 +92,16 @@ public class PddLocalController {
@Resource
private TempStorageImpl tempStorageImpl;
@Autowired
@Resource
private UserImpl userImpl;
@Autowired
@Resource
private ShelvesImpl shelvesImpl;
@Autowired
@Resource
private CollectFreightFeeDetailImpl collectFreightFeeDetailImpl;
@Autowired
@Resource
private LogsMailScanImpl logsMailScanService;
@Resource
PickRecordImpl pickRecordImpl;
/*集运单列表*/
@Operation(
......@@ -238,33 +238,6 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
}
// /*拆包列表*/
// @Operation(
// summary = "分页查询拆包列表",
// description = "",
// deprecated = false // 是否废弃
// )
// @PostMapping("/logOrderPackageList")
// public JSONObject logOrderPackageList(HttpServletRequest request, @RequestBody LogOrderPackageListRequest logOrderPackageListRequest) {
// return JsonResponse.generateLocalCommonSuccessResponse(logOrderPackageImpl.getList(logOrderPackageListRequest));
// }
// /*出库扫码*/
// @PostMapping("/collectOrderScan")
// public Map<String, Object> collectOrderScan(HttpServletRequest request, @RequestBody CollectOrderScanRequest collectOrderScanRequest) {
//
// Map<String, Object> map = new HashMap<>();
//
// CollectOrderResponse collectOrderResponse = collectOrderImpl.getByOrderCode(collectOrderScanRequest.getOrderCode());
// List<CollectOutMailDetailResponse> list = collectOutMailDetailImpl.getListByOrderCode(collectOrderScanRequest.getOrderCode());
//
// map.put("collectOrder", collectOrderResponse);
// map.put("list", list);
//
// return JsonResponse.generateLocalCommonSuccessResponse(map);
// }
/*拣货扫码*/
@Operation(
summary = "运单号,拣货扫码",
......@@ -326,212 +299,6 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
}
/*签收*/
@Operation(
summary = "签收",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/receive")
public JSONObject receive(HttpServletRequest request, @RequestBody ReceiveRequest receiveRequest) {
LogOrderMailDetailEntity mailNoResponse = logOrderMailDetailImpl.getAllInfoByMailNo(receiveRequest.getMailNo());
boolean key = false;
String str = "";
String action = receiveRequest.getAction();
PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
notifyRequest.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
notifyRequest.setBizAction(action);
PddServiceConsoFirstBizActionNotifyRequest.Result notifyResult = new PddServiceConsoFirstBizActionNotifyRequest.Result();
notifyRequest.setMailNo(mailNoResponse.getMailNo());
notifyRequest.setExpressCode(mailNoResponse.getExpressCode());
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
if (action.equals("warehouse_sign")) {
notifyRequest.setBizActionDesc("仓库签收");
notifyResult.setCode(0);
logOrderMailDetailIoEntity.setStatus(StatusEnum.SIGNED.getCode());
str = "签收成功";
logOrderMailDetailIoEntity.setAction("RECEIVE");
} else if (action.equals("warehouse_reject_sign")) {
notifyRequest.setBizActionDesc("仓库拒签");
notifyResult.setCode(receiveRequest.getCode());
notifyResult.setDesc(OrderRejectCode.getByCode(receiveRequest.getCode()).getDesc());
notifyResult.setRemark(OrderRejectCode.getByCode(receiveRequest.getCode()).getRemark());
if (receiveRequest.getLength() != null && receiveRequest.getLength() > 0) {
notifyRequest.setPackageInfo(new PddServiceConsoFirstBizActionNotifyRequest.PackageInfo());
notifyRequest.getPackageInfo().setWeight((long) PddJYPriceTool.calculateWeight((int) receiveRequest.getLength().longValue(), (int) receiveRequest.getWidth().longValue(), (int) receiveRequest.getHeight().longValue(), (int) receiveRequest.getWeight().longValue(), true));
notifyRequest.getPackageInfo().setActualWeight(receiveRequest.getWeight());
notifyRequest.getPackageInfo().setLength(receiveRequest.getLength());
notifyRequest.getPackageInfo().setWidth(receiveRequest.getWidth());
notifyRequest.getPackageInfo().setHeight(receiveRequest.getHeight());
}
notifyRequest.setResult(notifyResult);
logOrderMailDetailIoEntity.setStatus(StatusEnum.REJECTED.getCode());
logOrderMailDetailIoEntity.setAction("REJECT");
str = "仓库拒签";
} else if (action.equals("destroy")) {
notifyRequest.setBizActionDesc("包裹销毁");
notifyResult.setCode(0);
logOrderMailDetailIoEntity.setStatus(StatusEnum.DESTROY.getCode());
logOrderMailDetailIoEntity.setAction("DESTROY");
str = "包裹销毁";
}
notifyRequest.setResult(notifyResult);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.first.biz.action.notify");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
//更新log_order_mail_detail
Boolean result = logOrderMailDetailImpl.updateByMailNo(receiveRequest.getMailNo(), logOrderMailDetailIoEntity.getStatus());
logOrderMailDetailIoEntity.setMailNo(receiveRequest.getMailNo());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailNoResponse.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
logOrderImpl.updateReceiveNum(1, mailNoResponse.getLogisticsOrderCode());
return JsonResponse.generateLocalCommonSuccessResponse(true, str);
}
/*入库*/
@Operation(
summary = "入库",
description = "",
deprecated = false // 是否废弃
)
@PostMapping("/inBound")
public JSONObject inBound(HttpServletRequest request, @RequestBody InBoundRequest inBoundRequest) {
LogOrderMailDetailEntity mailNoResponse = logOrderMailDetailImpl.getByMailNo(inBoundRequest.getMailNo());
PddServiceConsoInboundRequest notifyRequest = new PddServiceConsoInboundRequest();
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(mailNoResponse.getLogisticsOrderCode());
int currNum = logOrderEntity.getNum();
int num = logOrderMailDetailImpl.getInboundedCountByOrderCode(mailNoResponse.getLogisticsOrderCode());
//判断是否存在入库信息
if (mailNoResponse.getStatus() == StatusEnum.INBOUND.getCode()) {
//重复入库
mailNoResponse.setEnterTime(TimeTool.getNowDate());
} else {
mailNoResponse.setEnterTime(TimeTool.getNowDate());
mailNoResponse.setStatus(StatusEnum.INBOUND.getCode());
num += 1;
}
notifyRequest.setPackageQuantity(num);
mailNoResponse.setLength(inBoundRequest.getLength().intValue());
mailNoResponse.setWidth(inBoundRequest.getWidth().intValue());
mailNoResponse.setHeight(inBoundRequest.getHeight().intValue());
mailNoResponse.setWeight(inBoundRequest.getWeight().intValue());
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
notifyRequest.setExecuteTime(TimeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
log.info("已入库数量 {} ; 全部数量 {}", num, logOrderEntity.getPackageQuantity());
if (currNum >= logOrderEntity.getPackageQuantity()) {
notifyRequest.setStatus("FULL_INBOUND");
} else {
notifyRequest.setStatus("PART_INBOUND");
}
notifyRequest.setPackageInfo(new PddServiceConsoInboundRequest.PackageInfo());
notifyRequest.getPackageInfo().setMailNo(mailNoResponse.getMailNo());
notifyRequest.getPackageInfo().setExpressCode(mailNoResponse.getExpressCode());
notifyRequest.getPackageInfo().setLength(inBoundRequest.getLength());
notifyRequest.getPackageInfo().setHeight(inBoundRequest.getHeight());
notifyRequest.getPackageInfo().setWidth(inBoundRequest.getWidth());
notifyRequest.getPackageInfo().setActualWeight(inBoundRequest.getWeight());
notifyRequest.getPackageInfo().setWeight((long) PddJYPriceTool.calculateWeight(inBoundRequest.getLength().intValue(), inBoundRequest.getWidth().intValue(), inBoundRequest.getHeight().intValue(), inBoundRequest.getWeight().intValue(), true));
notifyRequest.getPackageInfo().setGoodsType(inBoundRequest.getGoodsType());
notifyRequest.setResult(new PddServiceConsoInboundRequest.Result());
notifyRequest.getResult().setCode(0);
JYBaseRequestModel requestModel = new JYBaseRequestModel();
requestModel.setRequest(JSON.toJSONString(notifyRequest));
requestModel.setRequest_id("" + new Date().getTime());
requestModel.setType("pdd.service.conso.inbound");
requestModel.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requestModel.setClient_id(PddAPIConfig.CLIENT_ID);
long time = new Date().getTime() / 1000;
time += time % 5; // 延时4秒内
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
JSONObject jsonObject = JSON.parseObject(resp);
JSONObject respObject = (JSONObject) jsonObject.get("response");
if (!respObject.getBoolean("success")) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "拼多多上送信息失败:" + respObject.getString("message") + ";请联系技术人员。");
}
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
logOrderMailDetailIoEntity.setMailNo(inBoundRequest.getMailNo());
logOrderMailDetailIoEntity.setExpressCode(mailNoResponse.getExpressCode());
logOrderMailDetailIoEntity.setStatus(StatusEnum.INBOUND.getCode());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailNoResponse.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoEntity.setAction("INBOUND");
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
//更新入库包裹状态
mailNoResponse.setStatus(logOrderMailDetailIoEntity.getStatus());
mailNoResponse.setEnterTime(TimeTool.getNowDate());
logOrderMailDetailImpl.updateById(mailNoResponse);
logOrderEntity.setNum(notifyRequest.getPackageQuantity().intValue());
//判断是否全部入库
if (notifyRequest.getPackageQuantity() <= num) {
//全部入库
logOrderEntity.setStatus(StatusEnum.FULLINBOUND.getCode());
} else {
logOrderEntity.setStatus(StatusEnum.PARTINBOUND.getCode());
}
logOrderImpl.updateById(logOrderEntity);
// 分发仓位信息
return JsonResponse.generateLocalCommonSuccessResponse(true, "入库成功");
}
/**
* 入库异常
*/
......@@ -1047,10 +814,10 @@ public class PddLocalController {
list.removeAll(toRemoveList);
outBoundList.removeAll(toRemoveOutBound);
if (list.size() > 0 || outBoundList.size() > 0) {
//出库信息与已存信息不匹配,无法出库
return JsonResponse.generateLocalCommonFailedResponse("-1", "出库单数异常");
}
// if (list.size() > 0 || outBoundList.size() > 0) {
// //出库信息与已存信息不匹配,无法出库
// return JsonResponse.generateLocalCommonFailedResponse("-1", "出库单数异常");
// }
}
CollectOrderResponse collectOrderResponse = collectOrderImpl.getByOrderCode(outBoundRequest.getOrderCode());
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
......@@ -1435,9 +1202,9 @@ public class PddLocalController {
JSONObject response = JSONObject.parseObject(resp).getJSONObject("response");
if (response != null) {
if (response.getBoolean("success")) {
// unpackMailDetailImpl.updateMailToProblem(mailDetailEntity.getMailNo());
// collectMailDetailImpl.updateMailToProblem(mailDetailEntity.getMailNo());
// logOrderMailDetailImpl.updateMailToProblem(mailDetailEntity.getMailNo());
unpackMailDetailImpl.updateMailToProblem(mailDetailEntity.getMailNo());
collectMailDetailImpl.updateMailToProblem(mailDetailEntity.getMailNo());
logOrderMailDetailImpl.updateMailToProblem(mailDetailEntity.getMailNo());
return JsonResponse.generateLocalCommonSuccessResponse(mailDetailEntity, "问题件申报成功");
}
}
......@@ -1512,7 +1279,11 @@ public class PddLocalController {
@PostMapping("/storageList")
public JSONObject storageList(HttpServletRequest request, @RequestBody StorageListRequest storageListRequest) {
Map<String, Object> map = storageImpl.storageList(storageListRequest.getLogisticsOrderCode());
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
String info = null;
if (pickRecordImpl.checkAddReceiver(storageListRequest.getLogisticsOrderCode())) {
info = "请注意,您是本拣货单的责任拣货人";
}
return JsonResponse.generateLocalCommonSuccessResponse(map, info);
}
/*待出库列表*/
......@@ -1641,6 +1412,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonFailedResponse("-1", "面单制作失败");
}
unpackNoticeImpl.updatePrintNum(1, unpackNoticeEntity.getUid());
pickRecordImpl.checkAddRecord(orderCode, 1);
JSONObject result = new JSONObject();
result.put("orderCode", orderCode);
result.put("file", Base64.getEncoder().encodeToString(bytes));
......@@ -1661,15 +1433,11 @@ public class PddLocalController {
List<PackageDetailEntity> packages = packageDetailImpl.getByOrderCode(orderCode);
byte[] bytes = null;
boolean needPick = false;
if(packages!= null && packages.size()>0){
bytes = ImagePdfCollectGenerator.generatePdQRfWithCollectTextImage(orderCode, "拆包出库", "已打包" + packages.size() + "件");
} else {
List<CollectMailDetailEntity> mailDetailList = collectMailDetailImpl.getListByOrderCode(orderCode);
bytes = ImagePdfCollectGenerator.generatePdQRfWithCollectTextImage(orderCode, orderCode.startsWith("PT") ? "退运" : "出库", "" + mailDetailList.size() + "件");
if (orderCode.startsWith("PP")) {
needPick = collectOrderEntity.getNum() == 0;
}
}
if (bytes == null) {
......@@ -1677,7 +1445,9 @@ public class PddLocalController {
}
collectOrderImpl.updatePrintNum(1, collectOrderEntity.getOrderCode());
String info = "";
if (needPick) {
PickRecordEntity pickRecordEntity = pickRecordImpl.checkAddRecord(orderCode, 2);
if (pickRecordEntity.getType() == 2 && orderCode.startsWith("PP")) {
// 合包单,此处处理开始拣货
info = this.startPick(orderCode);
}
JSONObject result = new JSONObject();
......
......@@ -106,13 +106,13 @@ public class ImagePdfGenerator {
for (int i = 1; i < 10; i ++) {
for (int i1 = 1; i1 < 12; i1 ++) {
for (int i2 = 1; i2 < 5; i2 ++) {
for (int i2 = 1; i2 < 6; i2 ++) {
for (int i3 = 1; i3 < 3; i3 ++) {
if (i3 == 2 && (i2 == 1|| i2 == 4)) {
if (i3 == 2 && (i2 == 1|| i2 == 5)) {
continue;
}
// 1. 将文字转为图片(示例:韩文“안녕하세요,世界!”)
String code = "LS" + i + "-" + i1 + "-" + i2 + "-" + i3;
String code = "A" + i + "-" + i1 + "-" + i2 + "-" + i3;
byte[] imageBytes = TextToImageUtils.commonBarCodeToImage(code);
// 3. 将图片嵌入PDF
......
......@@ -36,6 +36,6 @@ public interface CollectMailDetailMapper extends BaseMapper<CollectMailDetailEnt
@Delete("DELETE FROM `collect_mail_detail` WHERE `orderCode` = #{orderCode};")
Integer deleteByOrderCode(@Param("orderCode") String orderCode);
@Update("UPDATE `collect_mail_detail` SET `state` = 2 AND `remarks` = '已经申报问题件' WHERE `mailNo` = #{mailNo};")
@Update("UPDATE `collect_mail_detail` SET `state` = 2, `remarks` = '已经申报问题件' WHERE `mailNo` = #{mailNo};")
Integer updateMailToProblem(@Param("mailNo") String mailNo);
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.ta.pdd.entity.ExpMailLogsEntity;
import java.util.List;
@Mapper
public interface ExpMailLogsMapper extends BaseMapper<ExpMailLogsEntity> {
@Select("SELECT a.`created`, a.`status`, b.`name` AS `operator` FROM `exp_mail_logs` a, `user` b WHERE a.`mailNo` = #{mailNo} AND a.`operator` = b.`account` ;")
List<ExpMailLogsEntity> findListByMailNo(@Param("mailNo") String mailNo);
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.ta.pdd.entity.ExpMailEntity;
@Mapper
public interface ExpMailMapper extends BaseMapper<ExpMailEntity> {
@Select("SELECT * FROM `exp_mail` WHERE `mailNo` = #{mailNo};")
ExpMailEntity findByMailNo(String mailNo);
}
......@@ -39,7 +39,7 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select("SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} ORDER BY `uid` DESC LIMIT 1;")
LogOrderMailDetailEntity getAllInfoByMailNo(@Param("mailNo") String mailNo);
@Update("UPDATE `log_order_mail_detail` SET `status` = ${status} WHERE `mailNo` = #{mailNo} ORDER BY `uid` DESC LIMIT 1;")
@Update("UPDATE `log_order_mail_detail` SET `status` = ${status} WHERE `mailNo` = #{mailNo} ;")
Boolean updateByMailNo(@Param("mailNo")String mailNo, @Param("status") int status);
@Select("SELECT COUNT(*) FROM `log_order_mail_detail` WHERE `logisticsOrderCode` = #{logisticsOrderCode} AND `status` = ${status} ORDER BY `uid` DESC LIMIT 1;")
......@@ -60,6 +60,9 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select("SELECT COUNT(*) FROM `log_order_mail_detail` WHERE `enterTime` = #{date}")
Long countEnteredFromDate(String today);
@Update("UPDATE `log_order_mail_detail` SET `state` = 2 AND `remarks` = '已经申报问题件' WHERE `mailNo` = #{mailNo};")
@Update("UPDATE `log_order_mail_detail` SET `state` = 2, `remarks` = '已经申报问题件' WHERE `mailNo` = #{mailNo};")
Integer updateMailToProblem(@Param("mailNo") String mailNo);
@Select("SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo};")
List<LogOrderMailDetailEntity> findListByMailNo(@Param("mailNo") String mailNo);
}
......@@ -12,10 +12,10 @@ import java.util.List;
@Mapper
public interface LogsMailScanMapper extends BaseMapper<LogsMailScanEntity> {
@Select("SELECT `author`, `created`, `action` FROM `logs_mail_scan` WHERE `mailNo` = #{mailNo} ORDER BY `uid` DESC;")
@Select("SELECT a.`uid`, a.`mailNo`, a.`created`, a.`action`, b.`name` AS `author` FROM `logs_mail_scan` a, `user` b WHERE a.`mailNo` = #{mailNo} AND a.`author` = b.`account` ;")
List<LogsMailScanEntity> selectByMailNo(@Param("mailNo") String mailNo);
@Select("SELECT uid,mailNo,created,author,action FROM `logs_mail_scan` WHERE `mailNo` = #{mailNo} ORDER BY `uid` DESC;")
@Select("SELECT a.`uid`, a.`mailNo`, a.`created`, a.`action`, b.`name` AS `author` FROM `logs_mail_scan` a, `user` b WHERE a.`mailNo` = #{mailNo} AND a.`author` = b.`account` ;")
List<LogsMailScanEntity> logsMailScanList(LogsMailScanListVORequest param);
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.ta.pdd.entity.PickRecordEntity;
import org.ta.pddserver.model.api.request.PackageNoticeRequest;
import java.util.List;
@Mapper
public interface PickRecordMapper extends BaseMapper<PickRecordEntity> {
@Select("SELECT * FROM `pick_record` WHERE `orderCode` = #{orderCode} OR #{orderCode} = '' ORDER BY uid DESC LIMIT #{offset}, #{size};")
List<PickRecordEntity> getListByRequest(PackageNoticeRequest param);
@Select("SELECT COUNT(*) FROM `pick_record` WHERE `orderCode` = #{orderCode} OR #{orderCode} = '' ;")
Integer countUsable(PackageNoticeRequest param);
@Select("SELECT * FROM `pick_record` WHERE `orderCode` = #{orderCode};")
PickRecordEntity findByOrderCode(@Param("orderCode") String orderCode);
}
......@@ -59,4 +59,7 @@ public interface StorageMapper extends BaseMapper<StorageEntity> {
@Select("SELECT uid,mailNo,code,place,created,logisticsOrderCode,num,total,buyerCode FROM `storage` WHERE (`mailNo` = #{mailNo} OR #{mailNo}='') AND (`code` = #{code} OR #{code}='') ORDER BY `uid` DESC LIMIT #{offset}, #{size};")
List<StorageEntity> getStorageListPage(StorageListVORequest param);
@Select("SELECT * FROM `storage` WHERE `place` = #{place};")
List<StorageEntity> findListByPlace(@Param("place") String place);
}
......@@ -18,6 +18,6 @@ public interface UnpackMailDetailMapper extends BaseMapper<UnpackMailDetailEntit
@Delete("DELETE FROM `unpack_mail_detail` WHERE `orderCode` = #{orderCode}; ")
Integer deleteByOrderCode(@Param("orderCode") String orderCode);
@Update("UPDATE `unpack_mail_detail` SET `state` = 2 AND `remarks` = '已经申报问题件' WHERE `mailNo` = #{mailNo};")
@Update("UPDATE `unpack_mail_detail` SET `state` = 2, `remarks` = '已经申报问题件' WHERE `mailNo` = #{mailNo};")
Integer updateMailToProblem(@Param("mailNo") String mailNo);
}
package org.ta.pddserver.model.api.request;
import lombok.Data;
@Data
public class QueryLogMailRequest {
String mailNo;
String action;
}
package org.ta.pddserver.model.enums;
public enum MailNoStatusEnum {
START(0, "下发"),
SIGNED(1, "签收"),
INBOUND(9, "入库"),
POSITION(10, "分配库位"),
ONBOARD(19, "上架"),
PICKING(21, "拣货中"),
PICKED(28, "已拣货"),
PROBLEM(29, "问题件"),
PACKAGING(31, "打包中"),
PACKAGED(39, "打包完成"),
OUTING(51, "出库中"),
OUTBOUND(61, "正向出库"),
REJECTED(62, "拒收出库"),
DESTROYING(67, "库内销毁中"),
DESTROYED(68, "库内已销毁"),
UNKNOWN(-1, "未知");
private final int code;
private final String desc;
// 枚举构造方法默认私有,无需 Spring 注入
MailNoStatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
// 仅保留 Getter,无 Setter
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
// 根据状态码查询枚举(核心业务方法)
public static MailNoStatusEnum getByCode(int code) {
for (MailNoStatusEnum status : MailNoStatusEnum.values()) {
if (status.getCode() == code) {
return status;
}
}
return UNKNOWN;
}
}
\ No newline at end of file
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pdd.entity.ExpMailLogsEntity;
public interface ExpMailLogsService extends IService<ExpMailLogsEntity> {
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pdd.entity.ExpMailEntity;
public interface ExpMailService extends IService<ExpMailEntity> {
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pdd.entity.PickRecordEntity;
public interface PickRecordService extends IService<PickRecordEntity> {
}
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pdd.entity.ExpMailEntity;
import org.ta.pddserver.mapper.ExpMailMapper;
import org.ta.pddserver.service.ExpMailService;
@Service
public class ExpMailImpl extends ServiceImpl<ExpMailMapper, ExpMailEntity> implements ExpMailService {
public ExpMailEntity findByMailNo(String mailNo) {
return this.baseMapper.findByMailNo(mailNo);
}
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pdd.entity.ExpMailLogsEntity;
import org.ta.pdd.entity.LogsMailScanEntity;
import org.ta.pddserver.mapper.ExpMailLogsMapper;
import org.ta.pddserver.service.ExpMailLogsService;
import java.util.List;
@Service
public class ExpMailLogsImpl extends ServiceImpl<ExpMailLogsMapper, ExpMailLogsEntity> implements ExpMailLogsService {
public List<ExpMailLogsEntity> getByMail(String mailNo) {
return this.baseMapper.findListByMailNo(mailNo);
}
}
\ No newline at end of file
......@@ -86,4 +86,8 @@ public class LogOrderMailDetailImpl extends ServiceImpl<LogOrderMailDetailMapper
public Integer updateMailToProblem(String mailNo) {
return this.baseMapper.updateMailToProblem(mailNo);
}
public List<LogOrderMailDetailEntity> getListByMailNo(String mailNo) {
return this.baseMapper.findListByMailNo(mailNo);
}
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.ta.pdd.entity.PickRecordEntity;
import org.ta.pddserver.mapper.PickRecordMapper;
import org.ta.pddserver.model.api.request.PackageNoticeRequest;
import org.ta.pddserver.service.PickRecordService;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class PickRecordImpl extends ServiceImpl<PickRecordMapper, PickRecordEntity> implements PickRecordService {
public Map<String, Object> recordList(PackageNoticeRequest param) {
Integer count = baseMapper.countUsable(param);
param.checkPage(count,20);
List<PickRecordEntity> list = baseMapper.getListByRequest(param);
Map<String, Object> map = new HashMap<>();
map.put("total", count);
map.put("list", list);
map.put("page", param.getPage());
return map;
}
public PickRecordEntity checkAddRecord(String orderCode, int type) {
PickRecordEntity pickRecordEntity = this.baseMapper.findByOrderCode(orderCode);
if (pickRecordEntity == null) {
pickRecordEntity = new PickRecordEntity();
pickRecordEntity.setOrderCode(orderCode);
pickRecordEntity.setCreator(SecurityContextHolder.getContext().getAuthentication().getName());
pickRecordEntity.setCreated(new Date());
pickRecordEntity.setType(type);
this.save(pickRecordEntity);
}
return pickRecordEntity;
}
public boolean checkAddReceiver(String orderCode) {
PickRecordEntity pickRecordEntity = this.baseMapper.findByOrderCode(orderCode);
if (pickRecordEntity.getReceiver() == null) {
pickRecordEntity.setReceiver(SecurityContextHolder.getContext().getAuthentication().getName());
pickRecordEntity.setReceiveTime(new Date());
this.updateById(pickRecordEntity);
return true;
}
return false;
}
public PickRecordEntity getByOrderCode(String orderCode) {
return this.baseMapper.findByOrderCode(orderCode);
}
public boolean saveFinisher(PickRecordEntity pickRecordEntity) {
if (pickRecordEntity.getFinisher() == null) {
pickRecordEntity.setFinisher(SecurityContextHolder.getContext().getAuthentication().getName());
pickRecordEntity.setFinishTime(new Date());
this.updateById(pickRecordEntity);
return true;
}
return false;
}
}
\ No newline at end of file
......@@ -116,4 +116,7 @@ public class StorageImpl extends ServiceImpl<StorageMapper, StorageEntity> imple
return map;
}
public List<StorageEntity> getListByPlace(String place) {
return this.baseMapper.findListByPlace(place);
}
}
\ No newline at end of file
package org.ta.pddserver.serviceutil;
import jakarta.annotation.Resource;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.ta.pdd.entity.ExpMailEntity;
import org.ta.pdd.entity.ExpMailLogsEntity;
import org.ta.pddserver.model.enums.MailNoStatusEnum;
import org.ta.pddserver.service.impl.ExpMailImpl;
import org.ta.pddserver.service.impl.ExpMailLogsImpl;
@Component
public class MailNoStatusOperator {
@Resource
ExpMailImpl expMailImpl;
@Resource
ExpMailLogsImpl expMailLogsImpl;
public String checkCanHandle(String mailNo, MailNoStatusEnum aimStatusEnum) {
ExpMailEntity expMailEntity = this.getMailByMailNo(mailNo);
MailNoStatusEnum currStatus = MailNoStatusEnum.getByCode(expMailEntity.getStatus());
switch (aimStatusEnum) {
case SIGNED, REJECTED:
return currStatus.getCode() == MailNoStatusEnum.START.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是初始下发状态,不可做此操作";
case INBOUND:
return currStatus.getCode() == MailNoStatusEnum.SIGNED.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是已签收状态,不可做此操作";
case POSITION:
return currStatus.getCode() == MailNoStatusEnum.INBOUND.getCode() || currStatus.getCode() == MailNoStatusEnum.PICKED.getCode() || currStatus.getCode() == MailNoStatusEnum.PROBLEM.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是已入库/已拣货/问题件状态,不可做此操作";
case ONBOARD:
return currStatus.getCode() == MailNoStatusEnum.POSITION.getCode() || currStatus.getCode() == MailNoStatusEnum.ONBOARD.getCode() || currStatus.getCode() == MailNoStatusEnum.PICKING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是分配库位/已上架/拣货中状态,不可做此操作";
case PICKING, DESTROYING:
return currStatus.getCode() == MailNoStatusEnum.ONBOARD.getCode() || currStatus.getCode() == MailNoStatusEnum.PICKING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是已上架/拣货中状态,不可做此操作";
case PICKED:
return currStatus.getCode() == MailNoStatusEnum.PICKING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是拣货中状态,不可做此操作";
case PROBLEM, PACKAGING:
return currStatus.getCode() == MailNoStatusEnum.PICKED.getCode() || currStatus.getCode() == MailNoStatusEnum.PACKAGING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是已拣货/打包中状态,不可做此操作";
case PACKAGED:
return currStatus.getCode() == MailNoStatusEnum.PACKAGING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是拣货中状态,不可做此操作";
case OUTING:
return currStatus.getCode() == MailNoStatusEnum.PACKAGED.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是已拣货状态,不可做此操作";
case OUTBOUND:
return currStatus.getCode() == MailNoStatusEnum.OUTING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是出库中状态,不可做此操作";
case DESTROYED:
return currStatus.getCode() == MailNoStatusEnum.DESTROYING.getCode()?
null : "当前状态为" + currStatus.getDesc() + ",不是销毁中状态,不可做此操作";
}
return null;
}
public boolean changeStatus(String mailNo, MailNoStatusEnum aimStatusEnum) {
ExpMailEntity expMailEntity = expMailImpl.findByMailNo(mailNo);
if (expMailEntity == null) {
return false;
}
expMailEntity.setStatus(aimStatusEnum.getCode());
if (expMailImpl.updateById(expMailEntity)) {
ExpMailLogsEntity logsEntity = new ExpMailLogsEntity();
logsEntity.setMailNo(mailNo);
logsEntity.setStatus(aimStatusEnum.getCode());
logsEntity.setOperator(SecurityContextHolder.getContext().getAuthentication().getName());
if (expMailLogsImpl.save(logsEntity)) {
return true;
}
}
return false;
}
public boolean changeStatus(String mailNo, MailNoStatusEnum aimStatusEnum, String place) {
ExpMailEntity expMailEntity = expMailImpl.findByMailNo(mailNo);
if (expMailEntity == null) {
return false;
}
expMailEntity.setStatus(aimStatusEnum.getCode());
if (expMailImpl.updateById(expMailEntity)) {
ExpMailLogsEntity logsEntity = new ExpMailLogsEntity();
logsEntity.setMailNo(mailNo);
logsEntity.setStatus(aimStatusEnum.getCode());
logsEntity.setOperator(SecurityContextHolder.getContext().getAuthentication().getName());
logsEntity.setRemarks(place);
if (expMailLogsImpl.save(logsEntity)) {
return true;
}
}
return false;
}
public ExpMailEntity getMailByMailNo(String mailNo) {
ExpMailEntity expMailEntity = expMailImpl.findByMailNo(mailNo);
if (expMailEntity == null) {
expMailEntity = new ExpMailEntity();
expMailEntity.setMailNo(mailNo);
expMailEntity.setStatus(MailNoStatusEnum.START.getCode());
expMailImpl.save(expMailEntity);
}
return expMailEntity;
}
}
......@@ -8,15 +8,15 @@ spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.2.222:3306/pdd_api?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
# url: jdbc:mysql://192.168.2.222:3306/pdd_api?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
# username: root
# password: root
url: jdbc:mysql://lyhj-mysql.mysql.rds.aliyuncs.com:3306/pdd_prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
username: pdd
password: pdd123
# url: jdbc:mysql://rm-j6cv8n7zx12x0sqreuo.mysql.rds.aliyuncs.com:3306/pdd_prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
# url: jdbc:mysql://lyhj-mysql.mysql.rds.aliyuncs.com:3306/pdd_prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
# username: pdd
# password: pdd123
url: jdbc:mysql://rm-j6cv8n7zx12x0sqreuo.mysql.rds.aliyuncs.com:3306/pdd_prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: pdd
password: pdd123
hikari:
minimum-idle: 5 # 最小空闲连接数
maximum-pool-size: 10 # 最大活跃连接数
......@@ -36,7 +36,7 @@ logging:
springframework:
security: info
ta:
pddserver: info
pddserver: debug
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
......@@ -44,4 +44,4 @@ mybatis-plus:
pdd:
jyt: 0
gd: 0
lotto: 1
\ No newline at end of file
lotto: 0
\ No newline at end of file
......@@ -63,7 +63,7 @@ public class PdfTest {
@Test
public void test4() throws Exception {
try (FileOutputStream outputStream = new FileOutputStream("./codes-LS.pdf")) {
try (FileOutputStream outputStream = new FileOutputStream("./codes-A.pdf")) {
byte[] strToBytes = ImagePdfGenerator.generateCode();
outputStream.write(strToBytes);
System.out.println("文件写入成功!");
......
......@@ -26,7 +26,7 @@ public class WordexAPITest {
//
}
@Test
@org.junit.Test
public void verify() {
org.ta.pddserver.model.enums.IdentityErrorType type = WorldexUtil.verifyIdentity("nanjiexi", "P11111111", "01099999999");
log.info("type:{}", type);
......@@ -34,6 +34,6 @@ public class WordexAPITest {
@Test
public void noticePddOrderOut() {
WorldexUtil.noticePddOrderOut("PP25120602327838726941236-1");
WorldexUtil.noticePddOrderOut("PP25121718719598189205613-1");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment