diff --git a/src/main/java/com/glxp/mipsdl/client/ctqyy/CtqyyClient.java b/src/main/java/com/glxp/mipsdl/client/ctqyy/CtqyyClient.java index d185aa7..3953327 100644 --- a/src/main/java/com/glxp/mipsdl/client/ctqyy/CtqyyClient.java +++ b/src/main/java/com/glxp/mipsdl/client/ctqyy/CtqyyClient.java @@ -810,10 +810,13 @@ public class CtqyyClient extends CommonHttpClient { // } catch (IOException e) { // e.printStackTrace(); // } + BaseResponse> baseResponse = JSONObject.parseObject(response, new TypeReference>>() { }); if (baseResponse.getCode() == 20000) { + Map mapArry = new HashMap<>(); + List newArry = new ArrayList<>(); List ptxhInvResponses = baseResponse.getData().getList(); List thrInvResultResponses = new ArrayList<>(); if (CollUtil.isNotEmpty(ptxhInvResponses)) { @@ -845,13 +848,30 @@ public class CtqyyClient extends CommonHttpClient { if (codeEntity == null) { codeEntity = codeDao.selectOne(new LambdaQueryWrapper().eq(IoCodeEntity::getErrUdiCode, ptxhInvResponse.getBarcode()).last("limit 1")); } - thrInvResultResponse.setUdiCode(codeEntity.getCode()); + if (codeEntity != null) + thrInvResultResponse.setUdiCode(codeEntity.getCode()); + else + thrInvResultResponse.setUdiCode(ptxhInvResponse.getBarcode()); thrInvResultResponses.add(thrInvResultResponse); } + + for (ThrInvResultResponse thrInvResultResponse : thrInvResultResponses) { + mapArry.merge(thrInvResultResponse.getUdiCode(), thrInvResultResponse, (existingValue, newValue) -> { + // Assuming reCount can be directly handled as an integer to avoid String to Integer conversions + int updatedReCount = Integer.parseInt(existingValue.getReCount()) + Integer.parseInt(newValue.getReCount()); + existingValue.setReCount(String.valueOf(updatedReCount)); + existingValue.setOutCount(existingValue.getReCount()); + return existingValue; + }); + } + for (String key : mapArry.keySet()) { + newArry.add(mapArry.get(key)); + } + } PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); - pageSimpleResponse.setTotal(thrInvResultResponses.size() + 0l); - pageSimpleResponse.setList(thrInvResultResponses); + pageSimpleResponse.setTotal(newArry.size() + 0l); + pageSimpleResponse.setList(newArry); return ResultVOUtils.success(pageSimpleResponse); } return baseResponse; diff --git a/src/main/java/com/glxp/mipsdl/res/udiwms/ThrInvResultResponse.java b/src/main/java/com/glxp/mipsdl/res/udiwms/ThrInvResultResponse.java index 5d80c9a..440c50b 100644 --- a/src/main/java/com/glxp/mipsdl/res/udiwms/ThrInvResultResponse.java +++ b/src/main/java/com/glxp/mipsdl/res/udiwms/ThrInvResultResponse.java @@ -141,6 +141,11 @@ public class ThrInvResultResponse { * 实际数量 */ private String reCount; + + public int getCount() { + return Integer.valueOf(reCount); + } + /** * 数据类型:住院、门诊等 */ @@ -165,5 +170,4 @@ public class ThrInvResultResponse { * 患者名称 */ private String sickerName; - }