瀏覽代碼

Merge branch 'master' of https://172.16.32.165/lighter/web-server

xiaochan 1 年之前
父節點
當前提交
a4949536d4

+ 6 - 0
src/main/java/thyyxxk/webserver/controller/dictionary/OpLevelManagementController.java

@@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.OpLevelManagement;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.ZdIcd9Cm3;
@@ -52,4 +53,9 @@ public class OpLevelManagementController {
         return service.getEmpCodeRs(code);
     }
 
+    @PostMapping("/uploadOpLevelManagement")
+    public ResultVo<String> uploadOpLevelManagement(@RequestBody MultipartFile file) {
+        return service.uploadOpLevelManagement(file);
+    }
+
 }

+ 10 - 0
src/main/java/thyyxxk/webserver/dao/his/dictionary/OpLevelManagementDao.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -36,4 +37,13 @@ public interface OpLevelManagementDao extends BaseMapper<OpLevelManagement> {
             "   </foreach> " +
             " </script> ")
     void batchSaveOpLevelManagement(@Param("list") List<OpLevelManagement> list);
+    @Select(" select code_rs code_doctor, code from a_employee_mi where code_rs in(${codes}) and isnull(del_flag,'')<>'1' ")
+    List<OpLevelManagement> selectEmpCode(@Param("codes") String codes);
+    @Delete(" delete from op_level_management where id in( " +
+            " select t1.id from op_level_management t1 join " +
+            " (select code,code_op from op_level_management group by code,code_op having count(*) > 1) t2 " +
+            " on t1.code=t2.code and t1.code_op =t2.code_op " +
+            " where  t1.id not in (select max(id) from op_level_management group by code,code_op having count(*) > 1) )"
+           )
+    void distinctOpLevelManagement();
 }

+ 2 - 0
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/TUploadDrgGroupDao.java

