From 8c0e5a73bacea023d623232c0ad451b598ae7ebf Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Mon, 4 Mar 2024 18:13:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=89=E6=96=B9=E5=87=BA=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=98=8E=E7=BB=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/constant/ThirdSysConstant.java | 4 +- .../glxp/api/controller/TestController.java | 2 +- .../api/entity/thrsys/ThrInvOrderDetail.java | 5 + .../java/com/glxp/api/http/ErpInvClient.java | 6 +- .../api/res/inv/ThrInvResultResponse.java | 5 + .../inv/impl/StockCompareServiceImpl.java | 2 +- .../service/thrsys/ThrInvOrderService.java | 19 ++- .../thrsys/impl/ThrInvOrderServiceImpl.java | 130 +++++++++++++++--- .../com/glxp/api/task/SyncThirdSysTask.java | 67 +++++++-- .../mapper/thrsys/ThrInvOrderDetailMapper.xml | 19 ++- src/main/resources/schemas/schema_v2.4.sql | 1 + 11 files changed, 216 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/glxp/api/constant/ThirdSysConstant.java b/src/main/java/com/glxp/api/constant/ThirdSysConstant.java index f5db60e1c..6ceffd16c 100644 --- a/src/main/java/com/glxp/api/constant/ThirdSysConstant.java +++ b/src/main/java/com/glxp/api/constant/ThirdSysConstant.java @@ -53,7 +53,9 @@ public interface ThirdSysConstant { /** * 出入库明细下载 */ - String INV_ORDER_QUERY_URL = "invOrderUrl"; + String INV_SF_ORDER_QUERY_URL = "invSfOrderUrl"; + String INV_PH_ORDER_QUERY_URL = "invPhOrderUrl"; + String INV_GH_ORDER_QUERY_URL = "invGhOrderUrl"; } diff --git a/src/main/java/com/glxp/api/controller/TestController.java b/src/main/java/com/glxp/api/controller/TestController.java index d19662884..4630b763f 100644 --- a/src/main/java/com/glxp/api/controller/TestController.java +++ b/src/main/java/com/glxp/api/controller/TestController.java @@ -75,7 +75,7 @@ public class TestController { public BaseResponse downloadInvOrder() { ThrSystemDetailEntity thrSystemDetailEntity = new ThrSystemDetailEntity(); thrSystemDetailEntity.setThirdSysFk("thirdId"); - thrInvOrderService.downloadInvOrder(thrSystemDetailEntity); + thrInvOrderService.downloadInvSfOrder(thrSystemDetailEntity); return ResultVOUtils.success(""); } diff --git a/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java b/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java index 3dcaeaf8f..476a880ec 100644 --- a/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java +++ b/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java @@ -150,6 +150,11 @@ public class ThrInvOrderDetail implements Serializable { */ private String remark; + /** + * udiCode + */ + private String udiCode; + private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/glxp/api/http/ErpInvClient.java b/src/main/java/com/glxp/api/http/ErpInvClient.java index 85b54f744..6b8121707 100644 --- a/src/main/java/com/glxp/api/http/ErpInvClient.java +++ b/src/main/java/com/glxp/api/http/ErpInvClient.java @@ -78,7 +78,7 @@ public class ErpInvClient { return responseList; } - public BaseResponse> getInvResultSf(FilterInvProductRequest invProductRequest) { + public BaseResponse> getInvSfResult(FilterInvProductRequest invProductRequest) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(invProductRequest.getThirdSys()); // String url = basicThirdSysEntity.getThridUrl() + invProductRequest.getThirdSysUrlValue(); String url = "http://192.168.0.166:9997/udiwms/erp/inv/getInvResult"; @@ -94,7 +94,7 @@ public class ErpInvClient { } } - public BaseResponse> getInvResultPh(FilterInvProductRequest invProductRequest) { + public BaseResponse> getInvPhResult(FilterInvProductRequest invProductRequest) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(invProductRequest.getThirdSys()); // String url = basicThirdSysEntity.getThridUrl() + invProductRequest.getThirdSysUrlValue(); String url = "http://192.168.0.166:9997/udiwms/erp/inv/getInvResult"; @@ -110,7 +110,7 @@ public class ErpInvClient { } } - public BaseResponse> getInvResultGh(FilterInvProductRequest invProductRequest) { + public BaseResponse> getInvGhResult(FilterInvProductRequest invProductRequest) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(invProductRequest.getThirdSys()); // String url = basicThirdSysEntity.getThridUrl() + invProductRequest.getThirdSysUrlValue(); String url = "http://192.168.0.166:9997/udiwms/erp/inv/getInvResult"; diff --git a/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java b/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java index c9e29f31a..f5d1b9ee6 100644 --- a/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java +++ b/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java @@ -150,5 +150,10 @@ public class ThrInvResultResponse { */ private BigDecimal amount; + /** + * udiCode + */ + private String udiCode; + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java index e36dc9d8d..fa0a61f47 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java @@ -139,7 +139,7 @@ public class StockCompareServiceImpl extends CustomServiceImpl> baseResponse = erpInvClient.getInvResultSf(filterInvProductRequest); + BaseResponse> baseResponse = erpInvClient.getInvSfResult(filterInvProductRequest); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); list.forEach(item -> { diff --git a/src/main/java/com/glxp/api/service/thrsys/ThrInvOrderService.java b/src/main/java/com/glxp/api/service/thrsys/ThrInvOrderService.java index 068d1ed8d..0830b261c 100644 --- a/src/main/java/com/glxp/api/service/thrsys/ThrInvOrderService.java +++ b/src/main/java/com/glxp/api/service/thrsys/ThrInvOrderService.java @@ -12,16 +12,25 @@ import java.util.List; public interface ThrInvOrderService { /** - * 查询三方系统的出入库明细、进行处理 + * 查询三方系统的出入库明细、进行处理 收费 */ - public void handleExternalThrInvOrderSf(FilterInvProductRequest filterInvProductRequest); + public void handleExternalThrInvSfOrder(FilterInvProductRequest filterInvProductRequest); /** - * 查询三方系统的出入库明细、进行处理 + * 查询三方系统的出入库明细、进行处理 普耗 */ - public void handleExternalThrInvOrderPh(FilterInvProductRequest filterInvProductRequest); + public void handleExternalThrInvPhOrder(FilterInvProductRequest filterInvProductRequest); - void downloadInvOrder(ThrSystemDetailEntity thrSystemDetailEntity); + /** + * 查询三方系统的出入库明细、进行处理 高耗 + */ + public void handleExternalThrInvGhOrder(FilterInvProductRequest filterInvProductRequest); + + void downloadInvSfOrder(ThrSystemDetailEntity thrSystemDetailEntity); + + void downloadInvPhOrder(ThrSystemDetailEntity thrSystemDetailEntity); + + void downloadInvGhOrder(ThrSystemDetailEntity thrSystemDetailEntity); /** * 分忧条件查询 diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java index 642af6189..8d32fdbd7 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java @@ -16,6 +16,7 @@ import com.glxp.api.dao.thrsys.ThrInvOrderDetailMapper; import com.glxp.api.dao.thrsys.ThrInvOrderMapper; import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.basic.BasicSkProjectDetailEntity; +import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; @@ -42,6 +43,7 @@ import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrInvOrderService; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; +import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -89,8 +91,8 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); @Override - public void handleExternalThrInvOrderSf(FilterInvProductRequest filterInvProductRequest) { - BaseResponse> baseResponse = erpInvClient.getInvResultSf(filterInvProductRequest); + public void handleExternalThrInvSfOrder(FilterInvProductRequest filterInvProductRequest) { + BaseResponse> baseResponse = erpInvClient.getInvSfResult(filterInvProductRequest); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); if (CollectionUtil.isNotEmpty(list)) { @@ -114,8 +116,8 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { } @Override - public void handleExternalThrInvOrderPh(FilterInvProductRequest filterInvProductRequest) { - BaseResponse> baseResponse = erpInvClient.getInvResultPh(filterInvProductRequest); + public void handleExternalThrInvPhOrder(FilterInvProductRequest filterInvProductRequest) { + BaseResponse> baseResponse = erpInvClient.getInvPhResult(filterInvProductRequest); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); if (CollectionUtil.isNotEmpty(list)) { @@ -138,7 +140,61 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { } @Override - public void downloadInvOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + public void handleExternalThrInvGhOrder(FilterInvProductRequest filterInvProductRequest) { + BaseResponse> baseResponse = erpInvClient.getInvGhResult(filterInvProductRequest); + if (baseResponse.getCode() == 20000) { + List list = baseResponse.getData().getList(); + if (CollectionUtil.isNotEmpty(list)) { + String billNo = generateBillNo(filterInvProductRequest);//单据号 + //处理 返回实体 转换成 单据 和 单据明细 + ThrInvOrder thrInvOrder = new ThrInvOrder(); + List thrInvOrderDetails = new ArrayList<>(); + String thirdSys = filterInvProductRequest.getThirdSys(); + handleExternalConvertThrInvGhOrderDetail(list, thrInvOrderDetails, billNo, thirdSys,thrInvOrder); + + if (CollectionUtil.isNotEmpty(thrInvOrderDetails)) { + handleExternalConvertThrInvOrder(billNo, filterInvProductRequest, thrInvOrder, list.get(0),Constant.THR_INV_PH_ORDER_TYPE); + + //保存数据 + thrInvOrderMapper.insert(thrInvOrder); + thrInvOrderDetailMapper.insertBatch(thrInvOrderDetails); + } + } + } + } + + /** + * 处理高耗 + * @param list + * @param thrInvOrderDetails + * @param billNo + * @param thirdSys + * @param thrInvOrder + */ + private void handleExternalConvertThrInvGhOrderDetail(List list, List thrInvOrderDetails, String billNo, String thirdSys, ThrInvOrder thrInvOrder) { + list.forEach( item -> { + String udiCode = item.getUdiCode(); + UdiEntity udi = FilterUdiUtils.getUdi(udiCode); + /** + * udi 的 产品编号 获取产品信息 包装 + * + */ + // TODO: 2024/3/4 + + + ThrInvOrderDetail thrInvOrderDetail = new ThrInvOrderDetail(); + + + }); + + + + + + } + + @Override + public void downloadInvSfOrder(ThrSystemDetailEntity thrSystemDetailEntity) { log.info("自动抓取第三方收费出入库明细生成单据定时任务开始"); FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); filterInvProductRequest.setThirdSys(thrSystemDetailEntity.getThirdSysFk()); @@ -147,11 +203,42 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { filterInvProductRequest.setStartDate(stringToDate(days + " 00:00:00")); filterInvProductRequest.setEndDate(stringToDate(days + " 23:59:59")); - handleExternalThrInvOrderSf(filterInvProductRequest); + handleExternalThrInvSfOrder(filterInvProductRequest); log.info("自动抓取第三方收费出入库明细生成单据定时任务结束"); } + @Override + public void downloadInvPhOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + log.info("自动抓取第三方普耗出入库明细生成单据定时任务开始"); + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + filterInvProductRequest.setThirdSys(thrSystemDetailEntity.getThirdSysFk()); + filterInvProductRequest.setThirdSysUrlValue(thrSystemDetailEntity.getValue()); + String days = getBeginAndEndDateByDays(1); + + filterInvProductRequest.setStartDate(stringToDate(days + " 00:00:00")); + filterInvProductRequest.setEndDate(stringToDate(days + " 23:59:59")); + handleExternalThrInvPhOrder(filterInvProductRequest); + log.info("自动抓取第三方普耗出入库明细生成单据定时任务结束"); + + } + + + @Override + public void downloadInvGhOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + log.info("自动抓取第三方高耗出入库明细生成单据定时任务开始"); + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + filterInvProductRequest.setThirdSys(thrSystemDetailEntity.getThirdSysFk()); + filterInvProductRequest.setThirdSysUrlValue(thrSystemDetailEntity.getValue()); + String days = getBeginAndEndDateByDays(1); + + filterInvProductRequest.setStartDate(stringToDate(days + " 00:00:00")); + filterInvProductRequest.setEndDate(stringToDate(days + " 23:59:59")); + handleExternalThrInvGhOrder(filterInvProductRequest); + log.info("自动抓取第三方高耗出入库明细生成单据定时任务结束"); + + } + @Override public List filterThrInvOrder(FilterThrInvOrderRequest filterThrInvOrderRequest) { if (filterThrInvOrderRequest == null) { @@ -293,22 +380,23 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { String thirdSysFk = thrInvOrder.getThirdSysFk(); List thrCodes = thrInvOrderDetails.stream().filter(x->ObjectUtil.isNull(x.getRelId())) .map(ThrInvOrderDetail::getThrCode).collect(Collectors.toList()); - MainIdRelIdAndProductResponse map = udiRelevanceService.selectMainIdRelIdAndProductMap(thrCodes, thirdSysFk); - Map mainIdRelIdMap = map.getMainIdRelIdMap(); - - thrInvOrderDetails.forEach(item -> { - if (ObjectUtil.isNull(item.getRelId())){ - String thrCode = item.getThrCode(); - Long relId = mainIdRelIdMap.get(thrCode); - if (ObjectUtil.isNotNull(relId)){ - item.setRelId(relId); - updateThrInvOrderDetails.add(item); - }else { - exmsg.append(thrCode+","); + if (CollectionUtil.isNotEmpty(thrCodes)) { + MainIdRelIdAndProductResponse map = udiRelevanceService.selectMainIdRelIdAndProductMap(thrCodes, thirdSysFk); + Map mainIdRelIdMap = map.getMainIdRelIdMap(); + + thrInvOrderDetails.forEach(item -> { + if (ObjectUtil.isNull(item.getRelId())){ + String thrCode = item.getThrCode(); + Long relId = mainIdRelIdMap.get(thrCode); + if (ObjectUtil.isNotNull(relId)){ + item.setRelId(relId); + updateThrInvOrderDetails.add(item); + }else { + exmsg.append(thrCode+","); + } } - } - }); - + }); + } if (exmsg.length() > 0){ exmsg.deleteCharAt(exmsg.length()-1); diff --git a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java index 8785f2528..b50a82ce5 100644 --- a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java +++ b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java @@ -141,9 +141,17 @@ public class SyncThirdSysTask implements SchedulingConfigurer { //下载患者信息 downloadSicker(thrSystemDetailEntity); break; - case ThirdSysConstant.INV_ORDER_QUERY_URL: - //下载出入库明细 - downloadInvOrder(thrSystemDetailEntity); + case ThirdSysConstant.INV_SF_ORDER_QUERY_URL: + //下载出入库明细收费 + downloadInvSfOrder(thrSystemDetailEntity); + break; + case ThirdSysConstant.INV_PH_ORDER_QUERY_URL: + //下载出入库明细普耗 + downloadInvPhOrder(thrSystemDetailEntity); + break; + case ThirdSysConstant.INV_GH_ORDER_QUERY_URL: + //下载出入库明细高耗 + downloadInvGhOrder(thrSystemDetailEntity); break; default: //其他接口暂不处理 @@ -183,23 +191,66 @@ public class SyncThirdSysTask implements SchedulingConfigurer { * * @param thrSystemDetailEntity */ - private void downloadInvOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + private void downloadInvSfOrder(ThrSystemDetailEntity thrSystemDetailEntity) { //校验任务并更新redis数据执行标识 if (verifyTask(thrSystemDetailEntity)) { getExecutor().submit(() -> { - log.info("开始下载三方出入库明细"); + log.info("开始下载三方出入库明细收费"); try { - thrInvOrderService.downloadInvOrder(thrSystemDetailEntity); + thrInvOrderService.downloadInvSfOrder(thrSystemDetailEntity); } catch (Exception e) { - log.error("下载三方出入库明细异常", ExceptionUtils.getStackTrace(e)); + log.error("下载三方出入库明细收费异常", ExceptionUtils.getStackTrace(e)); } finally { updateTask(getTaskKey(thrSystemDetailEntity)); } - log.info("下载三方出入库明细完成"); + log.info("下载三方出入库明细收费完成"); }); } } + /** + * 下载三方出入库明细 + * + * @param thrSystemDetailEntity + */ + private void downloadInvPhOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始下载三方出入库明细普耗"); + try { + thrInvOrderService.downloadInvPhOrder(thrSystemDetailEntity); + } catch (Exception e) { + log.error("下载三方出入库明细普耗异常", ExceptionUtils.getStackTrace(e)); + } finally { + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("下载三方出入库明细普耗完成"); + }); + } + } + + /** + * 下载三方出入库明细 + * + * @param thrSystemDetailEntity + */ + private void downloadInvGhOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始下载三方出入库明细高耗"); + try { + thrInvOrderService.downloadInvGhOrder(thrSystemDetailEntity); + } catch (Exception e) { + log.error("下载三方出入库明细高耗异常", ExceptionUtils.getStackTrace(e)); + } finally { + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("下载三方出入库明细高耗完成"); + }); + } + } /** * 下载第三方单据类型 diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml b/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml index 5ecc1ae9a..bed7b0245 100644 --- a/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml +++ b/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml @@ -31,13 +31,14 @@ + id, orderIdFk, cpmctymc, relId, thrCode, nameCode, ggxh, batchNo, measname, price, productionDate, expireDate, ylqxzcrbarmc, zczbhhzbapzbh, inCount, outCount, supName, deptName, deptCode, invName, invCode, spaceCode, spaceName, reCount, mainAction, - manufacturer, remark + manufacturer, remark,udiCode