浏览代码

追溯码上传

yeguodong 2 周之前
父节点
当前提交
36eee4495d

+ 7 - 0
src/main/java/cn/hnthyy/thmz/controller/yb/YbController.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 @Slf4j
 @RestController
 @RequestMapping("/Yb")
@@ -36,4 +38,9 @@ public class YbController {
         return ybService.getGoods(selinfoSold);
     }
 
+    @RequestMapping(value = "/getGoodsByCode", method = {RequestMethod.POST})
+    public ResultVo getGoodsByCode(@RequestBody Map<String, String> map) {
+        return ybService.getGoodsByCode(map);
+    }
+
 }

+ 3 - 0
src/main/java/cn/hnthyy/thmz/mapper/his/yb/SelinfoSoldMapper.java

@@ -20,4 +20,7 @@ public interface SelinfoSoldMapper extends BaseMapper<SelinfoSold> {
 
     @Select("select * from selinfo_sold_drugtrac where selinfo_sold_id=#{selinfoSoldId}")
     List<Map<String, String>> getSelinfoSoldDrugtracById(String selinfoSoldId);
+
+    @Select("select * from selinfo_sold")
+    List<SelinfoSold> getSelinfoSoldListNoWhere();
 }

+ 95 - 42
src/main/java/cn/hnthyy/thmz/service/yb/YbService.java

