DESKTOP-0GD05B0\Administrator 2 лет назад
Родитель
Сommit
226494d5a7

+ 2 - 1
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/CaoYaoYiZhuController.java

@@ -15,6 +15,7 @@ import thyyxxk.webserver.service.zhuyuanyisheng.CaoYaoYiZhuServer;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -83,7 +84,7 @@ public class CaoYaoYiZhuController {
 
 
     @PostMapping("/baoCunCaoYao")
-    public ResultVo<String> baoCunCaoYao(@RequestBody YzActOrderCy param) {
+    public ResultVo<Map<String, List<String>>> baoCunCaoYao(@RequestBody YzActOrderCy param) {
         return server.baoCunCaoYao(param);
     }
 

+ 4 - 0
src/main/java/thyyxxk/webserver/dao/his/PublicDao.java

@@ -530,4 +530,8 @@ public interface PublicDao {
     List<GetDropdownBox> getZhuYuanDept();
 
 
+    @Select("select group_name from yp_zd_group_name where group_no = #{groupNo} ")
+    String getGroupName(String groupNo);
+
+
 }

+ 4 - 5
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/YiZhuLuRuDao.java

@@ -713,7 +713,7 @@ public interface YiZhuLuRuDao {
                                          @Param("dept") String dept);
 
 
-    @Select("select cast(isnull(NULLIF(doctor_xz_yp, ''), 0) as int) from a_employee_mi with (NOLOCK) where code = #{code}")
+    @Select("select cast(isnull(NULLIF(doctor_xz_yp, ''), 0) as int) + 1  from a_employee_mi with (NOLOCK) where code = #{code}")
     Integer huoQuYiShenDengJi(String code);
 
 
@@ -799,7 +799,8 @@ public interface YiZhuLuRuDao {
 
     @Select("<script>" +
             "select rtrim(code)                       order_code, " +
-            "       rtrim(a.serial)                     serial, " +
+            "       rtrim(a.serial)                   serial, " +
+            "       rtrim(group_no)                   group_no, " +
             "       rtrim(name)                       order_name," +
             "       case infusion_flag " +
             "           when '1' then 'i' " +
@@ -826,14 +827,12 @@ public interface YiZhuLuRuDao {
             "       deptRestrictions = (select count(1) from yp_zd_dept where code = yp_zd_dept.charge_code and dept_code = '${dept}')  " +
             " from yp_zd_dict a with (NOLOCK)  " +
             " left join yp_base_yf b on (code = b.charge_code and  a.serial = b.serial) " +
-            "where rtrim(code) + rtrim(a.serial) in " +
+            "where rtrim(code) + rtrim(a.serial) + rtrim(group_no) in " +
             "<foreach collection='code' item='item' index='index' open='(' close=')' separator=','>" +
             "#{item}" +
             "</foreach>" +
-            " and group_no = #{groupNo} " +
             "</script>")
     List<XinZhenYzActOrder> huoQuYaoPinXinXi(@Param("code") Set<String> code,
-                                             @Param("groupNo") String groupNo,
                                              @Param("dept") String dept);
 
 

+ 8 - 2
src/main/java/thyyxxk/webserver/service/PublicServer.java

@@ -749,10 +749,16 @@ public class PublicServer {
      * @description: 查询有住院的科室
      * @author: lihong
      * @date: 2022/12/26 16:58
-     * @return: thyyxxk.webserver.entity.ResultVo<java.util.List<thyyxxk.webserver.entity.datamodify.GetDropdownBox>>
+     * @return: thyyxxk.webserver.entity.ResultVo<java.util.List < thyyxxk.webserver.entity.datamodify.GetDropdownBox>>
      **/
     public ResultVo<List<GetDropdownBox>> getZhuYuanDept() {
-      return ResultVoUtil.success(dao.getZhuYuanDept());
+        return ResultVoUtil.success(dao.getZhuYuanDept());
+    }
+
+
+    public String getName(String groupNo) {
+        String name = dao.getGroupName(groupNo);
+        return name == null ? "未知" : name;
     }
 
 }

+ 47 - 5
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/CaoYaoYiZhuServer.java

@@ -17,13 +17,13 @@ import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.YzActOrderCy;
 import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.YzActOrderCyDetail;
 import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.YzOrderPatternCy;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYiZhu;
+import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYzActOrder;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.YiZhuMingChen;
 import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.utils.*;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 /**
  * <p>
@@ -40,11 +40,13 @@ public class CaoYaoYiZhuServer {
     private final CaoYaoYiZhuDao dao;
     private final PublicServer publicServer;
     private final YiZhuLuRuDao yiZhuLuRuDao;
+    private final YiZhuLuRuServer yiZhuLuRuServer;
 
-    public CaoYaoYiZhuServer(CaoYaoYiZhuDao dao, PublicServer publicServer, YiZhuLuRuDao yiZhuLuRuDao) {
+    public CaoYaoYiZhuServer(CaoYaoYiZhuDao dao, PublicServer publicServer, YiZhuLuRuDao yiZhuLuRuDao, YiZhuLuRuServer yiZhuLuRuServer) {
         this.dao = dao;
         this.publicServer = publicServer;
         this.yiZhuLuRuDao = yiZhuLuRuDao;
+        this.yiZhuLuRuServer = yiZhuLuRuServer;
     }
 
     public ResultVo<IPage<YzActOrderCy>> huoQuCaoYaoShuJu(CaoYaoChaXunTiaoJian param) {
@@ -132,15 +134,55 @@ public class CaoYaoYiZhuServer {
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
     }
 
-    public ResultVo<String> baoCunCaoYao(YzActOrderCy param) {
+    public ResultVo<Map<String, List<String>>> baoCunCaoYao(YzActOrderCy param) {
         log.info("上传的数据:{}", JSON.toJSONString(param));
         if (ListUtil.isBlank(param.getList())) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请先选择需要上传的数据。");
         }
+        // 药品 code
+        Set<String> yaoPingCode = new HashSet<>(param.getList().size());
         publicServer.huanZheJieSuan(param.getInpatientNo(), param.getAdmissTimes());
         BigDecimal sum = new BigDecimal(0);
         for (YzActOrderCyDetail item : param.getList()) {
             sum = sum.add(item.getQuantity().multiply(item.getRetprice()));
+            yaoPingCode.add(item.getChargeCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
+        }
+        XinZhenYiZhu patInfo = yiZhuLuRuDao.huoQuHuanZheXinXi(param.getInpatientNo(), param.getAdmissTimes());
+        Map<String, XinZhenYzActOrder> drug = yiZhuLuRuServer.getDrugInformation(yaoPingCode, patInfo.getZkWard());
+        // 错误信息
+        Map<String, List<String>> errorMap = new HashMap<>();
+        // 获取医生开药品的权限
+        Integer doctorLevel = yiZhuLuRuDao.huoQuYiShenDengJi(TokenUtil.getTokenUserId());
+
+        for (int i = 0; i < param.getList().size(); i++) {
+            YzActOrderCyDetail item = param.getList().get(i);
+            XinZhenYzActOrder feiYongXinXi = drug.get(item.getChargeCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
+            List<String> errorMessage = new ArrayList<>();
+            if (feiYongXinXi == null) {
+                errorMessage.add("没有找到药品信息,请联系药剂药房。");
+            } else {
+                if (feiYongXinXi.getDelFlag() == 1) {
+                    errorMessage.add("药品已经被停用了,请联系药剂科");
+                }
+                if (feiYongXinXi.getYpLevel() > doctorLevel) {
+                    errorMessage.add("您没有开此药品的权限");
+                }
+                if (BigUtils.bigDaYu(item.getQuantity(), feiYongXinXi.getStockAmount())) {
+                    errorMessage.add("药品领量大于药品的库存,当前库存量" + feiYongXinXi.getStockAmount().stripTrailingZeros().toPlainString());
+                }
+                if (feiYongXinXi.getDeptRestrictions() > 0) {
+                    errorMessage.add("该药品禁止在患者所在的科室使用。");
+                }
+                if (feiYongXinXi.getVisibleFlagZy() == 1) {
+                    errorMessage.add("该药品禁止住院患者使用。");
+                }
+            }
+            if (ListUtil.notBlank(errorMessage)) {
+                errorMap.put("第" + (i + 1) + "个,名称:" + item.getChargeCodeName(), errorMessage);
+            }
+        }
+        if (!errorMap.isEmpty()) {
+            return ResultVoUtil.fail(ExceptionEnum.ERROR_MESSAGE, "请修改有错误的数据。", errorMap);
         }
         param.setOrderJe(sum);
         param.setInputId(TokenUtil.getTokenUserId());
@@ -161,6 +203,7 @@ public class CaoYaoYiZhuServer {
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
     }
 
+
     /**
      * 删除草药模板
      * 管理员和有医嘱模板编辑,权限的可以直接删除
@@ -210,5 +253,4 @@ public class CaoYaoYiZhuServer {
     }
 
 
-
 }

+ 16 - 24
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/YiZhuLuRuServer.java

@@ -243,7 +243,7 @@ public class YiZhuLuRuServer {
             if (ITEM.equals(item.getSerial())) {
                 xiangMuCode.add(item.getOrderCode());
             } else {
-                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim());
+                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
             }
         }
 
@@ -254,7 +254,7 @@ public class YiZhuLuRuServer {
         // 获取医生开药品的权限
         Integer doctorLevel = dao.huoQuYiShenDengJi(userCode);
         XinZhenYiZhu huanZheXinXi = dao.huoQuHuanZheXinXi(param.getInpatientNo(), param.getAdmissTimes());
-        Map<String, XinZhenYzActOrder> drug = getDrugInformation(yaoPingCode, huanZheXinXi.getSmallDept());
+        Map<String, XinZhenYzActOrder> drug = getDrugInformation(yaoPingCode, huanZheXinXi.getZkWard());
         Map<String, List<XinZhenYzActOrder>> project = getProjectInformation(xiangMuCode);
 
         // 是否可以确认
@@ -362,9 +362,9 @@ public class YiZhuLuRuServer {
         if (ITEM.equals(data.getSerial())) {
             xiangMuCode.add(data.getOrderCode());
         } else {
-            yaoPingCode.add(data.getOrderCode().trim() + data.getSerial().trim());
+            yaoPingCode.add(data.getOrderCode().trim() + data.getSerial().trim() + data.getGroupNo().trim());
         }
-        Map<String, XinZhenYzActOrder> drug = getDrugInformation(yaoPingCode, huanZheXinXi.getSmallDept());
+        Map<String, XinZhenYzActOrder> drug = getDrugInformation(yaoPingCode, huanZheXinXi.getZkWard());
         Map<String, List<XinZhenYzActOrder>> project = getProjectInformation(xiangMuCode);
         Map<String, Object> errorMessageMap = checkData(data, drug, project, huanZheXinXi, doctorLevel);
 
@@ -390,7 +390,7 @@ public class YiZhuLuRuServer {
                 dao.insertDoctorSOrder(transferData);
             }
             // 判断是不是抗菌药物
-            XinZhenYzActOrder kssItem = drug.get(data.getOrderCode().trim() + data.getSerial().trim());
+            XinZhenYzActOrder kssItem = drug.get(data.getOrderCode().trim() + data.getSerial().trim() + data.getGroupNo().trim());
             if (kssItem != null && kssItem.getKjywFlag() != null && kssItem.getKjywFlag() == 1) {
                 YzActRecordKss kss = new YzActRecordKss();
                 kss.setActOrderNo(data.getActOrderNo());
@@ -402,10 +402,8 @@ public class YiZhuLuRuServer {
                         kss, userCode, param.getInpatientNo(), param.getAdmissTimes());
             }
         }
-
         dao.deleteOrderNo(param.getActOrderNo(), param.getInpatientNo(), param.getAdmissTimes());
         dao.insertEntryOrder(huanZheXinXi, param.getData(), userCode);
-
         if (!errorMessageMap.isEmpty()) {
             Map<String, Object> map = new HashMap<>();
             errorMessageMap.put("data", data);
@@ -665,7 +663,7 @@ public class YiZhuLuRuServer {
             }
             Integer yiShenDengJi = dao.huoQuYiShenDengJi(TokenUtil.getTokenUserId());
             int yiShen = yiShenDengJi == null ? 0 : yiShenDengJi;
-            if (yp.getYpLevel() > yiShen + 1) {
+            if (yp.getYpLevel() > yiShen) {
                 return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "您没有开此药品的权限。");
             }
 
@@ -750,11 +748,11 @@ public class YiZhuLuRuServer {
             if (ITEM.equals(item.getSerial().trim())) {
                 xiangMuCode.add(item.getOrderCode().trim());
             } else {
-                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim());
+                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
             }
         }
         XinZhenYiZhu huanZheXinXi = dao.huoQuHuanZheXinXi(param.getInpatientNo(), param.getAdmissTimes());
-        Map<String, Object> errorMessage = checkData(param.getList().get(0), getDrugInformation(yaoPingCode, huanZheXinXi == null ? null : huanZheXinXi.getSmallDept()), getProjectInformation(xiangMuCode), huanZheXinXi, doctorLevel);
+        Map<String, Object> errorMessage = checkData(param.getList().get(0), getDrugInformation(yaoPingCode, huanZheXinXi == null ? null : huanZheXinXi.getZkWard()), getProjectInformation(xiangMuCode), huanZheXinXi, doctorLevel);
         errorMessage.put("data", param.getList().get(0));
         return ResultVoUtil.success(errorMessage);
     }
@@ -782,7 +780,7 @@ public class YiZhuLuRuServer {
             if (ITEM.equals(item.getSerial().trim())) {
                 xiangMuCode.add(item.getOrderCode().trim());
             } else {
-                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim());
+                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
             }
             doctorSOrderMap.put(item.getId(), item);
         }
@@ -797,7 +795,7 @@ public class YiZhuLuRuServer {
 
         boolean isThereAnyErrorMessage = false;
         Map<String, Object> map = new HashMap<>();
-        Map<String, XinZhenYzActOrder> drug = getDrugInformation(yaoPingCode, huanZheXinXi.getSmallDept());
+        Map<String, XinZhenYzActOrder> drug = getDrugInformation(yaoPingCode, huanZheXinXi.getZkWard());
         Map<String, List<XinZhenYzActOrder>> project = getProjectInformation(xiangMuCode);
 
         int index = 0;
@@ -930,12 +928,6 @@ public class YiZhuLuRuServer {
         }
     }
 
-    public static void main(String[] args) {
-        BigDecimal a = new BigDecimal("1");
-        BigDecimal b = new BigDecimal("0.2");
-        System.out.println(DecimalUtil.divide(a, b));
-    }
-
     private Map<String, Object> checkData(XinZhenYzActOrder item, Map<String, XinZhenYzActOrder> drug, Map<String, List<XinZhenYzActOrder>> project, XinZhenYiZhu huanZheXinXi, Integer 医生级别) {
         boolean 严格校验 = huanZheXinXi != null;
         List<String> 错误信息 = new ArrayList<>();
@@ -956,12 +948,12 @@ public class YiZhuLuRuServer {
             }
             item.setDrugOcc(item.getDrugQuan());
         } else {
-            XinZhenYzActOrder feiYongXinXi = drug.get(item.getOrderCode().trim() + item.getSerial().trim());
+            XinZhenYzActOrder feiYongXinXi = drug.get(item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
             if (feiYongXinXi != null) {
                 if (feiYongXinXi.getDelFlag() == 1) {
                     错误信息.add("药品已经被停用了,请联系药剂科");
                 }
-                if (feiYongXinXi.getYpLevel() > 医生级别 + 1) {
+                if (feiYongXinXi.getYpLevel() > 医生级别) {
                     错误信息.add("您没有开此药品的权限");
                 }
                 if (StringUtil.isBlank(feiYongXinXi.getNationalCode())) {
@@ -1142,7 +1134,7 @@ public class YiZhuLuRuServer {
      * @param xiangMuCode 项目编码
      * @return 返回数据
      */
-    private Map<String, List<XinZhenYzActOrder>> getProjectInformation(Set<String> xiangMuCode) {
+    public Map<String, List<XinZhenYzActOrder>> getProjectInformation(Set<String> xiangMuCode) {
         if (!xiangMuCode.isEmpty()) {
             return dao.huoQuXiangMuXinXi(xiangMuCode).stream().collect(Collectors.groupingBy(item -> item.getOrderCode().trim()));
         }
@@ -1155,9 +1147,9 @@ public class YiZhuLuRuServer {
      * @param yaoPingCode 药品编码
      * @return 返回数据
      */
-    private Map<String, XinZhenYzActOrder> getDrugInformation(Set<String> yaoPingCode, String dept) {
+    public Map<String, XinZhenYzActOrder> getDrugInformation(Set<String> yaoPingCode, String dept) {
         if (!yaoPingCode.isEmpty()) {
-            return dao.huoQuYaoPinXinXi(yaoPingCode, publicServer.getGroupNo(), dept).stream().collect(Collectors.toMap(item -> item.getOrderCode().trim() + item.getSerial().trim(), a -> a, (k1, k2) -> k1));
+            return dao.huoQuYaoPinXinXi(yaoPingCode, dept).stream().collect(Collectors.toMap(item -> item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo(), a -> a, (k1, k2) -> k1));
         }
         return new HashMap<>(0);
     }
@@ -1527,7 +1519,7 @@ public class YiZhuLuRuServer {
             if (ITEM.equals(item.getSerial())) {
                 xiangMuCode.add(item.getOrderCode());
             } else {
-                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim());
+                yaoPingCode.add(item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim());
             }
         }
         String userCode = TokenUtil.getTokenUserId();