Commit dc14186f authored by Allen Chen's avatar Allen Chen

commit

parent 89db6cf2
......@@ -40,6 +40,9 @@ public class PddLocalController {
@Resource
LogOrderMailDetailIoImpl logOrderMailDetailIoImpl;
@Resource
LogOrderPackageImpl logOrderPackageImpl;
private static final String PROVIDER_CODE = "HAIJI_KR";
private static final String WAREHOUSE_CODE = "HJJY001";
private static final String CLIENT_ID = "d0217707e1194c46b57e696ac7619a06";
......@@ -78,6 +81,12 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(collectMailDetailImpl.getList(collectMailDetailListRequest));
}
/*拆包列表*/
@PostMapping("/logOrderPackageList")
public JSONObject logOrderPackageList(HttpServletRequest request, @RequestBody LogOrderPackageListRequest logOrderPackageListRequest) {
return JsonResponse.generateLocalCommonSuccessResponse(logOrderPackageImpl.getList(logOrderPackageListRequest));
}
/*出库扫码*/
@PostMapping("/collectOrderScan")
......@@ -114,7 +123,7 @@ public class PddLocalController {
/*签收*/
@PostMapping("/receive")
public JSONObject receive(HttpServletRequest request, @RequestBody ReceiveRequest receiveRequest) {
MailNoResponse mailNoResponse = logOrderMailDetailImpl.getInfoByMailNo(receiveRequest.getMailNo());
LogOrderMailDetailEntity mailNoResponse = logOrderMailDetailImpl.getAllInfoByMailNo(receiveRequest.getMailNo());
String action = receiveRequest.getAction();
......@@ -133,18 +142,29 @@ public class PddLocalController {
if (action.equals("warehouse_sign")) {
notifyRequest.setBizActionDesc("仓库签收");
notifyResult.setCode(0);
logOrderMailDetailIoEntity.setStatus(10);
logOrderMailDetailIoEntity.setStatus(StatusEnum.SIGNED.getCode());
} else if (action.equals("warehouse_reject_sign")) {
notifyRequest.setBizActionDesc("仓库拒签");
notifyResult.setCode(22);
notifyResult.setDesc("运输品类限制");
notifyResult.setRemark("运输品类限制");
notifyResult.setDesc(receiveRequest.getDesc());
notifyResult.setRemark(receiveRequest.getRemark());
if(receiveRequest.getLength() != null && receiveRequest.getLength() > 0) {
notifyRequest.setPackageInfo(new PddServiceConsoFirstBizActionNotifyRequest.PackageInfo());
notifyRequest.getPackageInfo().setWeight(receiveRequest.getWeight());
notifyRequest.getPackageInfo().setActualWeight(receiveRequest.getActualWeight());
notifyRequest.getPackageInfo().setLength(receiveRequest.getLength());
notifyRequest.getPackageInfo().setWidth(receiveRequest.getWidth());
notifyRequest.getPackageInfo().setHeight(receiveRequest.getHeight());
}
notifyRequest.setResult(notifyResult);
logOrderMailDetailIoEntity.setStatus(11);
logOrderMailDetailIoEntity.setStatus(StatusEnum.REJECTED.getCode());
} else if (action.equals("destroy")) {
notifyRequest.setBizActionDesc("包裹销毁");
notifyResult.setCode(0);
logOrderMailDetailIoEntity.setStatus(12);
logOrderMailDetailIoEntity.setStatus(StatusEnum.DESTROY.getCode());
}
notifyRequest.setResult(notifyResult);
......@@ -185,29 +205,38 @@ public class PddLocalController {
PddServiceConsoInboundRequest notifyRequest = new PddServiceConsoInboundRequest();
Long status = 20L;
Long unStatus = 10L;
// 查询orderNO 下所有mailNo,判断是全部还是部分
Long unNum = logOrderMailDetailImpl.getSumByCodeStatus(mailNoResponse.getLogisticsOrderCode(), unStatus);
Long num = logOrderMailDetailImpl.getSumByCodeStatus(mailNoResponse.getLogisticsOrderCode(), status);
Long unNum = logOrderMailDetailImpl.getSumByCodeStatus(mailNoResponse.getLogisticsOrderCode(), (long) StatusEnum.SIGNED.getCode());
Long num = logOrderMailDetailImpl.getSumByCodeStatus(mailNoResponse.getLogisticsOrderCode(), (long) StatusEnum.INBOUND.getCode());
//判断是否存在入库信息
if(mailNoResponse.getStatus().equals(20)){
if(mailNoResponse.getStatus() != StatusEnum.INBOUND.getCode()){
//重复入库
notifyRequest.setPackageQuantity(num); // 已入库数量
}else {
notifyRequest.setPackageQuantity(num + 1); // 已入库数量 + 1
mailNoResponse.setEnterTime(timeTool.getNowDate());
mailNoResponse.setStatus(StatusEnum.INBOUND.getCode());
}
mailNoResponse.setLength(inBoundRequest.getLength().intValue());
mailNoResponse.setWidth(inBoundRequest.getWidth().intValue());
mailNoResponse.setHeight(inBoundRequest.getHeight().intValue());
mailNoResponse.setWeight(inBoundRequest.getWeight().intValue());
notifyRequest.setProviderCode(PROVIDER_CODE);
notifyRequest.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
notifyRequest.setExecuteTime(timeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
notifyRequest.setStatus("FULL_INBOUND");
if(unNum - 1 == 0 && notifyRequest.getPackageQuantity() > num){
notifyRequest.setStatus("FULL_INBOUND");
}else {
notifyRequest.setStatus("INBOUND");
}
notifyRequest.setPackageInfo(new PddServiceConsoInboundRequest.PackageInfo());
......@@ -237,38 +266,32 @@ public class PddLocalController {
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
logOrderMailDetailIoEntity.setMailNo(inBoundRequest.getMailNo());
logOrderMailDetailIoEntity.setExpressCode(mailNoResponse.getExpressCode());
logOrderMailDetailIoEntity.setStatus(20);
logOrderMailDetailIoEntity.setStatus(StatusEnum.INBOUND.getCode());
logOrderMailDetailIoEntity.setLogisticsOrderCode(mailNoResponse.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(mailNoResponse.getExpressCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
mailNoResponse.setLength(inBoundRequest.getLength().intValue());
mailNoResponse.setWidth(inBoundRequest.getWidth().intValue());
mailNoResponse.setHeight(inBoundRequest.getHeight().intValue());
mailNoResponse.setWeight(inBoundRequest.getWeight().intValue());
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
//更新入库包裹状态
logOrderMailDetailImpl.updateByMailNo(inBoundRequest.getMailNo(), 20);
logOrderMailDetailImpl.updateById(mailNoResponse);
//判断是否全部入库
if(unNum - 1 == 0 && notifyRequest.getPackageQuantity() > num){
//全部入库
logOrderImpl.updateStatusByOrderCode(mailNoResponse.getLogisticsOrderCode(), 20);
logOrderImpl.updateStatusByOrderCode(mailNoResponse.getLogisticsOrderCode(), StatusEnum.FULLINBOUND.getCode());
}else {
logOrderImpl.updateStatusByOrderCode(mailNoResponse.getLogisticsOrderCode(), 21);
logOrderImpl.updateStatusByOrderCode(mailNoResponse.getLogisticsOrderCode(), StatusEnum.PARTINBOUND.getCode());
}
return JsonResponse.generateLocalCommonSuccessResponse(true);
}
/*收到拆包通知后 完成拆包*/
/*收到出库通知后 开始拣货 拣货完成 */
@PostMapping("/finishUnpack")
public JSONObject finishUnpack(HttpServletRequest request, @RequestBody FinishUnpackRequest finishUnpackRequest) {
MailNoResponse mailNoResponse = logOrderMailDetailImpl.getInfoByMailNo(finishUnpackRequest.getMailNo());
LogOrderMailDetailEntity mailNoResponse = logOrderMailDetailImpl.getAllInfoByMailNo(finishUnpackRequest.getMailNo());
String action = finishUnpackRequest.getAction();
......@@ -283,17 +306,17 @@ public class PddLocalController {
PddServiceConsoCoBizActionNotifyRequest.Result notifyResult = new PddServiceConsoCoBizActionNotifyRequest.Result();
if (action.equals("begin_pick")) {
logOrderMailDetailIoEntity.setStatus(50);
logOrderMailDetailIoEntity.setStatus(StatusEnum.BEGINPICK.getCode());
notifyRequest.setBizActionDesc("开始拣货");
notifyResult.setCode(0);
} else if (action.equals("finish_pick")) {
logOrderMailDetailIoEntity.setStatus(59);
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHPICK.getCode());
notifyRequest.setBizActionDesc("拣货完成");
notifyResult.setCode(0);
} else if (action.equals("finish_unpack")) {
logOrderMailDetailIoEntity.setStatus(39);
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHUNPACK.getCode());
notifyRequest.setBizActionDesc("拆包完成");
notifyRequest.setUnpackRemark("");
......@@ -338,6 +361,80 @@ public class PddLocalController {
}
/*通知拆包后拣货*/
@PostMapping("/finishUnpackPackage")
public JSONObject finishUnpackPackage(HttpServletRequest request, @RequestBody FinishUnpackRequest finishUnpackRequest) {
LogOrderPackageEntity logOrderPackageEntity = logOrderPackageImpl.getInfoByCode(finishUnpackRequest.getLogisticsOrderCode());
String action = finishUnpackRequest.getAction();
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
PddServiceConsoCoBizActionNotifyRequest.Result notifyResult = new PddServiceConsoCoBizActionNotifyRequest.Result();
if (action.equals("begin_pick")) {
logOrderMailDetailIoEntity.setStatus(StatusEnum.UNPACKBEGINPICK.getCode());
} else if (action.equals("finish_pick")) {
logOrderMailDetailIoEntity.setStatus(StatusEnum.UNPACKFINISHPICK.getCode());
} else if (action.equals("finish_unpack")) {
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHUNPACK.getCode());
PddServiceConsoCoBizActionNotifyRequest notifyRequest = new PddServiceConsoCoBizActionNotifyRequest();
notifyRequest.setProviderCode(PROVIDER_CODE);
notifyRequest.setOrderCode(logOrderPackageEntity.getLogisticsOrderCode());
notifyRequest.setBizAction(action);
notifyRequest.setExecuteTime(timeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
notifyRequest.setBizActionDesc("拆包完成");
notifyRequest.setUnpackRemark("");
notifyResult.setCode(0);
notifyRequest.setPackageInfos(new ArrayList<>());
PddServiceConsoCoBizActionNotifyRequest.PackageInfo packageInfo = new PddServiceConsoCoBizActionNotifyRequest.PackageInfo();
notifyRequest.getPackageInfos().add(packageInfo);
packageInfo.setWeight((long) logOrderPackageEntity.getWeight());
packageInfo.setWidth((long) logOrderPackageEntity.getWidth());
packageInfo.setHeight((long) logOrderPackageEntity.getHeight());
packageInfo.setLength((long) logOrderPackageEntity.getLength());
packageInfo.setActualWeight((long) logOrderPackageEntity.getWeight());
packageInfo.setConsoType("SEA");
packageInfo.setGoodsType(logOrderPackageEntity.getPackageType());
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(CLIENT_ID);
requestModel.setClient_id(CLIENT_ID);
long time = new Date().getTime() / 1000;
requestModel.setTimestamp(time);
requestModel.setSign(PddSignTool.generateSign(requestModel, CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
}
logOrderMailDetailIoEntity.setMailNo(logOrderPackageEntity.getMailNo());
logOrderMailDetailIoEntity.setExpressCode(logOrderPackageEntity.getExpressCode());
logOrderMailDetailIoEntity.setLogisticsOrderCode(logOrderPackageEntity.getLogisticsOrderCode());
logOrderMailDetailIoEntity.setExpressCode(logOrderPackageEntity.getExpressCode());
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
logOrderPackageEntity.setStatus(logOrderMailDetailIoEntity.getStatus().toString());
return JsonResponse.generateLocalCommonSuccessResponse(true);
}
/*拣货完成后出库*/
@PostMapping("/outBound")
public JSONObject outBound(HttpServletRequest request, @RequestBody OutBoundRequest outBoundRequest) {
......@@ -438,7 +535,7 @@ public class PddLocalController {
logOrderMailDetailIoEntity.setExpressCode(outBoundRequest.getExpressCode());
logOrderMailDetailIoEntity.setLogisticsOrderCode(outBoundRequest.getOrderCode());
logOrderMailDetailIoEntity.setExpressCode(outBoundRequest.getExpressCode());
logOrderMailDetailIoEntity.setStatus(60);
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHOUTBOUND.getCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
......
......@@ -26,7 +26,7 @@ public class LogOrderMailDetailEntity {
private String remarks;
@TableField(value = "status")
private String status;
private int status;
@TableField(value = "logisticsOrderCode")
private String logisticsOrderCode;
......
package org.ta.pddserver.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("log_order_package")
public class LogOrderPackageEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "created")
private String created;
@TableField(value = "updated")
private String updated;
@TableField(value = "state")
private Integer state;
@TableField(value = "remarks")
private String remarks;
@TableField(value = "status")
private String status;
@TableField(value = "logisticsOrderCode")
private String logisticsOrderCode;
@TableField(value = "packageType")
private String packageType;
@TableField(value = "expressCode")
private String expressCode;
@TableField(value = "mailNo")
private String mailNo;
@TableField(value = "length")
private int length;
@TableField(value = "width")
private int width;
@TableField(value = "height")
private int height;
@TableField(value = "weight")
private int weight;
@TableField(value = "enterTime")
private String enterTime;
}
......@@ -37,6 +37,9 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select("SELECT `uid`, `logisticsOrderCode` , `expressCode` ,`mailNo`, `updated`, `status` FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} ;")
MailNoResponse getInfoByMailNo(@Param("mailNo") String mailNo);
@Select("SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} ;")
LogOrderMailDetailEntity getAllInfoByMailNo(@Param("mailNo") String mailNo);
@Update("UPDATE `log_order_mail_detail` SET `status` = ${status} WHERE `mailNo` = #{mailNo};")
Boolean updateByMailNo(@Param("mailNo")String mailNo, @Param("status") int status);
......
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.apache.ibatis.annotations.Update;
import org.ta.pddserver.entity.LogOrderPackageEntity;
import org.ta.pddserver.model.api.request.LogOrderPackageListRequest;
import org.ta.pddserver.model.api.response.CollectMailDetailListResponse;
import java.util.List;
@Mapper
public interface LogOrderPackageMapper extends BaseMapper<LogOrderPackageEntity> {
@Select("SELECT count(*) FROM `log_order_package` WHERE `logisticsOrderCode` LIKE '%${logisticsOrderCode}%' AND `packageType` LIKE '%${packageType}%';")
Integer countUsable(LogOrderPackageListRequest logOrderPackageListRequest);
@Select("SELECT `uid`, `logisticsOrderCode`, `packageType`, `length`, `width`, `height`, `weight`, `created` FROM `log_order_package` WHERE `logisticsOrderCode` LIKE '%${logisticsOrderCode}%' AND `packageType` LIKE '%${packageType}%' ORDER BY uid DESC LIMIT #{offset}, #{size}; ")
List<CollectMailDetailListResponse> getListByRequest(LogOrderPackageListRequest logOrderPackageListRequest);
@Select("SELECT * FROM `log_order_package` WHERE `logisticsOrderCode` = #{logisticsOrderCode}")
LogOrderPackageEntity getInfoByCode(@Param("logisticsOrderCode") String logisticsOrderCode);
}
......@@ -7,6 +7,8 @@ public class FinishUnpackRequest {
private String mailNo;
private String logisticsOrderCode;
private String status;
private String action;
......
package org.ta.pddserver.model.api.request;
import lombok.Data;
import org.ta.pddserver.model.common.PageTool;
@Data
public class LogOrderPackageListRequest extends PageTool {
private String logisticsOrderCode;
private String packageType;
private int length;
private int width;
private int height;
private int weight;
}
......@@ -11,4 +11,17 @@ public class ReceiveRequest {
private int status;
private String desc;
private String remark;
private Long weight;
private Long length;
private Long width;
private Long height;
private Long actualWeight;
}
......@@ -5,14 +5,18 @@ import lombok.Data;
@Data
public class CollectMailDetailListResponse {
private String uid;
private String logisticsOrderCode;
private String orderCode;
private String packageType;
private int status;
private int length;
private String expressCode;
private int width;
private String mailNo;
private int height;
private int weight;
private String created;
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.LogOrderPackageEntity;
public interface LogOrderPackageService extends IService<LogOrderPackageEntity> {
}
......@@ -55,6 +55,10 @@ public class LogOrderMailDetailImpl extends ServiceImpl<LogOrderMailDetailMapper
return baseMapper.getInfoByMailNo(mailNo);
}
public LogOrderMailDetailEntity getAllInfoByMailNo(String mailNo) {
return baseMapper.getAllInfoByMailNo(mailNo);
}
public Long getSumByCodeStatus(String logisticsOrderCode, Long status) {
......
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.LogOrderPackageEntity;
import org.ta.pddserver.mapper.LogOrderPackageMapper;
import org.ta.pddserver.model.api.request.CollectMailDetailListRequest;
import org.ta.pddserver.model.api.request.LogOrderPackageListRequest;
import org.ta.pddserver.model.api.response.CollectMailDetailListResponse;
import org.ta.pddserver.service.LogOrderPackageService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class LogOrderPackageImpl extends ServiceImpl<LogOrderPackageMapper, LogOrderPackageEntity> implements LogOrderPackageService {
public Object getList(LogOrderPackageListRequest param) {
Integer count = baseMapper.countUsable(param);
param.checkPage(count,20);
List<CollectMailDetailListResponse> 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 LogOrderPackageEntity getInfoByCode(String logisticsOrderCode) {
return baseMapper.getInfoByCode(logisticsOrderCode);
}
}
\ No newline at end of file
//package org.ta.pddserver.utils;
//
//import org.springframework.stereotype.Component;
//
//@Component
//public enum StatusEnum {
// ORDERCREATE(1, "创建订单"),
// SIGNED(10, "签收"),
// REJECTED(11, "拒签"),
// DESTROY(12, "销毁"),
// UNINBOUND(19, "未入库"),
// INBOUND(20, "入库"),
// PARTINBOUND(21, "部分入库"),
// FULLINBOUND(22, "全部入库"),
// UNPACK(30, "通知拆包"),
// FINISHUNPACK(39, "拆包完成"),
// OUTBOUND(40, "通知出库"),
// BEGINPICK(50, "开始拣货"),
// FINISHPICK(59, "拣货完成"),
// FINISHOUTBOUND(60, "出库"),
// UNKNOWN(-1, "未知");
//
// private final int code;
// private final String desc;
//
// // 枚举构造方法默认私有,无需 Spring 注入
// StatusEnum(int code, String desc) {
// this.code = code;
// this.desc = desc;
// }
//
// // 仅保留 Getter,无 Setter
// public int getCode() {
// return code;
// }
//
// public String getDesc() {
// return desc;
// }
//
// // 根据状态码查询枚举(核心业务方法)
// public static StatusEnum getByCode(int code) {
// for (StatusEnum status : StatusEnum.values()) {
// if (status.getCode() == code) {
// return status;
// }
// }
// return UNKNOWN;
// }
//
//}
package org.ta.pddserver.utils;
public enum StatusEnum {
ORDERCREATE(1, "创建订单"),
SIGNED(10, "签收"),
REJECTED(11, "拒签"),
DESTROY(12, "销毁"),
UNINBOUND(19, "未入库"),
INBOUND(20, "入库"),
PARTINBOUND(21, "部分入库"),
FULLINBOUND(22, "全部入库"),
UNPACK(30, "通知拆包"),
UNPACKBEGINPICK(31, "开始拣货"),
UNPACKFINISHPICK(32, "拣货完成"),
FINISHUNPACK(39, "拆包完成"),
OUTBOUND(40, "通知出库"),
BEGINPICK(50, "开始拣货"),
FINISHPICK(59, "拣货完成"),
FINISHOUTBOUND(60, "出库"),
UNKNOWN(-1, "未知");
private final int code;
private final String desc;
// 枚举构造方法默认私有,无需 Spring 注入
StatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
// 仅保留 Getter,无 Setter
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
// 根据状态码查询枚举(核心业务方法)
public static StatusEnum getByCode(int code) {
for (StatusEnum status : StatusEnum.values()) {
if (status.getCode() == code) {
return status;
}
}
return UNKNOWN;
}
}
......@@ -15,4 +15,10 @@ public class TimeTool {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public String getNowDate() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
}
\ No newline at end of file
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