Commit 7f46ae52 authored by Allen Chen's avatar Allen Chen

commit

parent 10806ffb
package org.ta.pddserver.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
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.pddserver.config.PddAPIConfig;
import org.ta.pddserver.entity.TraceObjectEntity;
import org.ta.pddserver.model.api.request.CollectOrderRequest;
import org.ta.pddserver.model.api.request.TraceObjectRequest;
import org.ta.pddserver.model.api.response.CollectOrderDetailResponse;
import org.ta.pddserver.model.api.response.CollectOrderInfoResponse;
import org.ta.pddserver.model.api.response.CollectReceiverDetailResponse;
import org.ta.pddserver.model.pddlg.common.TraceObject;
import org.ta.pddserver.model.pddlg.request.PddLogisticsCoTrackNotifyRequest;
import org.ta.pddserver.model.pddlg.response.PddLogisticsCoTrackNotifyResponse;
import org.ta.pddserver.service.impl.CollectOrderDetailImpl;
import org.ta.pddserver.service.impl.CollectOrderImpl;
import org.ta.pddserver.service.impl.CollectReceiverDetailImpl;
import org.ta.pddserver.service.impl.TraceObjectImpl;
import org.ta.pddserver.utils.JsonResponse;
import org.ta.pddserver.utils.PddHttpTool;
import org.ta.pddserver.utils.PddSignTool;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/logistics")
@Slf4j
public class DataGetController {
@Resource
private CollectOrderImpl collectOrderImpl;
@Resource
private CollectOrderDetailImpl collectOrderDetailImpl;
@Resource
private TraceObjectImpl traceObjectImpl;
@Resource
private CollectReceiverDetailImpl collectReceiverDetailImpl;
/*待拆包列表*/
@PostMapping("/notifyTrace")
public JSONObject notifyTrace(HttpServletRequest request, @RequestBody TraceObjectRequest traceObjectRequest) {
TraceObjectEntity traceObject = new TraceObjectEntity();
traceObject.setTrackingNumber(traceObjectRequest.getTrackingNumber());
traceObject.setTrackingOrderNo(traceObjectRequest.getTrackingOrderNo());
traceObject.setId(traceObjectRequest.getId());
traceObject.setStatusCode(traceObjectRequest.getStatusCode());
traceObject.setDescription(traceObjectRequest.getDescription());
traceObject.setOperationTime(traceObjectRequest.getOperationTime());
traceObject.setTransferFlag(traceObjectRequest.getTransferFlag());
traceObject.setTransferNo(traceObjectRequest.getTransferNo());
traceObject.setTransferPartnerId(traceObjectRequest.getTransferPartnerId());
traceObject.setTimeZone(traceObjectRequest.getTimeZone());
traceObject.setSiteName(traceObjectRequest.getSiteName());
traceObject.setSiteType(traceObjectRequest.getSiteType());
traceObject.setSiteNo(traceObjectRequest.getSiteNo());
traceObject.setNextSiteName(traceObjectRequest.getNextSiteName());
traceObject.setNextSiteNo(traceObjectRequest.getNextSiteNo());
traceObject.setFailReason(traceObjectRequest.getFailReason());
traceObject.setWeight(traceObjectRequest.getWeight());
traceObject.setCountry(traceObjectRequest.getCountry());
traceObject.setCity(traceObjectRequest.getCity());
traceObject.setProvince(traceObjectRequest.getProvince());
traceObject.setDistrict(traceObjectRequest.getDistrict());
traceObject.setContact(traceObjectRequest.getContact());
traceObject.setContactInfo(traceObjectRequest.getContactInfo());
traceObject.setSignerName(traceObjectRequest.getSignerName());
traceObject.setAddress(traceObjectRequest.getAddress());
traceObject.setRemark(traceObjectRequest.getRemark());
traceObjectImpl.save(traceObject);
//推送pdd
PddLogisticsCoTrackNotifyRequest requests = new PddLogisticsCoTrackNotifyRequest();
requests.setClient_id(PddAPIConfig.CLIENT_ID);
requests.setShip_id(PddAPIConfig.SHIP_ID);
requests.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requests.setTimestamp(System.currentTimeMillis() / 1000);
PddLogisticsCoTrackNotifyRequest.DataObject dataObject = getDataObject(traceObjectRequest.getTrackingNumber());
requests.setDataObject(dataObject);
requests.encodeData();
requests.setSign(PddSignTool.generateSign(requests, PddAPIConfig.CLIENT_SECRET));
log.info("requestModel:{}", JSON.toJSONString(requests));
String resp = PddHttpTool.sendJsonPost(requests);
log.info("resp = {}", resp);
PddLogisticsCoTrackNotifyResponse response = JSON.parseObject(resp, PddLogisticsCoTrackNotifyResponse.class);
log.info("response = {}", JSON.toJSONString(response));
return JsonResponse.generateLocalCommonSuccessResponse(true);
}
/*出库详情*/
@PostMapping("/collectOrderInfo")
public JSONObject collectOrderInfo(HttpServletRequest request, @RequestBody CollectOrderRequest collectOrderRequest) {
Map<String, Object> map = new HashMap<>();
CollectOrderInfoResponse collectOrderInfoResponse = collectOrderImpl.getInfoByOrderCode(collectOrderRequest.getOrderCode());
List<CollectOrderDetailResponse> list = collectOrderDetailImpl.getListByOrderCode(collectOrderRequest.getOrderCode());
CollectReceiverDetailResponse collectOrderReceiverDetailResponse = collectReceiverDetailImpl.getByOrderCode(collectOrderRequest.getOrderCode());
map.put("info", collectOrderInfoResponse);
map.put("detail", list);
map.put("receiver", collectOrderReceiverDetailResponse);
return JsonResponse.generateLocalCommonSuccessResponse(map);
}
private PddLogisticsCoTrackNotifyRequest.DataObject getDataObject(String code) {
PddLogisticsCoTrackNotifyRequest.DataObject dataObjects = new PddLogisticsCoTrackNotifyRequest.DataObject();
dataObjects.setTraces(new ArrayList<>());
List<TraceObjectEntity> list = traceObjectImpl.selectByTrackingNumber(code);
List<org.ta.pddserver.model.pddlg.common.TraceObject> traceObjects = new ArrayList<>();
for (TraceObjectEntity traceObjectEntity : list) {
dataObjects.getTraces().add(TraceObject.createFromTraceEntity(traceObjectEntity));
}
return dataObjects;
}
}
......@@ -112,7 +112,7 @@ public class PddGDController {
replyRequest.setTicket_id(replyRequest.getTicket_id());
replyRequest.setWaybill_no(gdTicketEntity.getWaybill_no());
replyRequest.setHandle_result(replyRequest.getReply_call_result());
replyRequest.setHandle_result(replyRequest.getHandle_result());
replyRequest.setSign_state(replyRequest.getSign_state());
replyRequest.setCompensate_state(replyRequest.getCompensate_state());
replyRequest.setCompensate_amount(replyRequest.getCompensate_state());
......@@ -120,8 +120,13 @@ public class PddGDController {
replyRequest.setExpress_dealer(replyRequest.getExpress_dealer());
replyRequest.setExpress_dealer_contact(replyRequest.getExpress_dealer_contact());
replyRequest.setReply_type(replyRequest.getReply_type());
String attach_path_list = JSONArray.toJSONString(replyRequest.getAttach_path_list());
List<String> list = replyRequest.getAttach_paths();
String attach_path_list = JSONArray.toJSONString(replyRequest.getAttach_paths());
replyRequest.setAttach_path_list(attach_path_list);
replyRequest.setAttach_paths(null);
if (replyRequest.getReply_call_result().isEmpty()) {
replyRequest.setReply_call_result(null);
}
replyRequest.setClient_id(PddAPIConfig.CLIENT_ID);
......@@ -140,7 +145,7 @@ public class PddGDController {
GDTicketReplyRepsonse replyRepsonse = respObject.toJavaObject(GDTicketReplyRepsonse.class);
log.info("replyRepsonse is_success:{}", replyRepsonse.getIs_success());
GDReplyEntity gdReply = new GDReplyEntity();
gdReply.setTickId(replyRequest.getTicket_id());
gdReply.setTicket_id(replyRequest.getTicket_id());
gdReply.setDuty(replyRequest.getDuty());
gdReply.setHandle_result(replyRequest.getHandle_result());
gdReply.setSign_state(replyRequest.getSign_state());
......@@ -153,16 +158,18 @@ public class PddGDController {
gdReply.setHandle_result(replyRequest.getHandle_result());
gdReplyImpl.save(gdReply);
for(String lists: replyRequest.getAttach_paths()){
GDReplyAttachmentEntity gdReplyAttachmentEntity = new GDReplyAttachmentEntity();
gdReplyAttachmentEntity.setTickId(replyRequest.getTicket_id());
gdReplyAttachmentEntity.setWaybill_no(replyRequest.getWaybill_no());
gdReplyAttachmentEntity.setUrl(lists);
gdReplyAttachmentEntity.setReplyId(gdReply.getUid());
gdReplyAttachmentImpl.save(gdReplyAttachmentEntity);
if (list != null) {
for(String lists: list){
GDReplyAttachmentEntity gdReplyAttachmentEntity = new GDReplyAttachmentEntity();
gdReplyAttachmentEntity.setTicket_id(replyRequest.getTicket_id());
gdReplyAttachmentEntity.setWaybill_no(replyRequest.getWaybill_no());
gdReplyAttachmentEntity.setUrl(lists);
gdReplyAttachmentEntity.setReplyId(gdReply.getUid());
gdReplyAttachmentImpl.save(gdReplyAttachmentEntity);
}
}
return JsonResponse.generateLocalCommonSuccessResponse(replyRepsonse.getIs_success());
}
......
......@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
......@@ -16,9 +15,6 @@ import org.ta.pddserver.model.api.response.*;
import org.ta.pddserver.model.enums.ErrorEnum;
import org.ta.pddserver.model.enums.StatusEnum;
import org.ta.pddserver.model.pddjy.request.*;
import org.ta.pddserver.model.pddlg.common.TraceObject;
import org.ta.pddserver.model.pddlg.request.PddLogisticsCoTrackNotifyRequest;
import org.ta.pddserver.model.pddlg.response.PddLogisticsCoTrackNotifyResponse;
import org.ta.pddserver.service.impl.*;
import org.ta.pddserver.utils.*;
......@@ -60,10 +56,12 @@ public class PddLocalController {
@Resource
private CollectOrderImpl collectOrderImpl;
@Autowired
private CollectOrderDetailImpl collectOrderDetailImpl;
@Autowired
private TraceObjectImpl traceObjectImpl;
@Resource
UnpackMailDetailImpl unpackMailDetailImpl;
@Resource
UnpackNoticeImpl unpackNoticeImpl;
/*集运单列表*/
@PostMapping("/logOrderList")
......@@ -94,73 +92,24 @@ public class PddLocalController {
/*待拆包查询*/
@PostMapping("/packageScan")
public Map<String, Object> packageScan(HttpServletRequest request, @RequestBody MailNoRequest mailNoRequest) {
List<LogOrderMailDetailEntity> list = logOrderMailDetailImpl.getListByCode(mailNoRequest.getMailNo());
if (list.isEmpty()) {
UnpackMailDetailEntity unpackMailDetailEntity = unpackMailDetailImpl.getByMailNo(mailNoRequest.getMailNo());
if (unpackMailDetailEntity == null) {
return JsonResponse.generateOpenCommonFailedResponse(-1, "未找到拆包信息");
}
UnpackNoticeEntity unpackNoticeEntity = unpackNoticeImpl.getByCode(unpackMailDetailEntity.getOrderCode());
if (unpackNoticeEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "信息获取失败,请检查上传信息");
}
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(list.get(0).getLogisticsOrderCode());
List<UnpackMailDetailEntity> list = unpackMailDetailImpl.getListByCode(unpackMailDetailEntity.getOrderCode());
Map<String, Object> map = new HashMap<>();
map.put("logOrder", logOrderEntity);
map.put("logOrder", unpackNoticeEntity);
map.put("list", list);
return JsonResponse.generateLocalCommonSuccessResponse(map);
}
/*待拆包列表*/
@PostMapping("/traceObject")
public JSONObject traceObject(HttpServletRequest request, @RequestBody TraceObjectRequest traceObjectRequest) {
TraceObjectEntity traceObject = new TraceObjectEntity();
traceObject.setTrackingNumber(traceObjectRequest.getTrackingNumber());
traceObject.setTrackingOrderNo(traceObjectRequest.getTrackingOrderNo());
traceObject.setId(traceObjectRequest.getId());
traceObject.setStatusCode(traceObjectRequest.getStatusCode());
traceObject.setDescription(traceObjectRequest.getDescription());
traceObject.setOperationTime(traceObjectRequest.getOperationTime());
traceObject.setTransferFlag(traceObjectRequest.getTransferFlag());
traceObject.setTransferNo(traceObjectRequest.getTransferNo());
traceObject.setTransferPartnerId(traceObjectRequest.getTransferPartnerId());
traceObject.setTimeZone(traceObjectRequest.getTimeZone());
traceObject.setSiteName(traceObjectRequest.getSiteName());
traceObject.setSiteType(traceObjectRequest.getSiteType());
traceObject.setSiteNo(traceObjectRequest.getSiteNo());
traceObject.setNextSiteName(traceObjectRequest.getNextSiteName());
traceObject.setNextSiteNo(traceObjectRequest.getNextSiteNo());
traceObject.setFailReason(traceObjectRequest.getFailReason());
traceObject.setWeight(traceObjectRequest.getWeight());
traceObject.setCountry(traceObjectRequest.getCountry());
traceObject.setCity(traceObjectRequest.getCity());
traceObject.setProvince(traceObjectRequest.getProvince());
traceObject.setDistrict(traceObjectRequest.getDistrict());
traceObject.setContact(traceObjectRequest.getContact());
traceObject.setContactInfo(traceObjectRequest.getContactInfo());
traceObject.setSignerName(traceObjectRequest.getSignerName());
traceObject.setAddress(traceObjectRequest.getAddress());
traceObject.setRemark(traceObjectRequest.getRemark());
traceObjectImpl.save(traceObject);
//推送pdd
PddLogisticsCoTrackNotifyRequest requests = new PddLogisticsCoTrackNotifyRequest();
requests.setClient_id(PddAPIConfig.CLIENT_ID);
requests.setShip_id(PddAPIConfig.SHIP_ID);
requests.setTarget_client_id(PddAPIConfig.CLIENT_ID);
requests.setTimestamp(System.currentTimeMillis() / 1000);
PddLogisticsCoTrackNotifyRequest.DataObject dataObject = getDataObject(traceObjectRequest.getTrackingNumber());
requests.setDataObject(dataObject);
requests.encodeData();
requests.setSign(PddSignTool.generateSign(requests, PddAPIConfig.CLIENT_SECRET));
log.info("requestModel:{}", JSON.toJSONString(requests));
String resp = PddHttpTool.sendJsonPost(requests);
log.info("resp = {}", resp);
PddLogisticsCoTrackNotifyResponse response = JSON.parseObject(resp, PddLogisticsCoTrackNotifyResponse.class);
log.info("response = {}", JSON.toJSONString(response));
return JsonResponse.generateLocalCommonSuccessResponse(true);
}
/*出库列表*/
@PostMapping("/collectMailDetailList")
public JSONObject collectMailDetailList(HttpServletRequest request, @RequestBody CollectMailDetailListRequest collectMailDetailListRequest) {
......@@ -168,21 +117,6 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(collectMailDetailImpl.getList(collectMailDetailListRequest));
}
/*出库详情*/
@PostMapping("/collectOrderInfo")
public JSONObject collectOrderInfo(HttpServletRequest request, @RequestBody CollectOrderRequest collectOrderRequest) {
Map<String, Object> map = new HashMap<>();
CollectOrderInfoResponse collectOrderInfoResponse = collectOrderImpl.getInfoByOrderCode(collectOrderRequest.getOrderCode());
List<CollectOrderDetailResponse> list = collectOrderDetailImpl.getListByOrderCode(collectOrderRequest.getOrderCode());
CollectReceiverDetailResponse collectOrderReceiverDetailResponse = collectReceiverDetailImpl.getByOrderCode(collectOrderRequest.getOrderCode());
map.put("info", collectOrderInfoResponse);
map.put("detail", list);
map.put("receiver", collectOrderReceiverDetailResponse);
return JsonResponse.generateLocalCommonSuccessResponse(map);
}
/*待拣货列表*/
@PostMapping("/collectOrderList")
public JSONObject collectOrderList(HttpServletRequest request, @RequestBody CollectOrderListRequest collectOrderListRequest) {
......@@ -239,14 +173,24 @@ public class PddLocalController {
@PostMapping("/mailNoSelectAll")
public Map<String, Object> mailNoSelectAll(HttpServletRequest request, @RequestBody MailNoRequest mailNoRequest) {
Map<String, Object> map = new HashMap<>();
CollectMailDetailEntity collectMailDetail = collectMailDetailImpl.getByMailNo(mailNoRequest.getMailNo());
if (collectMailDetail == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "该包裹不存在出库信息");
}
List<CollectMailDetailEntity> list = collectMailDetailImpl.getListByOrderCode(collectMailDetail.getOrderCode());
CollectOrderResponse collectOrderResponse = collectOrderImpl.getByOrderCode(collectMailDetail.getOrderCode());
map.put("collectMailDetail", collectMailDetail);
map.put("list", list);
map.put("collectOrder", collectOrderResponse);
CollectOutMailDetailEntity collectOutMailDetail = collectOutMailDetailImpl.getInfoByMailNo(mailNoRequest.getMailNo());
List<CollectOutMailDetailResponse> list = collectOutMailDetailImpl.getListByOrderCode(collectOutMailDetail.getOrderCode());
CollectOrderResponse collectOrderResponse = collectOrderImpl.getByOrderCode(collectOutMailDetail.getOrderCode());
// CollectOutMailDetailEntity collectOutMailDetail = collectOutMailDetailImpl.getInfoByMailNo(mailNoRequest.getMailNo());
// List<CollectOutMailDetailResponse> list = collectOutMailDetailImpl.getListByOrderCode(collectOutMailDetail.getOrderCode());
map.put("list", list);
map.put("collectOutMailDetail", collectOutMailDetail);
// CollectOrderResponse collectOrderResponse = collectOrderImpl.getByOrderCode(collectOutMailDetail.getOrderCode());
// map.put("list", list);
// map.put("collectOutMailDetail", collectOutMailDetail);
return JsonResponse.generateLocalCommonSuccessResponse(map);
}
......@@ -285,7 +229,7 @@ public class PddLocalController {
notifyRequest.setPackageInfo(new PddServiceConsoFirstBizActionNotifyRequest.PackageInfo());
notifyRequest.getPackageInfo().setWeight(receiveRequest.getWeight());
notifyRequest.getPackageInfo().setActualWeight(receiveRequest.getActualWeight());
notifyRequest.getPackageInfo().setActualWeight(receiveRequest.getWeight());
notifyRequest.getPackageInfo().setLength(receiveRequest.getLength());
notifyRequest.getPackageInfo().setWidth(receiveRequest.getWidth());
notifyRequest.getPackageInfo().setHeight(receiveRequest.getHeight());
......@@ -376,7 +320,7 @@ public class PddLocalController {
notifyRequest.getPackageInfo().setHeight(inBoundRequest.getHeight());
notifyRequest.getPackageInfo().setWeight(inBoundRequest.getWeight());
notifyRequest.getPackageInfo().setActualWeight((long) PddJYPriceTool.calculateWeight(inBoundRequest.getLength().intValue(), inBoundRequest.getWidth().intValue(), inBoundRequest.getHeight().intValue(), inBoundRequest.getWeight().intValue(), true));
notifyRequest.getPackageInfo().setGoodsType("NORMAL");
notifyRequest.getPackageInfo().setGoodsType(inBoundRequest.getGoodsType());
notifyRequest.setResult(new PddServiceConsoInboundRequest.Result());
notifyRequest.getResult().setCode(0);
......@@ -448,16 +392,17 @@ public class PddLocalController {
notifyRequest.setTimeZone("UTC+8");
if (num >= logOrderEntity.getPackageQuantity().intValue()) {
//部分入库
notifyRequest.setStatus("PART_INBOUND");
logOrderEntity.setStatus(StatusEnum.PARTINBOUND.getCode());
} else {
//全部入库
notifyRequest.setStatus("FULL_INBOUND");
logOrderEntity.setStatus(StatusEnum.FULLINBOUND.getCode());
} else {
//部分入库
notifyRequest.setStatus("PART_INBOUND");
logOrderEntity.setStatus(StatusEnum.PARTINBOUND.getCode());
}
notifyRequest.setPackageQuantity(num + 1);
notifyRequest.setPackageQuantity(num < logOrderEntity.getPackageQuantity() ? num + 1 : logOrderEntity.getPackageQuantity());
notifyRequest.setPackageInfo(new PddServiceConsoInboundRequest.PackageInfo());
notifyRequest.getPackageInfo().setMailNo(mailNoResponse.getMailNo());
......@@ -466,7 +411,7 @@ public class PddLocalController {
notifyRequest.getPackageInfo().setWidth(inBoundRequest.getWidth());
notifyRequest.getPackageInfo().setHeight(inBoundRequest.getHeight());
notifyRequest.getPackageInfo().setWeight(inBoundRequest.getWeight());
notifyRequest.getPackageInfo().setActualWeight((long) PddJYPriceTool.calculateWeight(inBoundRequest.getLength().intValue(), inBoundRequest.getWidth().intValue(), inBoundRequest.getHeight().intValue(), inBoundRequest.getWeight().intValue(), true));
notifyRequest.getPackageInfo().setActualWeight((long) PddJYPriceTool.calculateWeight((int) inBoundRequest.getLength().longValue(), (int) inBoundRequest.getWidth().longValue(), (int) inBoundRequest.getHeight().longValue(), (int) inBoundRequest.getWeight().longValue(), true));
notifyRequest.getPackageInfo().setGoodsType(inBoundRequest.getGoodsType());
notifyRequest.setResult(new PddServiceConsoInboundRequest.Result());
......@@ -515,7 +460,7 @@ public class PddLocalController {
PddServiceConsoCoBizActionNotifyRequest notifyRequest = new PddServiceConsoCoBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setOrderCode(finishUnpackRequest.getOrderCode());
notifyRequest.setBizAction(finishUnpackRequest.getAction());
notifyRequest.setExecuteTime(timeTool.getNowString());
notifyRequest.setTimeZone("UTC+8");
......@@ -549,20 +494,20 @@ public class PddLocalController {
} else if (("finish_unpack").equals(finishUnpackRequest.getAction())) {
PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
// LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
//
// if (logOrderEntity == null) {
// return JsonResponse.generateLocalCommonFailedResponse("-1", "未查到集运单信息,请检查参数");
// }
if (packageNoticeEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查到拆包信息,请检查参数");
}
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
if (logOrderEntity == null) {
UnpackNoticeEntity unpackNoticeEntity = unpackNoticeImpl.getByCode(finishUnpackRequest.getOrderCode());
if (unpackNoticeEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查到集运单信息,请检查参数");
}
notifyRequest.setOrderCode(finishUnpackRequest.getOrderCode());
notifyRequest.setBizActionDesc("拆包完成");
notifyRequest.setUnpackRemark("");
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHUNPACKERROR.getCode());
......@@ -575,7 +520,7 @@ public class PddLocalController {
packageInfo.setHeight(lists.getHeight());
packageInfo.setLength(lists.getLength());
packageInfo.setActualWeight((long) PddJYPriceTool.calculateWeight(lists.getLength().intValue(), lists.getWidth().intValue(), lists.getHeight().intValue(), lists.getWeight().intValue(), true));
packageInfo.setConsoType(logOrderEntity.getConsoType());
packageInfo.setConsoType(unpackNoticeEntity.getConsoType());
packageInfo.setGoodsType(finishUnpackRequest.getGoodsType());
notifyRequest.getPackageInfos().add(packageInfo);
......@@ -592,11 +537,17 @@ public class PddLocalController {
logOrderPackageImpl.save(logOrderPackageEntity);
logOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus());
logOrderImpl.updateById(logOrderEntity);
// logOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus());
// logOrderImpl.updateById(logOrderEntity);
PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
if (packageNoticeEntity != null) {
packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
packageNoticeImpl.updateById(packageNoticeEntity);
}
packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
packageNoticeImpl.updateById(packageNoticeEntity);
}
}
notifyRequest.setResult(new PddServiceConsoCoBizActionNotifyRequest.Result());
......@@ -649,6 +600,7 @@ public class PddLocalController {
public JSONObject finishUnpack(HttpServletRequest request, @RequestBody FinishUnpackRequest finishUnpackRequest) {
String action = finishUnpackRequest.getAction();
// UnpackMailDetailEntity unpackMailDetailEntity = unpackMailDetailImpl.getByMailNo(finishUnpackRequest.getMailNo());
PddServiceConsoCoBizActionNotifyRequest notifyRequest = new PddServiceConsoCoBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
......@@ -660,9 +612,7 @@ public class PddLocalController {
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
PddServiceConsoCoBizActionNotifyRequest.Result notifyResult = new PddServiceConsoCoBizActionNotifyRequest.Result();
CollectOrderEntity collectOrderEntity = new CollectOrderEntity();
if (action.equals("begin_pick")) {
collectOrderEntity = collectOrderImpl.getAllInfoByOrderCode(finishUnpackRequest.getOrderCode());
......@@ -676,7 +626,6 @@ public class PddLocalController {
notifyRequest.setBizActionDesc("开始拣货");
notifyResult.setCode(0);
} else if (action.equals("finish_pick")) {
collectOrderEntity = collectOrderImpl.getAllInfoByOrderCode(finishUnpackRequest.getOrderCode());
if (collectOrderEntity == null) {
......@@ -688,21 +637,12 @@ public class PddLocalController {
notifyRequest.setBizActionDesc("拣货完成");
notifyResult.setCode(0);
} else if (action.equals("finish_unpack")) {
PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
if (packageNoticeEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查到拆包信息,请检查参数");
}
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
if (logOrderEntity == null) {
return JsonResponse.generateLocalCommonFailedResponse("-1", "未查到集运单信息,请检查参数");
}
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHUNPACK.getCode());
UnpackNoticeEntity unpackNoticeEntity = unpackNoticeImpl.getByCode(finishUnpackRequest.getOrderCode());
// LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
// if (logOrderEntity == null) {
// return JsonResponse.generateLocalCommonFailedResponse("-1", "未查到集运单信息,请检查参数");
// }
// logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHUNPACK.getCode());
notifyRequest.setBizActionDesc("拆包完成");
notifyRequest.setUnpackRemark("");
......@@ -719,7 +659,7 @@ public class PddLocalController {
packageInfo.setHeight(lists.getHeight());
packageInfo.setLength(lists.getLength());
packageInfo.setActualWeight((long) PddJYPriceTool.calculateWeight(lists.getLength().intValue(), lists.getWidth().intValue(), lists.getHeight().intValue(), lists.getWeight().intValue(), true));
packageInfo.setConsoType(logOrderEntity.getConsoType());
packageInfo.setConsoType(unpackNoticeEntity.getConsoType());
packageInfo.setGoodsType(finishUnpackRequest.getGoodsType());
notifyRequest.getPackageInfos().add(packageInfo);
......@@ -735,11 +675,13 @@ public class PddLocalController {
logOrderPackageImpl.save(logOrderPackageEntity);
logOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus());
logOrderImpl.updateById(logOrderEntity);
PackageNoticeEntity packageNoticeEntity = packageNoticeImpl.getByOrderCode(finishUnpackRequest.getOrderCode());
if (packageNoticeEntity != null) {
packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
packageNoticeImpl.updateById(packageNoticeEntity);
}
packageNoticeEntity.setStatus("" + logOrderMailDetailIoEntity.getStatus());
packageNoticeImpl.updateById(packageNoticeEntity);
}
......@@ -774,9 +716,11 @@ public class PddLocalController {
collectMailDetailImpl.updateById(lists);
}
collectOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus());
if (collectOrderEntity != null) {
collectOrderEntity.setStatus(logOrderMailDetailIoEntity.getStatus());
collectOrderImpl.updateById(collectOrderEntity);
}
collectOrderImpl.updateById(collectOrderEntity);
}
return JsonResponse.generateLocalCommonSuccessResponse(true);
......@@ -864,16 +808,16 @@ public class PddLocalController {
// TODO 此处异常,需要处理
//获取所有可出库订单
List<CollectOutMailDetailResponse> list = collectOutMailDetailImpl.getListByOrderCode(outBoundRequest.getOrderCode());
List<CollectMailDetailEntity> list = collectMailDetailImpl.getListByOrderCode(outBoundRequest.getOrderCode());
if (list != null && !list.isEmpty()) {
// 拆单操作
// 存储需要删除的元素
List<CollectOutMailDetailResponse> toRemoveList = new ArrayList<>();
List<CollectMailDetailEntity> toRemoveList = new ArrayList<>();
List<OutBoundRequest.OutBoundList> toRemoveOutBound = new ArrayList<>();
for (CollectOutMailDetailResponse lists : list) {
for (CollectMailDetailEntity lists : list) {
for (OutBoundRequest.OutBoundList outBoundLists : outBoundList) {
if (lists.getMailNo().equals(outBoundLists.getMailNo())) {
toRemoveList.add(lists);
......@@ -906,16 +850,18 @@ public class PddLocalController {
notifyRequest.setIsSplitOut("N");
notifyRequest.setPackageInfos(new ArrayList<>());
PddServiceConsoOutboundRequest.PackageInfo packageInfo = new PddServiceConsoOutboundRequest.PackageInfo();
notifyRequest.getPackageInfos().add(packageInfo);
// packageInfo.setOutboundMailNo(outBoundRequest.getMailNo());
// packageInfo.setExpressCode(outBoundRequest.getExpressCode());
// packageInfo.setPackageType(outBoundRequest.getPackageType());
// packageInfo.setLength(outBoundRequest.getLength());
// packageInfo.setWidth(outBoundRequest.getWidth());
// packageInfo.setHeight(outBoundRequest.getHeight());
// packageInfo.setWeight(outBoundRequest.getWeight());
for (OutBoundRequest.OutPackage outPackage : outBoundRequest.getOutPackageList()) {
PddServiceConsoOutboundRequest.PackageInfo packageInfo = new PddServiceConsoOutboundRequest.PackageInfo();
notifyRequest.getPackageInfos().add(packageInfo);
packageInfo.setOutboundMailNo(outPackage.getMailNo());
packageInfo.setExpressCode(outPackage.getExpressCode());
packageInfo.setPackageType(outPackage.getPackageType());
packageInfo.setLength(outPackage.getLength());
packageInfo.setWidth(outPackage.getWidth());
packageInfo.setHeight(outPackage.getHeight());
packageInfo.setWeight(outPackage.getWeight());
}
notifyRequest.setSenderDetail(new PddServiceConsoOutboundRequest.SenderDetail());
......@@ -957,21 +903,25 @@ public class PddLocalController {
requestModel.setSign(PddSignTool.generateSign(requestModel, PddAPIConfig.CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPost(requestModel);
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
// logOrderMailDetailIoEntity.setMailNo(outBoundRequest.getMailNo());
// logOrderMailDetailIoEntity.setExpressCode(outBoundRequest.getExpressCode());
// logOrderMailDetailIoEntity.setLogisticsOrderCode(outBoundRequest.getOrderCode());
// logOrderMailDetailIoEntity.setExpressCode(outBoundRequest.getExpressCode());
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHOUTBOUND.getCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
for (OutBoundRequest.OutPackage outPackage : outBoundRequest.getOutPackageList()) {
LogOrderMailDetailIoEntity logOrderMailDetailIoEntity = new LogOrderMailDetailIoEntity();
logOrderMailDetailIoEntity.setMailNo(outPackage.getMailNo());
logOrderMailDetailIoEntity.setExpressCode(outPackage.getExpressCode());
logOrderMailDetailIoEntity.setLogisticsOrderCode(outBoundRequest.getOrderCode());
logOrderMailDetailIoEntity.setExpressCode(outPackage.getExpressCode());
logOrderMailDetailIoEntity.setStatus(StatusEnum.FINISHOUTBOUND.getCode());
logOrderMailDetailIoEntity.setReq(JSON.toJSONString(requestModel));
logOrderMailDetailIoEntity.setResp(resp);
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
logOrderMailDetailIoImpl.save(logOrderMailDetailIoEntity);
//更新collect_mail_detail
for (CollectOutMailDetailResponse lists : list) {
Boolean result = collectMailDetailImpl.updateByMailNo(lists.getMailNo(), logOrderMailDetailIoEntity.getStatus());
//更新collect_mail_detail
for (CollectMailDetailEntity lists : list) {
Boolean result = collectMailDetailImpl.updateByMailNo(lists.getMailNo(), logOrderMailDetailIoEntity.getStatus());
}
}
return JsonResponse.generateLocalCommonSuccessResponse(true);
}
......@@ -982,17 +932,4 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(logOrderMailDetailIoImpl.getListByRequest(param));
}
private PddLogisticsCoTrackNotifyRequest.DataObject getDataObject(String code) {
PddLogisticsCoTrackNotifyRequest.DataObject dataObjects = new PddLogisticsCoTrackNotifyRequest.DataObject();
dataObjects.setTraces(new ArrayList<>());
List<TraceObjectEntity> list = traceObjectImpl.selectByTrackingNumber(code);
List<org.ta.pddserver.model.pddlg.common.TraceObject> traceObjects = new ArrayList<>();
for (TraceObjectEntity traceObjectEntity : list) {
dataObjects.getTraces().add(TraceObject.createFromTraceEntity(traceObjectEntity));
}
return dataObjects;
}
}
......@@ -9,6 +9,7 @@ import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.ta.pddserver.config.PddAPIConfig;
import org.ta.pddserver.entity.*;
import org.ta.pddserver.model.ConsignmentOrder;
import org.ta.pddserver.model.api.response.CollectOrderResponse;
import org.ta.pddserver.model.enums.IdentityErrorType;
import org.ta.pddserver.model.pddjy.request.JYBaseRequestModel;
......@@ -55,6 +56,8 @@ public class PddOpenController {
@Resource
private UnpackNoticeImpl unpackNoticeImpl;
@Resource
private UnpackMailDetailImpl unpackMailDetailImpl;
@Resource
private UserIdentifyImpl userIdentifyImpl;
@Resource
TraceObjectImpl traceObjectImpl;
......@@ -769,6 +772,15 @@ public class PddOpenController {
unpackNoticeEntity.setProviderCode(noticeRequest.getProviderCode());
unpackNoticeEntity.setMailDetails(JSONObject.toJSONString(noticeRequest.getMailDetails()));
unpackNoticeEntity.setReceiverDetail(JSONObject.toJSONString(noticeRequest.getReceiverDetail()));
for (PddServiceConsoUnpackNoticeRequest.MailDetail mailDetail :noticeRequest.getMailDetails()){
UnpackMailDetailEntity unpackMailDetailEntity = new UnpackMailDetailEntity();
unpackMailDetailEntity.setMailNo(mailDetail.getMailNo());
unpackMailDetailEntity.setExpressCode(mailDetail.getExpressCode());
unpackMailDetailEntity.setStatus(1);
unpackMailDetailEntity.setOrderCode(noticeRequest.getOrderCode());
unpackMailDetailEntity.setConsoWarehouseCode(mailDetail.getConsoWarehouseCode());
unpackMailDetailImpl.save(unpackMailDetailEntity);
}
unpackNoticeImpl.save(unpackNoticeEntity);
}
......
......@@ -19,8 +19,8 @@ public class GDReplyAttachmentEntity {
/**
* 工单id
*/
@TableField(value = "tickId")
private Long tickId;
@TableField(value = "ticket_id")
private Long ticket_id;
/**
* 物流单号
......
......@@ -25,7 +25,7 @@ public class GDReplyEntity {
@TableField(value = "remarks")
private String remarks;
@TableField(value = "uid")
@TableId(value = "uid")
private String uid;
@TableField(value = "status")
......@@ -34,8 +34,8 @@ public class GDReplyEntity {
/**
* 工单id
*/
@TableField(value = "tickId")
private Long tickId;
@TableField(value = "ticket_id")
private Long ticket_id;
/**
* 物流单号
......
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;
import java.io.Serializable;
@Data
@TableName("gd_ticket")
public class GDTicket2Entity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "uid")
private String uid;
@TableField(value = "state")
private Integer state;
@TableField(value = "remarks")
private String remarks;
/**
* 国家/区域名称(集运工单特有)
*/
@TableField(value = "area_name")
public String area_name;
/**
* 创建时间
*/
@TableField(value = "create_at")
public Long create_at;
/**
* 更新时间
*/
@TableField(value = "update_at")
private Long update_at;
/**
* 工单创建来源
* 0:平台 1:消费者 2:商家
*/
@TableField(value = "create_type")
public Integer create_type;
/**
* 64位,工单来源为消费者时,传收件地址,其他来源该字段为空
*/
@TableField(value = "receive_address")
private String receive_address;
/**
* 64位,工单来源为消费者时,消费者姓名,其他来源该字段为空
*/
@TableField(value = "receive_name")
private String receive_name;
/**
* 64位,工单来源为消费者时,消费者电话,其他来源该字段为空
*/
@TableField(value = "receive_contact")
private String receive_contact;
/**
* 订单号生成的物流单号
*/
@TableField(value = "pre_delivery_id")
public String pre_delivery_id;
/**
* 问题描述
*/
@TableField(value = "title")
private String title;
/**
* 备注
*/
@TableField(value = "description")
public String description;
/**
* 问题来源, 0:买家,1:卖家
*/
@TableField(value = "source")
private Integer source;
/**
* 末端品牌代码
*/
@TableField(value = "cabinet_code")
private String cabinet_code;
/**
* 紧急度,0:中,1:紧急
*/
@TableField(value = "urgent_type")
private Integer urgent_type;
/**
* 物流投诉标签
*/
@TableField(value = "sub_type_ids")
private String sub_type_ids;
/**
* 运单号
*/
@TableField(value = "waybill_no")
private String waybill_no;
/**
* 赔付状态 0:默认,1:未赔付,2:已赔付
*/
@TableField(value = "compensate_state")
private Integer compensate_state;
/**
* 赔付金额(单位:分)
*/
@TableField(value = "compensate_amount")
private Integer compensate_amount;
/**
* 问题类型id
*/
@TableField(value = "type_id")
private Integer type_id;
/**
* 工单ID
*/
@TableField(value = "ticket_id")
private Long ticket_id;
/**
* 0:默认,1:未签收,2:已签收
*/
@TableField(value = "sign_state")
private Integer sign_state;
/**
* 责任方,0:默认, 1:消费者,2:商家,3:快递公司,4:其他
*/
@TableField(value = "duty")
private Integer duty;
/**
* 工单退回次数
* 0标识首次下发
* 1标识二次下发
* 2 标识三次下发
*/
@TableField(value = "retreat_count")
private Integer retreat_count;
/**
* 表示的是物流商回复状态,0:待回复,1:已回复
*/
@TableField(value = "status")
private Integer status;
/**
* 物流商处理结果
*/
@TableField(value = "handle_result")
private String handle_result;
/**
* 物流商快递编码
*/
@TableField(value = "express_company_id")
private Long express_company_id;
/**
* 处理人
*/
@TableField(value = "express_dealer")
private String express_dealer;
/**
* 处理人联系方式
*/
@TableField(value = "express_dealer_contact")
private String express_dealer_contact;
/**
* 退货寄件订单号
*/
@TableField(value = "mail_order_sn")
private String mail_order_sn;
/**
* 64位,工单来源为商家时,传揽件地址,其他来源该字段为空
*/
@TableField(value = "send_address")
private String send_address;
/**
* 订单金额
*/
@TableField(value = "pay_amount")
private Long pay_amount;
}
......@@ -11,7 +11,7 @@ import java.util.List;
@Data
@TableName("gd_ticket")
public class GDTicketEntity {
public class GDTicketEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "uid")
......@@ -28,13 +28,13 @@ public class GDTicketEntity {
/**
* 创建时间
*/
@TableField(value = "created_at")
public Long created_at;
@TableField(value = "create_at")
public Long create_at;
/**
* 更新时间
*/
@TableField(value = "updated_at")
private Long updated_at;
@TableField(value = "update_at")
private Long update_at;
/**
* 工单创建来源
* 0:平台 1:消费者 2:商家
......
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("unpack_mail_detail")
public class UnpackMailDetailEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "created")
private String created;
@TableField(value = "updated")
private String updated;
/**
* 状态 默认为0,11通知拆包,19完成拆包
*/
@TableField(value = "status")
private Integer status;
/**
* 合包单号(必填)
*/
@TableField(value = "orderCode")
private String orderCode;
/**
* 快递公司编号(必填)
*/
@TableField(value = "expressCode")
private String expressCode;
/**
* 运单号(必填)
*/
@TableField(value = "mailNo")
private String mailNo;
/**
* 包裹对应的仓库编码(非必填)
*/
@TableField(value = "consoWarehouseCode")
private String consoWarehouseCode;
}
......@@ -35,6 +35,6 @@ public interface CollectMailDetailMapper extends BaseMapper<CollectMailDetailEnt
@Select("SELECT * FROM `collect_mail_detail` WHERE `orderCode` = #{orderCode}")
List<CollectMailDetailEntity> findListByOrderCode(@Param("orderCode") String orderCode);
@Select("SELECT * FROM `collect_mail_detail` WHERE `mailNo` = #{mailNo};")
@Select("SELECT * FROM `collect_mail_detail` WHERE `mailNo` = #{mailNo} ORDER BY `uid` DESC LIMIT 1;")
CollectMailDetailEntity findByMailNo(String mailNo);
}
......@@ -10,8 +10,8 @@ import org.ta.pddserver.model.api.response.CollectReceiverDetailResponse;
@Mapper
public interface CollectReceiverDetailMapper extends BaseMapper<CollectReceiverDetailEntity> {
@Select("SELECT * FROM `collect_order_receiver_detail` WHERE `orderCode` = #{orderCode} AND `state` > 0")
CollectReceiverDetailEntity getInfoByOrderCode(@Param("orderCode") String orderCode);
CollectReceiverDetailEntity findByOrderCode(@Param("orderCode") String orderCode);
@Select("SELECT `uid`, `name`, `idNumber`, `telePhone`, `country`, `province`, `city`, `district`, `detailAddress`, `postCode` FROM `collect_order_receiver_detail` WHERE `orderCode` = #{orderCode} AND `state` > 0")
CollectReceiverDetailResponse getByOrderCode(@Param("orderCode") String orderCode);
CollectReceiverDetailResponse findInfoByOrderCode(@Param("orderCode") String orderCode);
}
......@@ -12,5 +12,5 @@ import java.util.List;
public interface GDAttachmentMapper extends BaseMapper<GDAttachmentEntity> {
@Select("SELECT * FROM `gd_attachment` WHERE `ticket_id` = ${ticketId}")
List<GDAttachmentEntity> getListByTicketId(@Param("ticketId") int ticketId);
List<GDAttachmentEntity> getListByTicketId(@Param("ticketId") Long ticketId);
}
......@@ -13,5 +13,5 @@ import java.util.List;
public interface GDReplyMapper extends BaseMapper<GDReplyEntity> {
@Select("SELECT a.* , IFNULL(GROUP_CONCAT(b.`url` SEPARATOR ';'), '') AS attach_paths FROM `gd_reply` a LEFT JOIN `gd_reply_attachment` b ON a.`uid` = b.`replyId` WHERE a.`ticket_id` = #{ticket_id} GROUP BY a.`uid` ORDER BY a.`uid` ASC")
List<GDReplyListResponse> findListByTicketId(@Param("ticketId") int ticketId);
List<GDReplyListResponse> findListByTicketId(@Param("ticket_id") Long ticket_id);
}
......@@ -17,9 +17,9 @@ public interface GDTicketMapper extends BaseMapper<GDTicketEntity> {
@Select("SELECT * FROM `gd_ticket` WHERE `ticket_id` = #{ticketId};")
GDTicketEntity findByTicketId(Long ticketId);
@Select("SELECT COUNT(*) FROM (SELECT `uid` FROM `gd_ticket` WHERE ( #{source} IS NULL OR #{source} = '' OR `source` LIKE CONCAT('%', #{source}, '%')) AND ( #{title} IS NULL OR #{title} = '' OR `title` LIKE CONCAT('%', #{title}, '%') ) AND ( #{create_type} IS NULL OR #{create_type} = '' OR `create_type` LIKE CONCAT('%', #{create_type}, '%') ) AND ( #{compensate_state} IS NULL OR #{compensate_state} = '' OR `compensate_state` LIKE CONCAT('%', #{compensate_state}, '%') ) AND ( #{type_id} IS NULL OR #{type_id} = '' OR `type_id` LIKE CONCAT('%', #{type_id}, '%') ) AND ( #{sign_state} IS NULL OR #{sign_state} = '' OR `sign_state` LIKE CONCAT('%', #{sign_state}, '%') ) AND ( #{urgent_type} IS NULL OR #{urgent_type} = '' OR `urgent_type` LIKE CONCAT('%', #{urgent_type}, '%')) ) t")
@Select("SELECT COUNT(*) FROM `gd_ticket`")
Integer countUsable(TicketListRequest param);
@Select("SELECT * FROM `gd_ticket` WHERE ( #{source} IS NULL OR #{source} = '' OR `source` LIKE CONCAT('%', #{source}, '%')) AND ( #{title} IS NULL OR #{title} = '' OR `title` LIKE CONCAT('%', #{title}, '%') ) AND ( #{create_type} IS NULL OR #{create_type} = '' OR `create_type` LIKE CONCAT('%', #{create_type}, '%') ) AND ( #{compensate_state} IS NULL OR #{compensate_state} = '' OR `compensate_state` LIKE CONCAT('%', #{compensate_state}, '%') ) AND ( #{type_id} IS NULL OR #{type_id} = '' OR `type_id` LIKE CONCAT('%', #{type_id}, '%') ) AND ( #{sign_state} IS NULL OR #{sign_state} = '' OR `sign_state` LIKE CONCAT('%', #{sign_state}, '%') ) AND ( #{urgent_type} IS NULL OR #{urgent_type} = '' OR `urgent_type` LIKE CONCAT('%', #{urgent_type}, '%') )")
@Select("SELECT `uid`, `title`, `ticket_id`, `waybill_no`, `description`, `create_at`, `update_at` FROM `gd_ticket` ORDER BY `update_at` DESC LIMIT #{offset}, #{size} ")
List<GDTicketEntity> getListByRequest(TicketListRequest param);
}
......@@ -20,7 +20,7 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select("SELECT * FROM `log_order_mail_detail` WHERE `logisticsOrderCode` = #{logisticsOrderCode} AND `state` > 0;")
List<LogOrderMailDetailEntity> getListByCode(String logisticsOrderCode);
@Select("SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} AND `state` > 0;")
@Select("SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} AND `state` > 0 ORDER BY `uid` DESC LIMIT 1;")
LogOrderMailDetailEntity findByMailNo(String mailNo);
@Select("SELECT * FROM `log_order_package` WHERE `logisticsOrderCode` = #{logisticsOrderCode} AND `state` > 0;")
......@@ -34,16 +34,16 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select("SELECT a.`uid`, a.`logisticsOrderCode` , a.`expressCode` ,a.`mailNo`, a.`updated`, a.`status`, b.`num` FROM `log_order_mail_detail` a, `log_order` b WHERE a.`mailNo` = #{mailNo} AND a.`logisticsOrderCode` = b.`logisticsOrderCode`;")
@Select("SELECT a.`uid`, a.`logisticsOrderCode` , a.`expressCode` ,a.`mailNo`, a.`updated`, a.`status`, b.`num` FROM `log_order_mail_detail` a, `log_order` b WHERE a.`mailNo` = #{mailNo} AND a.`logisticsOrderCode` = b.`logisticsOrderCode` ORDER BY a.`uid` DESC LIMIT 1;")
MailNoResponse getInfoByMailNo(@Param("mailNo") String mailNo);
@Select("SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} ;")
@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};")
@Update("UPDATE `log_order_mail_detail` SET `status` = ${status} WHERE `mailNo` = #{mailNo} ORDER BY `uid` DESC LIMIT 1;")
Boolean updateByMailNo(@Param("mailNo")String mailNo, @Param("status") int status);
@Select("SELECT COUNT(*) FROM `log_order_mail_detail` WHERE `logisticsOrderCode` = #{logisticsOrderCode} AND `status` = ${status};")
@Select("SELECT COUNT(*) FROM `log_order_mail_detail` WHERE `logisticsOrderCode` = #{logisticsOrderCode} AND `status` = ${status} ORDER BY `uid` DESC LIMIT 1;")
Long getSumByCodeStatus(@Param("logisticsOrderCode") String logisticsOrderCode, @Param("status") Long status);
}
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.pddserver.entity.UnpackMailDetailEntity;
import java.util.List;
@Mapper
public interface UnpackMailDetailMapper extends BaseMapper<UnpackMailDetailEntity> {
@Select("SELECT * FROM `unpack_mail_detail` WHERE `mailNo` = #{mailNo};")
UnpackMailDetailEntity findByMailNo(String mailNo);
@Select("SELECT * FROM `unpack_mail_detail` WHERE `orderCode` = #{orderCode};")
List<UnpackMailDetailEntity> findByOrderCode(String orderCode);
}
......@@ -13,4 +13,7 @@ public interface UnpackNoticeMapper extends BaseMapper<UnpackNoticeEntity> {
// 根据用户名查找用户
@Select("SELECT * FROM `unpack_notice` WHERE `username` = #{username};")
List<UnpackNoticeEntity> selectByUsername(String username);
@Select("SELECT * FROM `unpack_notice` WHERE `orderCode` = #{orderCode} ORDER BY `uid` DESC LIMIT 1;")
UnpackNoticeEntity selectByOrderCode(String orderCode);
}
......@@ -6,21 +6,7 @@ import org.ta.pddserver.model.common.PageTool;
@Data
public class TicketListRequest extends PageTool {
private String source;
private String title;
private int create_type;
private int compensate_state;
private int type_id;
private int sign_state;
private int urgent_type;
private String area_name;
private int ticket_id;
private Long ticket_id;
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.UnpackMailDetailEntity;
public interface UnpackMailDetailService extends IService<UnpackMailDetailEntity> {
}
......@@ -13,10 +13,10 @@ public class CollectReceiverDetailImpl extends ServiceImpl<CollectReceiverDetail
public CollectReceiverDetailEntity getInfoByOrderCode(String orderCode) {
return baseMapper.getInfoByOrderCode(orderCode);
return baseMapper.findByOrderCode(orderCode);
}
public CollectReceiverDetailResponse getByOrderCode(String orderCode) {
return baseMapper.getByOrderCode(orderCode);
return baseMapper.findInfoByOrderCode(orderCode);
}
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ import java.util.List;
public class GDAttachmentImpl extends ServiceImpl<GDAttachmentMapper, GDAttachmentEntity> implements GDAttachmentService {
public List<GDAttachmentEntity> getListByTicketId(int ticketId) {
public List<GDAttachmentEntity> getListByTicketId(Long ticketId) {
return baseMapper.getListByTicketId(ticketId);
}
}
\ No newline at end of file
......@@ -14,7 +14,7 @@ import java.util.List;
public class GDReplyImpl extends ServiceImpl<GDReplyMapper, GDReplyEntity> implements GDReplyService {
public List<GDReplyListResponse> findListByTicketId(int ticketId) {
public List<GDReplyListResponse> findListByTicketId(Long ticketId) {
return baseMapper.findListByTicketId(ticketId);
}
}
\ 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.pddserver.entity.UnpackMailDetailEntity;
import org.ta.pddserver.mapper.UnpackMailDetailMapper;
import org.ta.pddserver.service.UnpackMailDetailService;
import java.util.List;
@Service
public class UnpackMailDetailImpl extends ServiceImpl<UnpackMailDetailMapper, UnpackMailDetailEntity> implements UnpackMailDetailService {
public UnpackMailDetailEntity getByMailNo(String mailNo) {
return this.baseMapper.findByMailNo(mailNo);
}
public List<UnpackMailDetailEntity> getListByCode(String orderCode) {
return this.baseMapper.findByOrderCode(orderCode);
}
}
\ No newline at end of file
......@@ -14,4 +14,7 @@ import org.ta.pddserver.service.UnpackNoticeService;
public class UnpackNoticeImpl extends ServiceImpl<UnpackNoticeMapper, UnpackNoticeEntity> implements UnpackNoticeService {
public UnpackNoticeEntity getByCode(String orderCode) {
return this.baseMapper.selectByOrderCode(orderCode);
}
}
\ No newline at end of file
......@@ -36,40 +36,44 @@ public class GDOperator {
if (gdTicketEntity == null) {
// todo 保存
// 主体、绑定两个表
gdTicketEntity = new GDTicketEntity();
gdTicketEntity.setTicket_id(gdTicketRepsonse.getTicket_id());
gdTicketEntity.setCreate_type(gdTicketRepsonse.getCreate_type());
gdTicketEntity.setReceive_address(gdTicketRepsonse.getReceive_address());
gdTicketEntity.setSend_address(gdTicketRepsonse.getSend_address());
gdTicketEntity.setPre_delivery_id(gdTicketRepsonse.getPre_delivery_id());
gdTicketEntity.setHandle_result(gdTicketRepsonse.getHandle_result());
gdTicketEntity.setExpress_company_id((long)gdTicketRepsonse.getExpress_company_id());
gdTicketEntity.setCompensate_state((int)gdTicketRepsonse.getCompensate_state());
gdTicketEntity.setCompensate_amount(gdTicketRepsonse.getCompensate_amount().intValue());
gdTicketEntity.setSign_state((int)gdTicketRepsonse.getSign_state());
gdTicketEntity.setExpress_dealer(gdTicketRepsonse.getExpress_dealer());
gdTicketEntity.setExpress_dealer_contact(gdTicketRepsonse.getExpress_dealer_contact());
gdTicketEntity.setRetreat_count(gdTicketRepsonse.getRetreat_count());
gdTicketEntity.setReceive_name(gdTicketRepsonse.getReceive_name());
gdTicketEntity.setReceive_contact(gdTicketRepsonse.getReceive_contact());
// gdTicketEntity.setCreate_type(gdTicketRepsonse.getCreate_type());
// gdTicketEntity.setReceive_address(gdTicketRepsonse.getReceive_address());
// gdTicketEntity.setSend_address(gdTicketRepsonse.getSend_address());
// gdTicketEntity.setPre_delivery_id(gdTicketRepsonse.getPre_delivery_id());
// gdTicketEntity.setHandle_result(gdTicketRepsonse.getHandle_result());
// gdTicketEntity.setExpress_company_id((long)gdTicketRepsonse.getExpress_company_id());
// gdTicketEntity.setCompensate_state((int)gdTicketRepsonse.getCompensate_state());
// gdTicketEntity.setCompensate_amount(gdTicketRepsonse.getCompensate_amount().intValue());
// gdTicketEntity.setSign_state((int)gdTicketRepsonse.getSign_state());
// gdTicketEntity.setExpress_dealer(gdTicketRepsonse.getExpress_dealer());
// gdTicketEntity.setExpress_dealer_contact(gdTicketRepsonse.getExpress_dealer_contact());
// gdTicketEntity.setRetreat_count(gdTicketRepsonse.getRetreat_count());
// gdTicketEntity.setReceive_name(gdTicketRepsonse.getReceive_name());
// gdTicketEntity.setReceive_contact(gdTicketRepsonse.getReceive_contact());
gdTicketEntity.setCreated_at(gdTicketRepsonse.getCreated_at());
gdTicketEntity.setUpdated_at(gdTicketRepsonse.getUpdated_at());
gdTicketEntity.setTitle(gdTicketRepsonse.getTitle());
gdTicketEntity.setDescription(gdTicketRepsonse.getDescription());
gdTicketEntity.setSource(gdTicketRepsonse.getSource());
gdTicketEntity.setCreate_at(gdTicketRepsonse.getCreated_at());
gdTicketEntity.setUpdate_at(gdTicketRepsonse.getUpdated_at());
// gdTicketEntity.setTitle(gdTicketRepsonse.getTitle());
// gdTicketEntity.setDescription(gdTicketRepsonse.getDescription());
// gdTicketEntity.setSource(gdTicketRepsonse.getSource());
gdTicketEntity.setWaybill_no(gdTicketRepsonse.getWaybill_no());
gdTicketEntity.setUrgent_type(gdTicketRepsonse.getUrgent_type());
gdTicketEntity.setType_id(gdTicketRepsonse.getType_id());
gdTicketEntity.setStatus(gdTicketRepsonse.getStatus());
gdTicketEntity.setCabinet_code(gdTicketRepsonse.getCabinet_code());
gdTicketEntity.setMail_order_sn(gdTicketRepsonse.getMail_order_sn());
gdTicketEntity.setPay_amount(gdTicketRepsonse.getPay_amount());
gdTicketEntity.setArea_name(gdTicketRepsonse.getArea_name());
// gdTicketEntity.setUrgent_type(gdTicketRepsonse.getUrgent_type());
// gdTicketEntity.setType_id(gdTicketRepsonse.getType_id());
// gdTicketEntity.setStatus(gdTicketRepsonse.getStatus());
// gdTicketEntity.setCabinet_code(gdTicketRepsonse.getCabinet_code());
// gdTicketEntity.setMail_order_sn(gdTicketRepsonse.getMail_order_sn());
// gdTicketEntity.setPay_amount(gdTicketRepsonse.getPay_amount());
// gdTicketEntity.setArea_name(gdTicketRepsonse.getArea_name());
gdTicketImpl.save(gdTicketEntity);
//
List<GDTicketRepsonse.ExpressAttachment> expressAttachmentList = gdTicketRepsonse.getExpress_attachment();
if (expressAttachmentList == null) {
return;
}
for(GDTicketRepsonse.ExpressAttachment expressAttachmentLists: expressAttachmentList){
GDAttachmentEntity gdAttachmentEntity = new GDAttachmentEntity();
gdAttachmentEntity.setTickId(gdTicketEntity.getTicket_id());
......
......@@ -4,7 +4,11 @@ spring:
# url: jdbc:mysql://192.168.2.222:3306/pdd_api?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
# username: root
# password: root
url: jdbc:mysql://lyhj-mysql.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
# username: pdd
# password: pdd123
url: jdbc:mysql://rm-j6cv8n7zx12x0sqreuo.mysql.rds.aliyuncs.com:3306/pdd_prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
username: pdd
password: pdd123
hikari:
......@@ -17,4 +21,12 @@ spring:
application:
name: PddServer
server:
port: 9000
\ No newline at end of file
port: 9000
logging:
level:
org:
ta:
pddserver: debug
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
\ No newline at end of file
......@@ -17,7 +17,7 @@ import java.util.Date;
@Slf4j
public class CommonTest {
private String firstLogisticsOrderCode = "PC25110715653142530023271";
private String firstLogisticsOrderCode = "PC25111006871947680723271";
private static String getNowString() {
Date date = new Date();
......@@ -526,8 +526,8 @@ public class CommonTest {
*/
@Test
public void problemNotify() {
String mailNo = "773838955577767";
String expressCode = "STO";
String mailNo = "SF3298516646348";
String expressCode = "SF";
PddServiceConsoProblemOrderNotifyRequest notifyRequest = new PddServiceConsoProblemOrderNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
notifyRequest.setExecuteTime(getNowString());
......@@ -652,8 +652,8 @@ public class CommonTest {
*/
@Test
public void destroy() {
String mailNo = "773230214487313";
String expressCode = "STO";
String mailNo = "SF3298513357701";
String expressCode = "SF";
String action = "destroy";
PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest.setProviderCode(PddAPIConfig.PROVIDER_CODE);
......@@ -837,9 +837,9 @@ public class CommonTest {
@Test
public void outBoundError() {
String mailNo = "BK-25110414221207143137527";
String expressCode = "KR_JD";
String orderCode = "PP25110414221207143137527";
String mailNo = "KRJDV3298515094483";
String expressCode = "KRJDV";
String orderCode = "PP25111017757634566623271";
// String segmentCode = "RETURNSELLER";
String segmentCode = "SENDTORECEVER";
......@@ -858,13 +858,13 @@ public class CommonTest {
notifyRequest.setPackageInfos(new ArrayList<>());
PddServiceConsoOutboundRequest.PackageInfo packageInfo0 = new PddServiceConsoOutboundRequest.PackageInfo();
notifyRequest.getPackageInfos().add(packageInfo0);
packageInfo0.setOutboundMailNo(mailNo + "1");
packageInfo0.setOutboundMailNo(mailNo);
packageInfo0.setExpressCode(expressCode);
packageInfo0.setPackageType("2");
packageInfo0.setLength(30L);
packageInfo0.setWidth(30L);
packageInfo0.setHeight(30L);
packageInfo0.setWeight(1000L);
packageInfo0.setWeight(800L);
notifyRequest.setSenderDetail(new PddServiceConsoOutboundRequest.SenderDetail());
notifyRequest.getSenderDetail().setName("海际集货仓");
......
......@@ -56,13 +56,13 @@ public class GDTest3 {
@Test
public void Test2(){
Long ticketId = 176224558951137L;
String waybill_no = "773230214487313";
Long ticketId = 176277067809089L;
String waybill_no = "KRJDV3298516266148";
GDTicketReplyRequest replyRequest = new GDTicketReplyRequest();
replyRequest.setTicket_id(ticketId);
replyRequest.setWaybill_no(waybill_no);
replyRequest.setHandle_result("工单回复2");
replyRequest.setHandle_result("工单回复22222");
replyRequest.setSign_state(1);
replyRequest.setCompensate_state(2);
replyRequest.setCompensate_amount(100);
......
{
"logistics_ticket_get_response": {
"logistics_ticket_list": [
{
"area_name": "韩国",
"created_at": 1761791335,
"create_type": 1,
"pre_delivery_id": "0",
"source": 0,
"title": "包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉",
"cabinet_code": "",
"compensate_state": 0,
"urgent_type": 0,
"updated_at": 1761791335,
"receive_name": "김명상",
"sub_type_ids": [
1303
],
"waybill_no": "773484253589148",
"compensate_amount": 0,
"receive_address": "제주특별자치도 제주시 추자면 韩国偏远地址",
"receive_contact": "01012345678",
"express_dealer": "",
"express_dealer_contact": "",
"handle_result": "",
"type_id": 747,
"ticket_id": 176179133571489,
"sign_state": 0,
"duty": 0,
"express_company_id": 567,
"retreat_count": 0,
"status": 0
}
],
"total_count": 1,
"request_id": "17617914287422136"
}
"attach_path_list": "[\"https://img.pddpic.com/open-gw/2025-11-10/91f76b89d79a4884f4a094c85a7b1d6a.jpg\"]",
"client_id": "8f5f3f9c92e847b2894fc9c0afce3d61",
"compensate_amount": 2,
"compensate_state": 2,
"duty": 1,
"express_dealer": "测试回复人",
"express_dealer_contact": "12345678901",
"handle_result": "测试回复内容,带一张图片",
"reply_call_result": "",
"reply_type": 1,
"sign": "72308E7EFB9F868036AD29EBA51650B2",
"sign_state": 1,
"ticket_id": 176277067809089,
"timestamp": 1762775824,
"type": "pdd.logistics.ticket.notify",
"waybill_no": "KRJDV3298516266148"
}
{
"logistics_ticket_get_response": {
"logistics_ticket_list": [
{
"area_name": "韩国",
"created_at": 1761791335,
"create_type": 1,
"description": "其他,mock消费者二次投诉",
"pre_delivery_id": "0",
"source": 0,
"title": "包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉",
"cabinet_code": "",
"compensate_state": 2,
"urgent_type": 0,
"updated_at": 1761792633,
"receive_name": "김명상",
"sub_type_ids": [
1303
],
"waybill_no": "773484253589148",
"compensate_amount": 0,
"receive_address": "제주특별자치도 제주시 추자면 韩国偏远地址",
"receive_contact": "15012345678",
"express_dealer": "处理人甲",
"express_dealer_contact": "18599877823",
"express_attachment": [
{
"url": "https://img-test.pddpic.com/open-gw/2066d9194a/de1e9e6a5adaee930456e4e521a6dcb2.jpg"
}
],
"handle_result": "无",
"type_id": 747,
"ticket_id": 176179133571489,
"sign_state": 1,
"duty": 1,
"express_company_id": 567,
"retreat_count": 1,
"status": 0
}
],
"total_count": 1,
"request_id": "17617926778783270"
}
"attach_path_list": "[\"https://img-test.pddpic.com/open-gw/20add7022e/e7247b32584d7ae52b7f621d22f3c70a.jpg\"]",
"client_id": "8f5f3f9c92e847b2894fc9c0afce3d61",
"compensate_amount": 100,
"compensate_state": 2,
"duty": 1,
"express_dealer": "处理人2",
"express_dealer_contact": "15067011004",
"handle_result": "工单回复22222",
"reply_type": 1,
"sign": "5BAC6FDCC3980654CEE6D40665F7857F",
"sign_state": 1,
"ticket_id": 176277067809089,
"timestamp": 1762773897,
"type": "pdd.logistics.ticket.notify",
"waybill_no": "KRJDV3298516266148"
}
{
"bizType": "CONSO",
"providerCode": "HAIJI_KR",
"consoWarehouseCode": "HJJY001",
"deliveryType": "homeDelivery",
"sign": "CEB15BAE0013931E165CCDA170034165",
"segmentCode": "SENDTORECEVER",
"type": "pdd.service.conso.fee.query",
"logisticsOrderCodes": [
"PC25102903435973837318059"
],
"client_id": "d0217707e1194c46b57e696ac7619a06",
"goodsType": "NORMAL",
"consoType": "SEA",
"receiverDetail": {
"country": "KR",
"province": "서울특별시",
"city": "강북구",
"district": "우이동",
"postCode": "01000"
},
"from_client_id": "0f192a79622447c08ddcbce8c6f6152a",
"request_id": "706432872",
"mailDetails": [
{
"mailNo": "773833357957029",
"expressCode": "STO"
}
],
"timestamp": "1761706705"
"client_id": "8f5f3f9c92e847b2894fc9c0afce3d61",
"request": "{\"bizAction\":\"finish_unpack\",\"bizActionDesc\":\"拆包完成\",\"executeTime\":\"2025-11-10 16:41:16\",\"orderCode\":\"PC25111003435973839123271\",\"packageInfos\":[{\"actualWeight\":800,\"consoType\":\"SEA\",\"height\":30,\"length\":30,\"weight\":800,\"width\":30}],\"providerCode\":\"HAIJI_KR\",\"result\":{\"code\":102,\"desc\":\"破损\",\"remark\":\"破损\"},\"timeZone\":\"UTC+8\"}",
"request_id": "1762764076287",
"sign": "7EF27AD7915A62B426240EC42BBF3C40",
"target_client_id": "8f5f3f9c92e847b2894fc9c0afce3d61",
"timestamp": 1762764076,
"type": "pdd.service.conso.co.biz.action.notify"
}
\ 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