Kaynağa Gözat

事前提醒

0027005599 2 yıl önce
ebeveyn
işleme
18de8516f1

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/SystemEventAttrConstant.java

@@ -26,6 +26,11 @@ public class SystemEventAttrConstant {
      */
     public static String MEDICAL_INS_RULE_INFO_CODE = "medical_ins_rule_info_code";
 
+    /**
+     * 医保规则描述 eventAttrId:994
+     */
+    public static String MEDICAL_INS_RULE_INFO_DESC = "medical_ins_rule_info_desc";
+
     /**
      * 医保项目编码 eventAttrId: 998
      */

+ 16 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AdvanceWarningAuditDetail.java

@@ -112,6 +112,22 @@ public class AdvanceWarningAuditDetail implements Serializable {
 	@Excel(name = "规则处理结果", width = 15)
     @ApiModelProperty(value = "规则处理结果")
     private java.lang.String description;
+    /**规则处理结果*/
+    @Excel(name = "扩展属性1", width = 15)
+    @ApiModelProperty(value = "扩展属性1")
+    private java.lang.String extAttr1;
+    /**规则处理结果*/
+    @Excel(name = "扩展属性2", width = 15)
+    @ApiModelProperty(value = "扩展属性2")
+    private java.lang.String extAttr2;
+    /**规则处理结果*/
+    @Excel(name = "扩展属性3", width = 15)
+    @ApiModelProperty(value = "扩展属性3")
+    private java.lang.String extAttr3;
+    /**规则处理结果*/
+    @Excel(name = "扩展属性4", width = 15)
+    @ApiModelProperty(value = "扩展属性4")
+    private java.lang.String extAttr4;
 	/**创建人*/
     @ApiModelProperty(value = "创建人")
     private java.lang.String createBy;

+ 4 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AdviceDetailsVO.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.medical.entity;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Positive;
 
 /**
  * 医嘱明细接口入参
@@ -53,6 +54,7 @@ public class AdviceDetailsVO {
      * 1414	麻醉相关项目费
      * 1415	其他医疗费
      */
+    @NotBlank(message = "费用类别不能为空")
     private String expense_category;
     /**
      * 收费项目等级
@@ -62,7 +64,8 @@ public class AdviceDetailsVO {
     private String dose_form;//		char	剂型
     private String medical_specification;//		char	规格
     private Double price;//	true	float	单价,必须使用数值型,如”12.5”
-    private Float quantity;//	true	float	发药数量,必须使用数值型,如”10”
+    @Positive(message = "数量必须是正数")
+    private Float quantity;//	true	float	耗材、诊疗、发药数量,必须使用数值型,如”10”
     private String dose_unit;//	true	char	单位,发药单位,例如:瓶、盒、片等,和发药数量对应
     @NotBlank(message = "医嘱明细项目金额不能为空")
     private Double amount;//	true	float	金额,必须使用数值型,如”50.5”

+ 7 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/FactorEnchangeFactory.java

@@ -123,6 +123,8 @@ public class FactorEnchangeFactory {
                     if (Constant.WARING_EVENT_ATTR_ID == factorEnchance.getEventAttrId()) {
                         if (result) {
                             insertWarningDetail(localMap, medicalInsRuleInfo, audit, itemList);
+                        } else{
+
                         }
                     } else {
                         localMap.put(getParamName(factorEnchance.getEventAttrId()), result);
@@ -160,10 +162,11 @@ public class FactorEnchangeFactory {
         if (null == audit || CollectionUtil.isEmpty(itemList)) {
             return;
         }
-        if (audit instanceof AdvanceWarningAudit) {
-            AdvanceWarningAudit advanceWarningAudit = (AdvanceWarningAudit) audit;
-            insertAdvanceWaringDetail(itemMap, medicalInsRuleInfo, advanceWarningAudit);
-        } else if (audit instanceof MidIncidentAudit) {
+//        if (audit instanceof AdvanceWarningAudit) {
+//            AdvanceWarningAudit advanceWarningAudit = (AdvanceWarningAudit) audit;
+//            insertAdvanceWaringDetail(itemMap, medicalInsRuleInfo, advanceWarningAudit);
+//        } else
+        if (audit instanceof MidIncidentAudit) {
             MidIncidentAudit midIncidentAudit = (MidIncidentAudit) audit;
             insertMidWarningDetail(itemMap, medicalInsRuleInfo, midIncidentAudit, itemList);
         } else {

+ 1 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/RuleEngine.java

@@ -544,6 +544,7 @@ public class RuleEngine {
                 paramMap.put(SystemEventAttrConstant.MEDICAL_INS_RULE_INFO_ID, medicalRuleInsInfoId);
                 paramMap.put(SystemEventAttrConstant.MEDICAL_INS_RULE_INFO_CODE, medicalInsRuleInfo.getRuleCode());
                 paramMap.put(SystemEventAttrConstant.MEDICAL_INS_RULE_INFO_NAME, medicalInsRuleInfo.getRuleName());
+                paramMap.put(SystemEventAttrConstant.MEDICAL_INS_RULE_INFO_DESC, medicalInsRuleInfo.getDescription());
                 factorEnchangeFactory.runFactorEnchange(medicalRuleInsInfoId, medicalInsRuleInfo, audit, paramMap, ruleFactorRelaList, factorEnchanceListTemp, null);
             }
         }

+ 13 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/SqlUtil.java

@@ -45,7 +45,11 @@ public class SqlUtil {
 
         List<FactorAttrRela> factorAttrRelaOutList = ioTypeMap.get(Constant.OUTPUT);
         if (CollectionUtil.isNotEmpty(factorAttrRelaOutList)) {
-            if (factorAttrRelaOutList.size() == 1 && checkEventAttrArr(factorAttrRelaOutList.get(0).getEventAttrId())) {
+            if (factorAttrRelaOutList.size() == 1 && checkEventAttrArrMap(factorAttrRelaOutList.get(0).getEventAttrId())) {
+                List<Map<String,Object>> dataList = jdbcTemplate.queryForList(sql);
+//                    jdbcTemplate.queryForList()
+                localMap.put(FactorEnchangeFactory.getParamName(factorAttrRelaOutList.get(0).getEventAttrId()), dataList);
+            }else if (factorAttrRelaOutList.size() == 1 && checkEventAttrArr(factorAttrRelaOutList.get(0).getEventAttrId())) {
                 List<Object> dataList = jdbcTemplate.queryForList(sql,Object.class);
 //                    jdbcTemplate.queryForList()
                 localMap.put(FactorEnchangeFactory.getParamName(factorAttrRelaOutList.get(0).getEventAttrId()), dataList);
@@ -66,6 +70,14 @@ public class SqlUtil {
 
 
     }
+    public boolean checkEventAttrArrMap(Integer eventAttrId) {
+        EventAttr eventAttr = FactorEnchangeFactory.enchanceAttrMap.get(eventAttrId);
+        Integer dispType = eventAttr.getDispType();
+        if (ColumnTypeEnum.getType(dispType) == ColumnTypeEnum.ARRAY_MAP) {
+            return true;
+        }
+        return false;
+    }
 
     public boolean checkEventAttrArr(Integer eventAttrId) {
         EventAttr eventAttr = FactorEnchangeFactory.enchanceAttrMap.get(eventAttrId);

+ 1 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/plugin/AfterStaticisPlugin.java

@@ -34,6 +34,7 @@ public class AfterStaticisPlugin implements PluginInterface {
             return;
         }
         int updateCount = namedParameterJdbcTemplate.update(paramSql.toString(), localMap);
+
         if (updateCount <= 0) {
             log.error("要素提取:{} 执行插件sql失败", factorEnchance);
         }

+ 55 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/plugin/InsertSqlPlugin.java

@@ -0,0 +1,55 @@
+package org.jeecg.modules.medical.ruleengine.plugin;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.dynamic.db.DynamicDBUtil;
+import org.jeecg.modules.medical.ColumnTypeEnum;
+import org.jeecg.modules.medical.Constant;
+import org.jeecg.modules.medical.entity.EventAttr;
+import org.jeecg.modules.medical.entity.FactorAttrRela;
+import org.jeecg.modules.medical.entity.FactorEnchance;
+import org.jeecg.modules.medical.ruleengine.FactorEnchangeFactory;
+import org.jeecg.modules.medical.ruleengine.PluginInterface;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+@Slf4j
+@Component("insertSqlPlugin")
+public class InsertSqlPlugin implements PluginInterface {
+
+    @Override
+    public void plugin(Map<String, Object> localMap, Map<Integer, List<FactorAttrRela>> ioTypeMap, FactorEnchance factorEnchance, Integer medicalInsRuleInfoId) {
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = DynamicDBUtil.getNamedParameterJdbcTemplate(Constant.LOCAL_MYSQL);
+        List<FactorAttrRela> factorAttrRelaList = ioTypeMap.get(Constant.INPUT);
+        if(CollectionUtil.isEmpty(factorAttrRelaList)){
+            log.error("要素提取:{} 未配置入参", factorEnchance);
+            return;
+        }
+        Object paramSql = factorEnchance.getEnhanceValue();
+        if(null == paramSql){
+            log.error("要素提取:{} 插件未获取到sql配置", factorEnchance);
+            return;
+        }
+        EventAttr eventAttr = FactorEnchangeFactory.enchanceAttrMap.get(factorAttrRelaList.get(0).getEventAttrId());
+        ColumnTypeEnum columnTypeEnum = ColumnTypeEnum.getType(eventAttr.getDispType());
+        if(ColumnTypeEnum.ARRAY_MAP == columnTypeEnum){
+            List<MapSqlParameterSource> batchArgs = new ArrayList<>();
+            List<Map<String,Object>> dataList = (List<Map<String, Object>>) localMap.get(FactorEnchangeFactory.getParamName(eventAttr.getId()));
+
+            for (Map<String,Object> dataMap : dataList) {
+                dataMap.putAll(localMap);
+                MapSqlParameterSource parameters = new MapSqlParameterSource(dataMap);
+
+                batchArgs.add(parameters);
+            }
+            namedParameterJdbcTemplate.batchUpdate(paramSql.toString(), batchArgs.toArray(new MapSqlParameterSource[batchArgs.size()]));
+        }else{
+            namedParameterJdbcTemplate.update(paramSql.toString(), localMap);
+        }
+
+    }
+}