@@ -20,10 +20,12 @@ import thyyxxk.webserver.entity.querydata.TUploadDrgGroup;
 public interface TUploadDrgGroupDao extends BaseMapper<TUploadDrgGroup> {
     @Select(" select" +
             " t1.*," +
+            "t3.med_type,t3.insuplc_admdvs,t3.clr_optins,clr_optins_name=(select name from t_region where code=t3.clr_optins),t3.psn_type,"+
             " out_dept_name=(select rtrim(name) from zd_unit_code where code = isnull(t2.zk_ward, t2.small_dept))," +
             " rtrim(isnull(zk_ward,small_dept)) as out_dept" +
             " from t_upload_drg_group t1" +
             "         left join zy_inactpatient t2 on t1.pat_no = t2.inpatient_no and t1.times = t2.admiss_times " +
+            "  left join t_si_setlinfo t3 on t1.pat_no = t3.pat_no and t1.times = t3.times and t1.ledger_sn = t3.ledger_sn and t3.revoked = 0 "+
             " where  ${ew.sqlSegment} " +
             "")
     IPage<TUploadDrgGroup> listPage(IPage<TUploadDrgGroup> page,@Param("ew") QueryWrapper<TUploadDrgGroup> query);

+ 22 - 0
src/main/java/thyyxxk/webserver/entity/querydata/TUploadDrgGroup.java

@@ -116,6 +116,28 @@ public class TUploadDrgGroup implements Serializable {
 
     @TableField(exist = false)
     private String outDeptName;
+    //医疗类别
+    @TableField(exist = false)
+    private String medType;
+    @TableField(exist = false)
+    private String medTypeName;
+    @TableField(exist = false)
+    private String insuplcAdmdvs;
+    //参保地
+    @TableField(exist = false)
+    private String insuplcAdmdvsName;
+    //清算机构
+    @TableField(exist = false)
+    private String clrOptins;
+    @TableField(exist = false)
+    private String clrOptinsName;
+    //人员类别
+    @TableField(exist = false)
+    private String psnType;
+    @TableField(exist = false)
+    private String psnTypeName;
+
+
 
     /**病例类型查询条件
      * 1	未入组病例

+ 49 - 0
src/main/java/thyyxxk/webserver/service/dictionary/OpLevelManagementService.java

@@ -1,13 +1,18 @@
 package thyyxxk.webserver.service.dictionary;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.poi.excel.ExcelReader;
+import cn.hutool.poi.excel.ExcelUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.dictionary.OpLevelManagementDao;
 import thyyxxk.webserver.entity.ResultVo;
@@ -15,9 +20,14 @@ import thyyxxk.webserver.entity.dictionary.OpLevelManagement;
 import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.ZdIcd9Cm3;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.AssertUtil;
+import thyyxxk.webserver.utils.CommonUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -102,4 +112,43 @@ public class OpLevelManagementService {
     public ResultVo<String> getEmpCodeRs(String code) {
         return ResultVoUtil.success(redisLikeService.getUserInfoByCode(code).getCodeRs());
     }
+
+    public ResultVo<String> uploadOpLevelManagement(MultipartFile file) {
+        ExcelReader reader = null;
+        try {
+            reader = ExcelUtil.getReader(file.getInputStream());
+        } catch (Exception e) {
+            throw new BizException(e.getMessage());
+        }
+        List<Map<String, Object>> mapList = reader.readAll();
+        Set<String> codeDoctors = mapList.stream().map(item -> {
+            return Convert.toStr(item.get("工号"), "").trim();
+        }).collect(Collectors.toSet());
+        List<OpLevelManagement> empCodes = dao.selectEmpCode(CommonUtil.toInStringSql(CollUtil.newArrayList(codeDoctors)));
+        Map<String, OpLevelManagement> codeMap = empCodes.stream().collect(Collectors.toMap(OpLevelManagement::getCodeDoctor, a -> a, (k1, k2) -> k1));
+        List<OpLevelManagement> data = new ArrayList<>();
+        for (Map<String, Object> item : mapList) {
+            OpLevelManagement opLevelManagement = new OpLevelManagement();
+            opLevelManagement.setCode(codeMap.get(Convert.toStr(item.get("工号"), "").trim()).getCode());
+            opLevelManagement.setCodeDoctor(Convert.toStr(item.get("工号"), "").trim());
+            opLevelManagement.setNameDoctor(Convert.toStr(item.get("姓名"), "").trim());
+            opLevelManagement.setCodeOp(Convert.toStr(item.get("手术编码"), "").trim());
+            opLevelManagement.setCodeOpName(Convert.toStr(item.get("手术名称"), "").trim());
+            opLevelManagement.setInputUser(redisLikeService.getUserInfoByToken().getCode());
+            data.add(opLevelManagement);
+        }
+        if (CollUtil.isNotEmpty(data)) {
+            List<OpLevelManagement> collect = data.stream().filter(item -> StrUtil.isNotBlank(item.getCode()) && StrUtil.isNotBlank(item.getCodeOp())).collect(Collectors.toList());
+            if (CollUtil.isEmpty(collect)) {
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_HTML_ERROR, "导入的数据格式不对或者数据为空!");
+            }
+            List<List<OpLevelManagement>> splitData = CollUtil.split(collect, 50);
+            for (List<OpLevelManagement> item : splitData) {
+                dao.batchSaveOpLevelManagement(item);
+            }
+            //数据去重
+            dao.distinctOpLevelManagement();
+         }
+        return ResultVoUtil.success();
+    }
 }

+ 27 - 9
src/main/java/thyyxxk/webserver/service/medicalinsurance/TUploadDrgGroupService.java

@@ -1,17 +1,22 @@
 package thyyxxk.webserver.service.medicalinsurance;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
+import thyyxxk.webserver.constants.sidicts.MedType;
+import thyyxxk.webserver.constants.sidicts.PsnType;
 import thyyxxk.webserver.dao.his.medicalinsurance.TUploadDrgGroupDao;
 import thyyxxk.webserver.entity.HeadInfo;
 import thyyxxk.webserver.entity.querydata.TUploadDrgGroup;
+import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.ExcelUtil;
 import thyyxxk.webserver.utils.StringUtil;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
@@ -27,12 +32,25 @@ import java.util.Map;
  */
 @Service
 public class TUploadDrgGroupService extends ServiceImpl<TUploadDrgGroupDao, TUploadDrgGroup> {
-
+    @Resource
+    private RedisLikeService redisLikeService;
 
     public IPage<TUploadDrgGroup> queryUploadDrgGroupPage(TUploadDrgGroup uploadDrgGroup){
         IPage<TUploadDrgGroup> page = new Page(uploadDrgGroup.getCurrentPage(),uploadDrgGroup.getPageSize());
         QueryWrapper<TUploadDrgGroup> query = gettUploadDrgGroupQueryWrapper(uploadDrgGroup);
         baseMapper.listPage(page,query);
+        for(TUploadDrgGroup item : page.getRecords()){
+            item.setMedTypeName(MedType.getName(item.getMedType()));
+            if(StrUtil.isBlank(item.getClrOptinsName())){
+                if("439900".equals(item.getClrOptins())){
+                    item.setClrOptinsName("省本级");
+                }else if("430199".equals(item.getClrOptins())){
+                    item.setClrOptinsName("市本级");
+                }
+            }
+            item.setInsuplcAdmdvsName(redisLikeService.getRegionName(item.getInsuplcAdmdvs()));
+            item.setPsnTypeName(PsnType.get(item.getPsnType()) == null? "" : PsnType.get(item.getPsnType()).getName());
+        }
         return page;
     }
 
@@ -40,12 +58,12 @@ public class TUploadDrgGroupService extends ServiceImpl<TUploadDrgGroupDao, TUpl
     private QueryWrapper<TUploadDrgGroup> gettUploadDrgGroupQueryWrapper(TUploadDrgGroup uploadDrgGroup) {
         QueryWrapper<TUploadDrgGroup> query = new QueryWrapper<>();
         query.eq("1",1);
-        query.eq(StringUtil.notBlank(uploadDrgGroup.getPatNo()),"pat_no", uploadDrgGroup.getPatNo());
-        query.eq(uploadDrgGroup.getTimes() !=null,"times", uploadDrgGroup.getTimes());
-        query.eq(uploadDrgGroup.getLedgerSn() !=null,"ledger_sn", uploadDrgGroup.getLedgerSn());
-        query.ge(StringUtil.notBlank(uploadDrgGroup.getSetlStartTime()), "setl_time", uploadDrgGroup.getSetlStartTime());
-        query.le(StringUtil.notBlank(uploadDrgGroup.getSetlEndTime()), "setl_time", uploadDrgGroup.getSetlEndTime());
-        query.likeRight(uploadDrgGroup.getBlType() != null && uploadDrgGroup.getBlType() != 0,"bl", TUploadDrgGroup.BlTypeEnum.getNameByCode(uploadDrgGroup.getBlType()));
+        query.eq(StringUtil.notBlank(uploadDrgGroup.getPatNo()),"t1.pat_no", uploadDrgGroup.getPatNo());
+        query.eq(uploadDrgGroup.getTimes() !=null,"t1.times", uploadDrgGroup.getTimes());
+        query.eq(uploadDrgGroup.getLedgerSn() !=null,"t1.ledger_sn", uploadDrgGroup.getLedgerSn());
+        query.ge(StringUtil.notBlank(uploadDrgGroup.getSetlStartTime()), "t1.setl_time", uploadDrgGroup.getSetlStartTime());
+        query.le(StringUtil.notBlank(uploadDrgGroup.getSetlEndTime()), "t1.setl_time", uploadDrgGroup.getSetlEndTime());
+        query.likeRight(uploadDrgGroup.getBlType() != null && uploadDrgGroup.getBlType() != 0,"t1.bl", TUploadDrgGroup.BlTypeEnum.getNameByCode(uploadDrgGroup.getBlType()));
         return query;
     }
 
@@ -70,8 +88,8 @@ public class TUploadDrgGroupService extends ServiceImpl<TUploadDrgGroupDao, TUpl
         query.setCurrentPage(1);
         IPage<TUploadDrgGroup> tUploadDrgGroupIPage = queryUploadDrgGroupPage(query);
         List<Map<String, Object>> result = ExcelUtil.beanToMap(tUploadDrgGroupIPage.getRecords(),TUploadDrgGroup.class);
-        String[] display = {"住院号","住院次数","账页号","出院科室","分组编码","分组名称","权重","病历类型","盈亏额","标杆费用","总费用","结算时间","分组提示"};
-        String[] names = {"patNo","times","ledgerSn","outDeptName","code","name","weight","bl","profit","feeStand","totalFee","setlTime","groupMessages"};
+        String[] display = {"住院号","住院次数","账页号","出院科室","分组编码","分组名称","权重","病历类型","盈亏额","标杆费用","总费用","结算时间","医疗类别","参保地","清算机构","人员类别","分组提示"};
+        String[] names = {"patNo","times","ledgerSn","outDeptName","code","name","weight","bl","profit","feeStand","totalFee","setlTime","medTypeName","insuplcAdmdvsName","clrOptinsName","psnTypeName","groupMessages"};
         List<HeadInfo> headList = ExcelUtil.createHeadInfos(display,names);
         ExcelUtil.exportExcelReport(response,result,headList,"drg分组信息");
     }