Bladeren bron

Merge remote-tracking branch 'origin/master'

lenovodn 2 jaren geleden
bovenliggende
commit
a5912a0048

+ 23 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/common/bo/ExportRuleTitleDTO.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.medical.common.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author soft01
+ * @time 2023/5/31 22:50
+ * @description '导出规则,查询规则名称的DTO'
+ * @parentProject medical-java
+ */
+@Data
+@ApiModel(value = "导出规则,查询规则名称的DTO")
+public class ExportRuleTitleDTO implements Serializable {
+
+    @ApiModelProperty("导出之标题")
+    private String ruleName;
+    @ApiModelProperty("导出之字段")
+    private String selectedRoles;
+}

+ 2 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/MedicalInsRuleInfoController.java

@@ -287,4 +287,6 @@ public class MedicalInsRuleInfoController extends JeecgController<MedicalInsRule
         return super.importExcel(request, response, MedicalInsRuleInfo.class);
     }
 
+
+
 }

+ 19 - 6
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/MedicalInsRuleProjectController.java

@@ -50,7 +50,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 public class MedicalInsRuleProjectController extends JeecgController<MedicalInsRuleProject, IMedicalInsRuleProjectService> {
 	@Autowired
 	private IMedicalInsRuleProjectService medicalInsRuleProjectService;
-	
+
 	/**
 	 * 分页列表查询
 	 *
@@ -72,7 +72,7 @@ public class MedicalInsRuleProjectController extends JeecgController<MedicalInsR
 		IPage<MedicalInsRuleProject> pageList = medicalInsRuleProjectService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
-	
+
 	/**
 	 *   添加
 	 *
@@ -86,7 +86,7 @@ public class MedicalInsRuleProjectController extends JeecgController<MedicalInsR
 		medicalInsRuleProjectService.save(medicalInsRuleProject);
 		return Result.OK("添加成功!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
@@ -100,7 +100,7 @@ public class MedicalInsRuleProjectController extends JeecgController<MedicalInsR
 		medicalInsRuleProjectService.updateById(medicalInsRuleProject);
 		return Result.OK("编辑成功!");
 	}
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -114,7 +114,7 @@ public class MedicalInsRuleProjectController extends JeecgController<MedicalInsR
 		medicalInsRuleProjectService.removeById(id);
 		return Result.OK("删除成功!");
 	}
-	
+
 	/**
 	 *  批量删除
 	 *
@@ -128,7 +128,7 @@ public class MedicalInsRuleProjectController extends JeecgController<MedicalInsR
 		this.medicalInsRuleProjectService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *
@@ -157,6 +157,19 @@ public class MedicalInsRuleProjectController extends JeecgController<MedicalInsR
         return super.exportXls(request, medicalInsRuleProject, MedicalInsRuleProject.class, "medical_ins_rule_project");
     }
 
+	 /**
+	  * 导出灵活表头的Excel
+	  *
+	  * @param request
+	  * @param medicalInsRuleProject
+	  */
+//	 @RequiresPermissions("medical:medical_ins_rule_project:exportXls")
+	 @RequestMapping(value = "/export/templateXls")
+	 public ModelAndView exportTemplateXls(HttpServletRequest request, MedicalInsRuleProject medicalInsRuleProject) {
+//		 return super.exportXls(request, medicalInsRuleProject, MedicalInsRuleProject.class, "medical_ins_rule_project");
+		 return medicalInsRuleProjectService.exportTemplateXls(request, medicalInsRuleProject, MedicalInsRuleProject.class, "");
+	 }
+
     /**
       * 通过excel导入数据
     *

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

@@ -41,11 +41,11 @@ public class MedicalInsRuleProject implements Serializable {
     @ApiModelProperty(value = "医保规则ID")
     private java.lang.Integer medicalInsRuleInfoId;
 	/**医保主数据类型;MEDICINE(药品主数据表)、CONSUMABLE_METERIAL(耗材主数据表)、DIAGNOSIS_TREATMENT(诊疗主数据表)、DIAGNOSIS(诊断主数据表)、OPERATIVE(手术主数据表)*/
-	@Excel(name = "医保主数据类型;MEDICINE(药品主数据表)、CONSUMABLE_METERIAL(耗材主数据表)、DIAGNOSIS_TREATMENT(诊疗主数据表)、DIAGNOSIS(诊断主数据表)、OPERATIVE(手术主数据表)", width = 15)
+	@Excel(name = "医保主数据类型", width = 15)
     @ApiModelProperty(value = "医保主数据类型;MEDICINE(药品主数据表)、CONSUMABLE_METERIAL(耗材主数据表)、DIAGNOSIS_TREATMENT(诊疗主数据表)、DIAGNOSIS(诊断主数据表)、OPERATIVE(手术主数据表)")
     private java.lang.String medicineDataType;
 	/**主数据表编码*/
-	@Excel(name = "主数据表编码", width = 15)
+	@Excel(name = "项目编码", width = 15)
     @ApiModelProperty(value = "主数据表编码")
     private java.lang.String projectCode;
 	/**项目名称*/
@@ -65,48 +65,51 @@ public class MedicalInsRuleProject implements Serializable {
     @ApiModelProperty(value = "关联项目名称")
     private java.lang.String correlationProjectName;
 	/**收费等级;01 甲类 02 乙类 03 丙类 04 可报丙类*/
-	@Excel(name = "收费等级;01 甲类 02 乙类 03 丙类 04 可报丙类", width = 15)
+	@Excel(name = "收费等级", width = 15)
     @ApiModelProperty(value = "收费等级;01 甲类 02 乙类 03 丙类 04 可报丙类")
     @Dict(dicCode = "change_class")
     private java.lang.String changeClass;
     /**医疗收费项目类别*/
-    @Excel(name = "医疗收费项目类别;01\t床位费 02\t诊察费 03\t检查费 04\t化验费 05\t治疗费 06\t手术费 07\t护理费 08\t卫生材料费 09\t西药费 10\t中药饮片费 11\t中成药费 12\t一般诊疗费 13\t挂号费 14\t其他费 14012\t单病种除外内容 14013\t单病种超标准床位费 14014\t单病种定额标准费 1407\t救护车费 1408\tMRI费 1409\tCT费 1410\t彩超费 1411\t输氧费 1412\t输血费 1413\t麻醉费 1414\t麻醉相关项目费 1415\t其他医疗费", width = 15)
+    @Excel(name = "医疗收费项目类别", width = 15)
     @ApiModelProperty(value = "医疗收费项目类别;01\t床位费 02\t诊察费 03\t检查费 04\t化验费 05\t治疗费 06\t手术费 07\t护理费 08\t卫生材料费 09\t西药费 10\t中药饮片费 11\t中成药费 12\t一般诊疗费 13\t挂号费 14\t其他费 14012\t单病种除外内容 14013\t单病种超标准床位费 14014\t单病种定额标准费 1407\t救护车费 1408\tMRI费 1409\tCT费 1410\t彩超费 1411\t输氧费 1412\t输血费 1413\t麻醉费 1414\t麻醉相关项目费 1415\t其他医疗费")
     @Dict(dicCode = "categories_items")
-
     private java.lang.String categoriesItems;
 	/**年龄;*/
-	@Excel(name = "年龄;", width = 15)
+	@Excel(name = "年龄", width = 15)
     @ApiModelProperty(value = "年龄;")
     private java.lang.Integer age;
 	/**医疗机构等级;*/
-	@Excel(name = "医疗机构等级;", width = 15)
+	@Excel(name = "医疗机构等级", width = 15)
     @ApiModelProperty(value = "医疗机构等级;")
     @Dict(dicCode = "medical_ins_level")
-
     private java.lang.String medicalInsLevel;
 	/**医师级别;*/
-	@Excel(name = "医师级别;", width = 15)
+	@Excel(name = "医师级别", width = 15)
     @ApiModelProperty(value = "医师级别;")
     @Dict(dicCode = "doctor_level")
-
     private java.lang.String doctorLevel;
 	/**参保类型;*/
-	@Excel(name = "参保类型;", width = 15)
+	@Excel(name = "参保类型", width = 15)
     @ApiModelProperty(value = "参保类型;")
     private java.lang.String insType;
 	/**科室;*/
-	@Excel(name = "科室;", width = 15)
+	@Excel(name = "科室", width = 15)
     @ApiModelProperty(value = "科室;")
     private java.lang.String medicalDeptCode;
 	/**用药天数;*/
-	@Excel(name = "用药天数;", width = 15)
+	@Excel(name = "用药天数", width = 15)
     @ApiModelProperty(value = "用药天数;")
     private java.lang.String doseDay;
 	/**状态*/
 	@Excel(name = "状态", width = 15)
     @ApiModelProperty(value = "状态")
     private java.lang.String state;
+
+
+    @Excel(name = "诊断编码")
+    @ApiModelProperty(value = "诊断编码")
+    private String medicalDiagnoseCode;
+
 	/**版本号*/
 	@Excel(name = "版本号", width = 15)
     @ApiModelProperty(value = "版本号")

+ 2 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/MedicalInsRuleProjectMapper.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.medical.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.medical.common.bo.ExportRuleTitleDTO;
 import org.jeecg.modules.medical.entity.MedicalInsRuleProject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -14,4 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface MedicalInsRuleProjectMapper extends BaseMapper<MedicalInsRuleProject> {
 
+    ExportRuleTitleDTO selectTitleNameById(@Param("id") Integer id);
 }

+ 10 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/MedicalInsRuleProjectMapper.xml

@@ -2,4 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.medical.mapper.MedicalInsRuleProjectMapper">
 
-</mapper>
+    <select id="selectTitleNameById" resultType="org.jeecg.modules.medical.common.bo.ExportRuleTitleDTO">
+        SELECT
+            rule_name,
+            selected_roles
+        FROM
+            medical_ins_rule_info
+        WHERE
+            id = #{id,jdbcType=INTEGER}
+    </select>
+</mapper>

+ 4 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IMedicalInsRuleProjectService.java

@@ -2,6 +2,9 @@ package org.jeecg.modules.medical.service;
 
 import org.jeecg.modules.medical.entity.MedicalInsRuleProject;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * @Description: medical_ins_rule_project
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IMedicalInsRuleProjectService extends IService<MedicalInsRuleProject> {
 
+    ModelAndView exportTemplateXls(HttpServletRequest request, MedicalInsRuleProject object, Class<MedicalInsRuleProject> clazz, String title);
 }

+ 116 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/MedicalInsRuleProjectServiceImpl.java

@@ -1,11 +1,38 @@
 package org.jeecg.modules.medical.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.DictDto;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.medical.common.bo.ExportRuleTitleDTO;
 import org.jeecg.modules.medical.entity.MedicalInsRuleProject;
 import org.jeecg.modules.medical.mapper.MedicalInsRuleProjectMapper;
 import org.jeecg.modules.medical.service.IMedicalInsRuleProjectService;
+import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecgframework.poi.util.PoiPublicUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Array;
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: medical_ins_rule_project
@@ -13,7 +40,96 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Date:   2023-05-09 14:39:13
  * @Version: V1.0
  */
+@Slf4j
 @Service
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
 public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRuleProjectMapper, MedicalInsRuleProject> implements IMedicalInsRuleProjectService {
 
+    @Value("${jeecg.path.upload}")
+    private String upLoadPath;
+
+    private final ISysDictService sysDictService;
+
+    @Override
+    public ModelAndView exportTemplateXls(HttpServletRequest request, MedicalInsRuleProject object, Class<MedicalInsRuleProject> clazz, String title) {
+
+
+        ExportRuleTitleDTO exportRuleTitle = baseMapper.selectTitleNameById(object.getId());
+        if (null == exportRuleTitle) {
+            log.error("根据规则id={},获取不到规则表头配置", object.getId());
+            throw new JeecgBootException("找不到规则表头");
+        }
+        List<String> reserveList = new ArrayList<>();
+        if (StringUtils.hasText(exportRuleTitle.getSelectedRoles())) {
+            String[] split = exportRuleTitle.getSelectedRoles().split(",");
+            if (split.length > 0) {
+                // 获取标头
+                List<DictDto> dictDtos = sysDictService.queryDictByKeys(new ArrayList<>(Arrays.asList(split)));
+                if (!CollectionUtils.isEmpty(dictDtos)) {
+                    reserveList = dictDtos.stream().map(DictDto::getText).collect(Collectors.toList());
+                }
+            }
+        }
+        title = exportRuleTitle.getRuleName();
+
+
+
+        // Step.1 组装查询条件
+        QueryWrapper<MedicalInsRuleProject> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+        // 过滤选中数据
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id",selectionList);
+        }
+        // Step.2 获取导出数据
+        List<MedicalInsRuleProject> exportList = this.list(queryWrapper);
+
+        // Step.3 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        //此处设置的filename无效 ,前端会重更新设置一下
+        mv.addObject(NormalExcelConstants.FILE_NAME, title);
+        mv.addObject(NormalExcelConstants.CLASS, clazz);
+        List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();
+        Map<String, Object> item = new HashMap<>();
+        item.put("projectCode", "项目编号");
+        maps.add(item);
+
+        Field[] fields = PoiPublicUtil.getClassFields(object.getClass());
+        List<String> ignoreField = new ArrayList<>();
+        if (fields != null) {
+            for (Field field : fields) {
+                Excel annotation = field.getAnnotation(Excel.class);
+                if (null != annotation) {
+                    String name = annotation.name();
+                    if (StringUtils.hasText(name)) {
+                        ignoreField.add(name);
+                    }
+                }
+
+            }
+        }
+        if (StringUtils.hasText(exportRuleTitle.getSelectedRoles())) {
+            if (!CollectionUtils.isEmpty(reserveList)) {
+                List<String> finalReserveList = reserveList;
+                ignoreField = ignoreField.stream().filter(ignoreItem -> !finalReserveList.contains(ignoreItem)).collect(Collectors.toList());
+            }
+        }
+
+
+//        mv.addObject("mapList", maps);
+        //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
+        ExportParams exportParams=new ExportParams(title + "模板", "导出人:" + sysUser.getRealname(), title);
+        exportParams.setImageBasePath(upLoadPath);
+//        String[] array = (String[]) ignoreField.stream().map(String::valueOf).toArray();
+        String[] array1 = ignoreField.toArray(new String[0]);
+        //设置哪些字段不导出
+        exportParams.setExclusions(array1);
+        //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
+        mv.addObject(NormalExcelConstants.PARAMS,exportParams);
+        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
+        return mv;
+    }
 }