Browse Source

新增药品字典编码避开医嘱编码冲突

hsh 1 year ago
parent
commit
bd59d87bad

+ 10 - 0
src/main/java/cn/hnthyy/thmz/mapper/his/yp/YpZdDictMapper.java

@@ -283,4 +283,14 @@ public interface YpZdDictMapper {
             " GROUP BY code,name </script>"})
     List<YpZdDict> selectYpZdDictList(@Param("code") String code);
 
+    /**
+     * @Description 药品编码与医嘱编码冲突重置编码
+     * @Author hsh
+     * @param code 新增预置药品编码
+     * @return int
+     * @Date 2024/1/29 15:15
+     */
+    @Select(" select count(1) from yz_zd_order_item_confirm where yz_zd_order_item_confirm.order_code = #{code} ")
+    int selectYzOrderItemByCode(String code);
+
 }

+ 24 - 10
src/main/java/cn/hnthyy/thmz/service/impl/his/yp/YpZdDictServiceImpl.java

@@ -142,18 +142,16 @@ public class YpZdDictServiceImpl implements YpZdDictService {
         }else{
             String ypType = ypZdDrugKindMapper.selectYpZdDrugKind(ypZdDict.getDrugKind()).getYpType();
             YpTypeNumberEnum ypTypeNumber = YpTypeNumberEnum.getYpTypeNumberByCode(Integer.parseInt(ypType));
+            assert ypTypeNumber != null;
             String maxCode = ypZdDictMapper.selectMaxCode(ypTypeNumber.minNum, ypTypeNumber.maxNum);
             int code = Integer.parseInt(maxCode)+1;
-            if(code > 9999){
-                maxCode = ""+code;
-            }else if(code > 999){
-                maxCode = "0"+code;
-            }else if(code > 99){
-                maxCode = "00"+code;
-            }else if(code > 9){
-                maxCode = "000"+code;
-            }else{
-                maxCode = "0000"+code;
+            maxCode = callYpCodeFormat(code);
+            // 药品编码与医嘱编码冲突重置编码
+            int cs = ypZdDictMapper.selectYzOrderItemByCode(maxCode);
+            while (cs > 0) {
+                code ++;
+                maxCode = callYpCodeFormat(code);
+                cs = ypZdDictMapper.selectYzOrderItemByCode(maxCode);
             }
             ypZdDict.setCode(maxCode);
             String serial = ypZdDict.getMiniUnit().equals(ypZdDict.getPackUnit())?"01":"99";
@@ -177,6 +175,22 @@ public class YpZdDictServiceImpl implements YpZdDictService {
         return 0;
     }
 
+    private String callYpCodeFormat(int code) {
+        String ypCode;
+        if(code > 9999){
+            ypCode = ""+code;
+        }else if(code > 999){
+            ypCode = "0"+code;
+        }else if(code > 99){
+            ypCode = "00"+code;
+        }else if(code > 9){
+            ypCode = "000"+code;
+        }else{
+            ypCode = "0000"+code;
+        }
+        return ypCode;
+    }
+
     //数据集
     private Map<String,String> map = new HashMap<>();