@@ -105,12 +105,30 @@ public class YbService {
         selInfo.setRtalDocno(rtalDocno + randomNumber);
         selInfo.setFixmedinsBchno(rtalDocno + randomNumber);
         selInfo.setSelRetnCnt(drugTracCodgList.size());
+        String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+        selInfo.setSelRetnTime(now);
+
+        String id = UUID.randomUUID().toString().replaceAll("-", "");
+        selInfo.setId(id);
+        List<SelinfoSold> selinfoSoldList =
+                selinfoSoldMapper.getSelinfoSoldList(selInfo.getPatientId(), selInfo.getTimes(),
+                        selInfo.getOrderNo(), selInfo.getChargeItemCode(), selInfo.getRealNo());
+        if(selinfoSoldList != null && !selinfoSoldList.isEmpty()
+                && selinfoSoldList.get(0).getMedListCodg().equals(selInfo.getMedListCodg())) {
+            selInfo.setId(selinfoSoldList.get(0).getId());
+        } else {
+            selinfoSoldMapper.insert(selInfo);
+        }
+
+        for(DrugTracCodg codg : drugTracCodgList) {
+            String itemId = UUID.randomUUID().toString().replaceAll("-", "");
+            selinfoSoldMapper.insertSelinfoSoldDrugtrac(itemId, id, codg.getDrugTracCodg());
+        }
+
         selInfo.setPsnName(UriEncoder.encode(selInfo.getPsnName()));
         selInfo.setPrscDrName(UriEncoder.encode(selInfo.getPrscDrName()));
         selInfo.setPharName(UriEncoder.encode(selInfo.getPharName()));
         selInfo.setSelRetnOpterName(UriEncoder.encode(selInfo.getSelRetnOpterName()));
-        String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
-        selInfo.setSelRetnTime(now);
 
         // 构建关联键(用于后续查询发药记录)
         // 关联键格式:patientId=xxx&times=xxx&receiptNo=xxx&orderNo=xxx&chargeItemCode=xxx&realNo=xxx
@@ -146,15 +164,7 @@ public class YbService {
             log.error("医保接口调用失败 - 关联键: {}, 错误: {}", associationKey, e.getMessage());
         }
 
-        String id = UUID.randomUUID().toString().replaceAll("-", "");
-        selInfo.setId(id);
-        int insertSelinfo = selinfoSoldMapper.insert(selInfo);
-        if(insertSelinfo > 0) {
-            for(DrugTracCodg codg : drugTracCodgList) {
-                String itemId = UUID.randomUUID().toString().replaceAll("-", "");
-                selinfoSoldMapper.insertSelinfoSoldDrugtrac(itemId, id, codg.getDrugTracCodg());
-            }
-        }
+
 
 
         return response;
@@ -254,7 +264,7 @@ public class YbService {
 
         selinfoReturn.setSelRetnCnt(drugTracCodgList != null ? drugTracCodgList.size() : 0);
         String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
-        selinfoReturn.setMedListCodg(selinfoSold.getMedListCodg());
+        selinfoReturn.setMedListCodg("XB01ACL190A001060100553");
         selinfoReturn.setSelRetnTime(now);
         selinfoReturn.setMdtrtSn(selinfoSold.getMdtrtSn());
         selinfoReturn.setFixmedinsBchno(selinfoSold.getFixmedinsBchno());
@@ -302,44 +312,87 @@ public class YbService {
         }
 
         List<Object> datas = new ArrayList<>();
-        SelinfoSold sold = selinfoSoldList.get(0);
-        List<Map<String, String>> selinfoSoldDrugtracById = selinfoSoldMapper.getSelinfoSoldDrugtracById(sold.getId());
-        String realUrl = siInventoryServiceUrl + "/selectSalesGoodsItem";
-        for(Map<String, String> map : selinfoSoldDrugtracById) {
-            Map<String, String> param = new HashMap<>();
-            param.put("med_list_codg", sold.getMedListCodg());
-
-            param.put("drug_trac_codg", map.get("trac_codg"));
-
 
-            try {
-                String jsonString = JSONObject.toJSONString(param, SerializerFeature.WriteNonStringKeyAsString);
-                String ybResult = HttpUtil.sendHttpPost(realUrl, jsonString, 8000);
-                JSONObject ybResultJson = JSONObject.parseObject(ybResult);
-                int responseCode = 0;
-                if(ybResultJson.getInteger("code") != 200) {
-                    responseCode = ybResultJson.getInteger("code");
-                }
+        String realUrl = siInventoryServiceUrl + "/selectSalesGoodsItem";
+        for(SelinfoSold sold : selinfoSoldList) {
+            List<Map<String, String>> selinfoSoldDrugtracById = selinfoSoldMapper.getSelinfoSoldDrugtracById(sold.getId());
+            for(Map<String, String> map : selinfoSoldDrugtracById) {
+                Map<String, String> param = new HashMap<>();
+                param.put("med_list_codg", sold.getMedListCodg());
+
+                param.put("drug_trac_codg", map.get("trac_codg"));
+
+                try {
+                    String jsonString = JSONObject.toJSONString(param, SerializerFeature.WriteNonStringKeyAsString);
+                    String ybResult = HttpUtil.sendHttpPost(realUrl, jsonString, 8000);
+                    JSONObject ybResultJson = JSONObject.parseObject(ybResult);
+                    int responseCode = 0;
+                    if(ybResultJson.getInteger("code") != 200) {
+                        responseCode = ybResultJson.getInteger("code");
+                    }
 //                response = new ResultVo(responseCode, ybResultJson.getString("message"), ybResultJson.get("data"));
-                JSONObject data = ybResultJson.getJSONObject("data");
-                JSONArray output = data.getJSONArray("output");
-                if(output != null && !output.isEmpty()) {
-                    datas.add(output.get(0));
+                    JSONObject data = ybResultJson.getJSONObject("data");
+                    JSONArray output = data.getJSONArray("output");
+                    if(output != null && !output.isEmpty()) {
+                        datas.add(output.get(0));
+                    }
+                    // 记录医保接口调用结果
+                    // 通过关联键可以快速定位具体的退药记录,便于问题排查和审计
+                    log.info("医保退药接口调用结果 - 结果: {}", response);
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    response = new ResultVo(-1, "商品销售查询失败");
+                    // 记录错误信息时包含关联键,便于快速定位问题
+                    log.error("医保退药接口调用失败 - 错误: {}", e.getMessage());
                 }
-                // 记录医保接口调用结果
-                // 通过关联键可以快速定位具体的退药记录,便于问题排查和审计
-                log.info("医保退药接口调用结果 - 结果: {}", response);
-
-            } catch (Exception e) {
-                e.printStackTrace();
-                response = new ResultVo(-1, "商品销售查询失败");
-                // 记录错误信息时包含关联键,便于快速定位问题
-                log.error("医保退药接口调用失败 - 错误: {}", e.getMessage());
             }
         }
+
+
         response = new ResultVo(0, "查询成功", datas);
 
         return response;
     }
 
+    public ResultVo getGoodsByCode(Map<String, String> map) {
+        ResultVo response = null;
+
+        String realUrl = siInventoryServiceUrl + "/selectSalesGoodsItem";
+        JSONArray output = null;
+        try {
+            String jsonString = JSONObject.toJSONString(map, SerializerFeature.WriteNonStringKeyAsString);
+            String ybResult = HttpUtil.sendHttpPost(realUrl, jsonString, 8000);
+            JSONObject ybResultJson = JSONObject.parseObject(ybResult);
+            int responseCode = 0;
+            if(ybResultJson.getInteger("code") != 200) {
+                responseCode = ybResultJson.getInteger("code");
+            }
+//                response = new ResultVo(responseCode, ybResultJson.getString("message"), ybResultJson.get("data"));
+            JSONObject data = ybResultJson.getJSONObject("data");
+            output = data.getJSONArray("output");
+            // 记录医保接口调用结果
+            // 通过关联键可以快速定位具体的退药记录,便于问题排查和审计
+            log.info("医保查询接口调用结果 - 结果: {}", response);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            response = new ResultVo(-1, "商品销售查询失败");
+            // 记录错误信息时包含关联键,便于快速定位问题
+            log.error("医保查询接口调用失败 - 错误: {}", e.getMessage());
+        }
+        response = new ResultVo(0, "查询成功", output);
+
+        return response;
+    }
+
+    public ResultVo getGoodsByCode() {
+        ResultVo response = null;
+        List<SelinfoSold> selinfoSoldListNoWhere = selinfoSoldMapper.getSelinfoSoldListNoWhere();
+        for(SelinfoSold sold : selinfoSoldListNoWhere) {
+            selinfoSoldMapper.getSelinfoSoldDrugtracById(sold.getId());
+        }
+        return response;
+    }
+
 }