diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java index 2b1bbe90c..1263fc7b9 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java @@ -23,10 +23,7 @@ import com.logpm.factory.snm.dto.*; import com.logpm.factory.snm.entity.PanFactoryOrder; import com.logpm.factory.snm.entity.PanPackageInfo; import com.logpm.factory.snm.entity.PanPackageList; -import com.logpm.factory.snm.service.IPanFactoryDataService; -import com.logpm.factory.snm.service.IPanFactoryOrderService; -import com.logpm.factory.snm.service.IPanPackageInfoService; -import com.logpm.factory.snm.service.IPanPackageListService; +import com.logpm.factory.snm.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -57,9 +54,8 @@ public class PanFactoryDataController extends BladeController { private final IPanFactoryOrderService factoryOrderService; private final IPanPackageInfoService packageInfoService; private final IPanPackageListService packageListService; - - private final IPanFactoryDataService factoryDataService; + private final IAsyncDataService syncDataService; // @ResponseBody // @PostMapping("/token") @@ -128,6 +124,9 @@ public class PanFactoryDataController extends BladeController { packageListService.saveBatch(PanPackagelist); } + //开启异步线程处理数据 + syncDataService.handlerPanDataToHt(); + return Resp.successOrderNo(factoryOrder.getOrderNo(),"SUCCESS"); } @@ -139,7 +138,7 @@ public class PanFactoryDataController extends BladeController { public R sendOrders(@Validated @RequestBody OrderInfoDTO orderInfoDTO) { log.info("############sendOrders: "); try{ - factoryDataService.handleData(orderInfoDTO); +// factoryDataService.handleData(orderInfoDTO); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/dto/OrderStatusDTO.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/dto/OrderStatusDTO.java index 2a4c3e995..084f7d865 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/dto/OrderStatusDTO.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/dto/OrderStatusDTO.java @@ -17,6 +17,7 @@ package com.logpm.factory.snm.dto; import lombok.Data; +import org.springblade.core.tool.utils.StringUtil; import javax.validation.constraints.NotEmpty; @@ -57,4 +58,41 @@ public class OrderStatusDTO { @NotEmpty(message = "状态") private String status;//状态 + + /** + * 验证参数是否都存在 + * @return + */ + public boolean verifyData(){ + if(StringUtil.isBlank(dispatchNumber)){ + return false; + } + if(StringUtil.isBlank(orderNo)){ + return false; + } + if(StringUtil.isBlank(plantId)){ + return false; + } + if(StringUtil.isBlank(logiBillNo)){ + return false; + } + if(StringUtil.isBlank(unitNo)){ + return false; + } + if(StringUtil.isBlank(operationTime)){ + return false; + } + if(StringUtil.isBlank(currentWarehouse)){ + return false; + } + if(StringUtil.isBlank(destinationWarehouse)){ + return false; + } + if(StringUtil.isBlank(status)){ + return false; + } + return true; + } + + } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IAsyncDataService.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IAsyncDataService.java new file mode 100644 index 000000000..30c5e7d4b --- /dev/null +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IAsyncDataService.java @@ -0,0 +1,9 @@ +package com.logpm.factory.snm.service; + +public interface IAsyncDataService { + + + void handlerPanDataToHt(); + + +} diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/AsyncDataServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/AsyncDataServiceImpl.java new file mode 100644 index 000000000..a510262a9 --- /dev/null +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/AsyncDataServiceImpl.java @@ -0,0 +1,55 @@ +package com.logpm.factory.snm.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.factory.snm.entity.PanFactoryOrder; +import com.logpm.factory.snm.service.IAsyncDataService; +import com.logpm.factory.snm.service.IPanFactoryOrderService; +import com.logpm.factory.snm.service.IPanPackageInfoService; +import com.logpm.factory.snm.service.IPanPackageListService; +import com.logpm.oldproject.feign.IAdvanceClient; +import com.logpm.oldproject.feign.IAdvanceDetailClient; +import com.logpm.oldproject.feign.IServiceNumClient; +import com.logpm.oldproject.feign.IWarehouseClient; +import lombok.AllArgsConstructor; +import lombok.extern.log4j.Log4j2; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 异步线程处理 + */ +@Log4j2 +@Service +@AllArgsConstructor +public class AsyncDataServiceImpl implements IAsyncDataService { + + private final IAdvanceClient iAdvanceClient; + private final IAdvanceDetailClient advanceDetailClient; + private final IServiceNumClient serviceNumClient; + private final IWarehouseClient warehouseClient; + private final IPanFactoryOrderService panFactoryOrderService; + private final IPanPackageInfoService panPackageInfoService; + private final IPanPackageListService panPackageListService; + + + /** + * 处理皮阿诺数据推送到汇通老库 + */ + @Override + @Async + public void handlerPanDataToHt() { + log.info("################handlerDataToHt: 处理皮阿诺订单数据到"); + //查询需要同步的订单 + QueryWrapper orderQueryWrapper = new QueryWrapper<>(); + orderQueryWrapper.eq("status",1) + .eq("is_deleted",0); + List list = panFactoryOrderService.list(orderQueryWrapper); + log.info("#########handlerDataToHt: 待处理的订单数量为{}",list.size()); + for (PanFactoryOrder panFactoryOrder:list){ + Long id = panFactoryOrder.getId(); + log.info("#########handlerDataToHt: 当前处理的订单id={}",id); + } + } +} diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java index 8a6f411eb..c735f9de6 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java @@ -10,9 +10,11 @@ import com.logpm.factory.snm.dto.OrderInfoDTO; import com.logpm.factory.snm.dto.OrderStatusDTO; import com.logpm.factory.snm.entity.PanFactoryOrder; import com.logpm.factory.snm.entity.PanOrderStatusLog; +import com.logpm.factory.snm.entity.PanPackageInfo; import com.logpm.factory.snm.service.IPanFactoryDataService; import com.logpm.factory.snm.service.IPanFactoryOrderService; import com.logpm.factory.snm.service.IPanOrderStatusLogService; +import com.logpm.factory.snm.service.IPanPackageInfoService; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,6 +40,7 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { private final PanFactoryProperties panFactoryProperties; private final IPanOrderStatusLogService panOrderStatusLogService; + private final IPanPackageInfoService panPackageInfoService; // @Override // public FactoryTokenVO getToken(String corpId, String appKey, String appSecret) throws NoSuchAlgorithmException { @@ -110,36 +113,36 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { String s = gson.toJson(map); //先获取token - String panToken = getPanToken(); - +// String panToken = getPanToken(); +// //请求参数 logger.info("##############handleData: 推送包件状态请求参数 {}",s); - //处理逻辑 - //TODO 这里还差那边给到请求接口 - String result = HttpRequest.post(panFactoryProperties.getUrl()+"") - .header("Authorization","Bearer "+panToken) - .header("Content-Type","application/json") - .body(s).timeout(5 * 1000) - .execute().body(); - - logger.info("##############handleData: 推送包件状态返回参数 {}",result); - - //把结果字符串转为json对象 - JSONObject jsonObject = JSONObject.parseObject(result); - JSONObject payload = jsonObject.getJSONObject("payload"); - if(!Objects.isNull(payload)){ - Integer code = payload.getInteger("code"); - String message = payload.getString("data"); - if(code.equals(1)){ - logger.info("##########handleData: 物流状态传递成功"); - panOrderStatusLog.setStatus(0); - panOrderStatusLogService.saveOrUpdate(panOrderStatusLog); - }else{ - throw new CustomerException(400,message); - } - }else{ - throw new CustomerException(400,"返回格式有误:"+result); - } +// //处理逻辑 +// //TODO 这里还差那边给到请求接口 +// String result = HttpRequest.post(panFactoryProperties.getUrl()+"/hitf/v1/rest/invoke?namespace=HZERO&serverCode=HUITONG_MID_RECEIVE") +// .header("Authorization","Bearer "+panToken) +// .header("Content-Type","application/json") +// .body(s).timeout(5 * 1000) +// .execute().body(); +// +// logger.info("##############handleData: 推送包件状态返回参数 {}",result); +// +// //把结果字符串转为json对象 +// JSONObject jsonObject = JSONObject.parseObject(result); +// JSONObject payload = jsonObject.getJSONObject("payload"); +// if(!Objects.isNull(payload)){ +// Integer code = payload.getInteger("code"); +// String message = payload.getString("data"); +// if(code.equals(1)){ +// logger.info("##########handleData: 物流状态传递成功"); +// panOrderStatusLog.setStatus(0); +// panOrderStatusLogService.saveOrUpdate(panOrderStatusLog); +// }else{ +// throw new CustomerException(400,message); +// } +// }else{ +// throw new CustomerException(400,"返回格式有误:"+result); +// } } @@ -154,6 +157,22 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { panOrderStatusLog.setType(2); panOrderStatusLogService.save(panOrderStatusLog); + //通过包件码查询是否是要推送的订单 + String unitNo = orderStatusDTO.getUnitNo();//包件码 + QueryWrapper packageInfoQueryWrapper = new QueryWrapper<>(); + packageInfoQueryWrapper.eq("unit_no",unitNo); + PanPackageInfo one = panPackageInfoService.getOne(packageInfoQueryWrapper); + if(Objects.isNull(one)){ + logger.info("#############handleStatusData: 当前包条码未找到对应数据unitNo={}",unitNo); + throw new CustomerException(400,"未找到包件数据"); + } + + //判断数据是都已存在 + if(!orderStatusDTO.verifyData()){ + logger.info("#############handleStatusData: 数据不齐全 orderStatusDTO={}",orderStatusDTO); + throw new CustomerException(400,"数据不齐全"); + } + //拼接参数 Map map = new HashMap<>(); map.put("payload", JSONObject.toJSONString(orderStatusDTO)); @@ -161,36 +180,36 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { Gson gson = new GsonBuilder().setPrettyPrinting().create(); String s = gson.toJson(map); - //先获取token - String panToken = getPanToken(); - +// //先获取token +// String panToken = getPanToken(); +// //请求参数 logger.info("##############handleStatusData: 推送包件状态请求参数 {}",s); - //处理逻辑 - String result = HttpRequest.post(panFactoryProperties.getUrl()+"/hitf/v1/rest/invoke?namespace=HZERO&serverCode=OPEN&interfaceCode=HUITONG_RECEIVE") - .header("Authorization","Bearer "+panToken) - .header("Content-Type","application/json") - .body(s).timeout(5 * 1000) - .execute().body(); - - logger.info("##############handleStatusData: 推送包件状态返回参数 {}",result); - - //把结果字符串转为json对象 - JSONObject jsonObject = JSONObject.parseObject(result); - JSONObject payload = jsonObject.getJSONObject("payload"); - if(!Objects.isNull(payload)){ - Integer code = payload.getInteger("code"); - String message = payload.getString("data"); - if(code.equals(1)){ - logger.info("##########handleStatusData: 物流状态传递成功"); - panOrderStatusLog.setStatus(0); - panOrderStatusLogService.saveOrUpdate(panOrderStatusLog); - }else{ - throw new CustomerException(400,message); - } - }else{ - throw new CustomerException(400,"返回格式有误:"+result); - } +// //处理逻辑 +// String result = HttpRequest.post(panFactoryProperties.getUrl()+"/hitf/v1/rest/invoke?namespace=HZERO&serverCode=OPEN&interfaceCode=HUITONG_RECEIVE") +// .header("Authorization","Bearer "+panToken) +// .header("Content-Type","application/json") +// .body(s).timeout(5 * 1000) +// .execute().body(); +// +// logger.info("##############handleStatusData: 推送包件状态返回参数 {}",result); +// +// //把结果字符串转为json对象 +// JSONObject jsonObject = JSONObject.parseObject(result); +// JSONObject payload = jsonObject.getJSONObject("payload"); +// if(!Objects.isNull(payload)){ +// Integer code = payload.getInteger("code"); +// String message = payload.getString("data"); +// if(code.equals(1)){ +// logger.info("##########handleStatusData: 物流状态传递成功"); +// panOrderStatusLog.setStatus(0); +// panOrderStatusLogService.saveOrUpdate(panOrderStatusLog); +// }else{ +// throw new CustomerException(400,message); +// } +// }else{ +// throw new CustomerException(400,"返回格式有误:"+result); +// } }