From 423debcf861cfa0aff3c74e0f68abcc140be930c Mon Sep 17 00:00:00 2001 From: yewj Date: Wed, 2 Apr 2025 11:42:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E7=A0=81=E4=B8=8A=E8=B4=A7=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=8B=89=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 22 +- .../api/service/collect/DownloadFactory.java | 214 ++++++++++-------- .../collect/IoCollectOrderService.java | 7 +- 3 files changed, 130 insertions(+), 113 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 714c71d18..6644b71b9 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -206,18 +206,18 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.error(500, "该单据已处理完成,请勿重复处理!"); } - //取药确认 - if (addEnterCodeRequest.getSelectType() != null) { - List orderLeds = sysOrderLedService.list(new LambdaQueryWrapper().isNull(SysOrderLed::getOrderId) - .or() - .eq(SysOrderLed::getOrderId, "") - .orderByAsc(SysOrderLed::getLedNum)); - //如果为null 当前灯组已满 - //todo 暂时没有灯组不判断了 + // //取药确认 + // if (addEnterCodeRequest.getSelectType() != null) { + // List orderLeds = sysOrderLedService.list(new LambdaQueryWrapper().isNull(SysOrderLed::getOrderId) + // .or() + // .eq(SysOrderLed::getOrderId, "") + // .orderByAsc(SysOrderLed::getLedNum)); + //如果为null 当前灯组已满 + //todo 暂时没有灯组不判断了 // if (orderLeds == null || orderLeds.size() == 0) { // return ResultVOUtils.error(500, "灯组已满!"); // } - } + // } IoCollectOrderResponse collectOrder = collectOrderService.unionSearch(null, addEnterCodeRequest.getBusType(), code); @@ -1772,7 +1772,9 @@ public class IoCodeTempController extends BaseController { } } addCodeResult.setOrderId(orderId); - transInoutService.genOrderDetailCode(orderEntity, genDetaiEntity); + List genDetaiEntitys = new ArrayList<>(); + genDetaiEntitys.add(genDetaiEntity); + addCoodeService.genOrderDetailCodeBatch(orderEntity, genDetaiEntitys); return ResultVOUtils.success(addCodeResult); } diff --git a/src/main/java/com/glxp/api/service/collect/DownloadFactory.java b/src/main/java/com/glxp/api/service/collect/DownloadFactory.java index 6b651d57e..9d10459be 100644 --- a/src/main/java/com/glxp/api/service/collect/DownloadFactory.java +++ b/src/main/java/com/glxp/api/service/collect/DownloadFactory.java @@ -65,16 +65,17 @@ public class DownloadFactory { } } - @Resource private ErpBasicClient erpBasicClient; @Resource private ThrBusTypeOriginServiceImpl thrBusTypeOriginService; public BaseResponse downloadErpOrder(CollectOrderRequest collectOrderRequest, String busType) { - int page = 1; int limit = 100; + int maxPages = 1000; // 设置最大页数限制,防止死循环 + StringBuilder errorMsgAll = new StringBuilder(); + GetSickPrescribeRequest getSickPrescribeRequest = new GetSickPrescribeRequest(); getSickPrescribeRequest.setLimit(limit); getSickPrescribeRequest.setCode(collectOrderRequest.getBillNo()); @@ -85,9 +86,8 @@ public class DownloadFactory { getSickPrescribeRequest.setEndTime(collectOrderRequest.getEndTime()); getSickPrescribeRequest.setKey(collectOrderRequest.getKeyWords()); getSickPrescribeRequest.setBusType(collectOrderRequest.getBusType()); - BaseResponse resp; - while (true) { - List list; + + while (page <= maxPages) { try { getSickPrescribeRequest.setPage(page); BaseResponse> baseResponse = new BaseResponse<>(); @@ -97,32 +97,46 @@ public class DownloadFactory { } else { baseResponse = erpBasicClient.getPrescribeV2(getSickPrescribeRequest); } - if (baseResponse.getCode() == 20000) { - list = baseResponse.getData().getList(); - if (list == null) { - return ResultVOUtils.error(500, "未查到此业务单据"); - } - resp = importThrOrder(list, collectOrderRequest); - if ((list.size() >= limit && !baseResponse.getData().getTotal().equals(-666)) || IntUtil.value(baseResponse.getData().getTotal()) == -555) { - page++; - } else { - break; - } - } else { + + if (baseResponse.getCode() != 20000) { return baseResponse; } - } catch (Exception e) { - log.error(ExceptionUtils.getStackTrace(e)); - return ResultVOUtils.error(500, e.getMessage()); + List list = baseResponse.getData().getList(); + if (list == null || list.isEmpty()) { + break; + } + + BaseResponse resp = importThrOrder(list, collectOrderRequest); + if (resp != null && resp.getMessage() != null) { + errorMsgAll.append(resp.getMessage()); + } + + // 判断是否还有下一页 + Integer total = baseResponse.getData().getTotal(); + if (total == null || total <= 0 || total.equals(-666) || total.equals(-555)) { + break; + } + + // 如果当前页数据量小于每页限制,说明已经是最后一页 + if (list.size() < limit) { + break; + } + + page++; + } catch (Exception e) { + log.error("下载订单异常: {}", ExceptionUtils.getStackTrace(e)); + return ResultVOUtils.error(500, "下载订单异常: " + e.getMessage()); } } + if (page > maxPages) { + log.warn("达到最大页数限制: {}", maxPages); + } - return ResultVOUtils.success(resp.getMessage(),"下载成功"); + return ResultVOUtils.success(errorMsgAll.toString(), "下载成功"); } - public BaseResponse downloadErpThrOrder(CollectOrderRequest collectOrderRequest) { int page = 1; int limit = 100; @@ -138,14 +152,15 @@ public class DownloadFactory { BaseResponse resp; while (true) { filterThrOrderRequest.setPage(page); - BaseResponse> baseResponse = erpBasicClient.getThrOrders(filterThrOrderRequest); + BaseResponse> baseResponse = erpBasicClient + .getThrOrders(filterThrOrderRequest); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); if (list == null) { return ResultVOUtils.error(500, "未查到此业务单据"); } resp = importThrOrder(list, collectOrderRequest); - if ((list.size() >= limit && !baseResponse.getData().getTotal().equals(-666)) || IntUtil.value(baseResponse.getData().getTotal()) == -555) { + if ((list.size() >= limit && !baseResponse.getData().getTotal().equals(-666))) { page++; } else { break; @@ -154,10 +169,9 @@ public class DownloadFactory { return baseResponse; } } - return ResultVOUtils.success(resp.getMessage(),"下载成功"); + return ResultVOUtils.success(resp.getMessage(), "下载成功"); } - @Resource UdiRelevanceDao udiRelevanceDao; @Resource @@ -165,7 +179,6 @@ public class DownloadFactory { @Resource private IoCollectOrderService collectOrderService; - /** * 下载至单据 * @@ -176,86 +189,93 @@ public class DownloadFactory { try { StringBuilder errorMsgAll = new StringBuilder(); - List ioCollectOrderList = new ArrayList<>(); - if (CollUtil.isNotEmpty(thrOrderEntities)) { - for (IoCollectOrder thrOrder : thrOrderEntities) { - IoCollectOrder ioCollectOrder = new IoCollectOrder(); - BeanUtil.copyProperties(thrOrder, ioCollectOrder); - StringBuilder errorMsg = new StringBuilder(); - ioCollectOrder.setFromType("HIS系统"); - ioCollectOrder.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); - ioCollectOrder.setCreateTime(new Date()); - ioCollectOrder.setCreateUser(collectOrderRequest.getCreateUser()); - ioCollectOrder.setBackupOrderRemark1(null); - ioCollectOrder.setUpdateTime(new Date()); - ioCollectOrder.setSplitStatus(0); - ioCollectOrder.setTagStatus(0); - ioCollectOrder.setBackupOrderRemark1(thrOrder.getBackupOrderRemark1()); + List ioCollectOrderList = new ArrayList<>(); + if (CollUtil.isNotEmpty(thrOrderEntities)) { + for (IoCollectOrder thrOrder : thrOrderEntities) { + IoCollectOrder ioCollectOrder = new IoCollectOrder(); + BeanUtil.copyProperties(thrOrder, ioCollectOrder); + StringBuilder errorMsg = new StringBuilder(); + ioCollectOrder.setFromType("HIS系统"); + ioCollectOrder.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); + ioCollectOrder.setCreateTime(new Date()); + ioCollectOrder.setCreateUser(collectOrderRequest.getCreateUser()); + ioCollectOrder.setBackupOrderRemark1(null); + ioCollectOrder.setUpdateTime(new Date()); + ioCollectOrder.setSplitStatus(0); + ioCollectOrder.setTagStatus(0); + ioCollectOrder.setBackupOrderRemark1(thrOrder.getBackupOrderRemark1()); - List bizList = new ArrayList<>(); - for (IoCollectOrderBiz entity : thrOrder.getBizList()) { - IoCollectOrderBiz collectOrderBiz = new IoCollectOrderBiz(); - BeanUtil.copyProperties(entity, collectOrderBiz); + List bizList = new ArrayList<>(); + for (IoCollectOrderBiz entity : thrOrder.getBizList()) { + IoCollectOrderBiz collectOrderBiz = new IoCollectOrderBiz(); + BeanUtil.copyProperties(entity, collectOrderBiz); - if (BusTypeConstant.QXCF001.getBusType().equals(collectOrderRequest.getBusType())) { - collectOrderBiz.setRelId(entity.getRelId()); - if (StrUtil.isNotEmpty(entity.getCheckCode())) { - // 1. 先查询完全匹配的情况 - LambdaQueryWrapper exactMatchWrapper = new LambdaQueryWrapper<>(); - exactMatchWrapper.eq(BasicProductsEntity::getYbbm, entity.getCheckCode()); - List exactMatches = basicProductsDao.selectList(exactMatchWrapper); - if (exactMatches.isEmpty()) { - // 2. 如果没有完全匹配,则查询前20位匹配的情况 - LambdaQueryWrapper prefixMatchWrapper = new LambdaQueryWrapper<>(); - prefixMatchWrapper.apply("LEFT(ybbm, 20) = LEFT({0}, 20)", entity.getCheckCode()); - exactMatches = basicProductsDao.selectList(prefixMatchWrapper); - } - if (exactMatches.isEmpty()) { - errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); - } - } else { - BasicProductsEntity basicProductsEntity = basicProductsDao.selectOne(new LambdaQueryWrapper().eq(BasicProductsEntity::getYbbm, entity.getYbbm()).last("limit 1")); - if (basicProductsEntity == null || StrUtil.isEmpty(basicProductsEntity.getNameCode())) { - errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + if (BusTypeConstant.QXCF001.getBusType().equals(collectOrderRequest.getBusType())) { + collectOrderBiz.setRelId(entity.getRelId()); + if (StrUtil.isNotEmpty(entity.getCheckCode())) { + // 1. 先查询完全匹配的情况 + LambdaQueryWrapper exactMatchWrapper = new LambdaQueryWrapper<>(); + exactMatchWrapper.eq(BasicProductsEntity::getYbbm, entity.getCheckCode()); + List exactMatches = basicProductsDao.selectList(exactMatchWrapper); + if (exactMatches.isEmpty()) { + // 2. 如果没有完全匹配,则查询前20位匹配的情况 + LambdaQueryWrapper prefixMatchWrapper = new LambdaQueryWrapper<>(); + prefixMatchWrapper.apply("LEFT(ybbm, 20) = LEFT({0}, 20)", entity.getCheckCode()); + exactMatches = basicProductsDao.selectList(prefixMatchWrapper); + } + if (exactMatches.isEmpty()) { + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } + } else { + BasicProductsEntity basicProductsEntity = basicProductsDao + .selectOne(new LambdaQueryWrapper() + .eq(BasicProductsEntity::getYbbm, entity.getYbbm()).last("limit 1")); + if (basicProductsEntity == null || StrUtil.isEmpty(basicProductsEntity.getNameCode())) { + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } } - } - collectOrderBiz.setTagStatus(1); - collectOrderBiz.setUnTagCount(0); - bizList.add(collectOrderBiz); + collectOrderBiz.setTagStatus(1); + collectOrderBiz.setUnTagCount(0); + bizList.add(collectOrderBiz); - } else { - UdiRelevanceEntity basicUdirelEntity = udiRelevanceDao.selectOne(new LambdaQueryWrapper().eq(UdiRelevanceEntity::getMainId, entity.getThrCode()).last("limit 1")); - if (basicUdirelEntity != null) { - collectOrderBiz.setRelId(basicUdirelEntity.getId()); - BasicProductsEntity basicProductsEntity = basicProductsDao.selectOne(new LambdaQueryWrapper().eq(BasicProductsEntity::getUuid, basicUdirelEntity.getUuid()).eq(BasicProductsEntity::getPackLevel, "1").last("limit 1")); - if (basicProductsEntity == null || StrUtil.isEmpty(basicProductsEntity.getNameCode())) { - errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } else { + UdiRelevanceEntity basicUdirelEntity = udiRelevanceDao + .selectOne(new LambdaQueryWrapper() + .eq(UdiRelevanceEntity::getMainId, entity.getThrCode()).last("limit 1")); + if (basicUdirelEntity != null) { + collectOrderBiz.setRelId(basicUdirelEntity.getId()); + BasicProductsEntity basicProductsEntity = basicProductsDao + .selectOne(new LambdaQueryWrapper() + .eq(BasicProductsEntity::getUuid, basicUdirelEntity.getUuid()) + .eq(BasicProductsEntity::getPackLevel, "1").last("limit 1")); + if (basicProductsEntity == null || StrUtil.isEmpty(basicProductsEntity.getNameCode())) { + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } else { + collectOrderBiz.setMeasureUnit(basicProductsEntity.getXjdw()); + } } else { - collectOrderBiz.setMeasureUnit(basicProductsEntity.getXjdw()); + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); } - } else { - errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + collectOrderBiz.setTagStatus(1); + collectOrderBiz.setUnTagCount(0); + bizList.add(collectOrderBiz); } - collectOrderBiz.setTagStatus(1); - collectOrderBiz.setUnTagCount(0); - bizList.add(collectOrderBiz); } - } - if (StrUtil.isNotBlank(errorMsg)) { - ioCollectOrder.setTagStatus(4); - errorMsgAll.append(errorMsg); - } else - ioCollectOrder.setTagStatus(2); - ioCollectOrder.setErrorMsg(errorMsg.toString()); - ioCollectOrder.setBizList(bizList); - ioCollectOrderList.add(ioCollectOrder); + if (StrUtil.isNotBlank(errorMsg)) { + ioCollectOrder.setTagStatus(4); + errorMsgAll.append(errorMsg); + } else + ioCollectOrder.setTagStatus(2); + ioCollectOrder.setErrorMsg(errorMsg.toString()); + ioCollectOrder.setBizList(bizList); + ioCollectOrderList.add(ioCollectOrder); + } + collectOrderService.importPrescribe(ioCollectOrderList, collectOrderRequest); + return ResultVOUtils.success(errorMsgAll.toString(), "下载成功"); } - collectOrderService.importPrescribe(ioCollectOrderList, collectOrderRequest); - return ResultVOUtils.success(errorMsgAll.toString(),"下载成功"); - } - }catch (Exception e){ - log.error("12312"+e.getMessage()); + } catch (Exception e) { + log.error("12312" + e.getMessage()); } return ResultVOUtils.error("下载失败"); diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java index 6e8b9a7fa..ca6bf3dce 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java @@ -536,7 +536,7 @@ public class IoCollectOrderService extends ServiceImpl ioCollectOrderList, CollectOrderRequest collectOrderRequest) { String addr = collectOrderRequest.getBusType(); if (CollUtil.isNotEmpty(ioCollectOrderList)) { @@ -544,8 +544,6 @@ public class IoCollectOrderService extends ServiceImpl allotCollects = new ArrayList<>(); - List allotCollectBizs = new ArrayList<>(); for (IoCollectOrder collectOrder : ioCollectOrderList) { IoCollectOrderOrigin ioCollectOrderOrigin = new IoCollectOrderOrigin(); if (collectOrderMapper.exists(new LambdaQueryWrapper().eq(IoCollectOrder::getBillNo, collectOrder.getBillNo()))) { @@ -590,9 +588,6 @@ public class IoCollectOrderService extends ServiceImpl