diff --git a/pom.xml b/pom.xml index facd0b69..46112dc3 100644 --- a/pom.xml +++ b/pom.xml @@ -133,11 +133,6 @@ ${junit.version} test - - - - - org.slf4j diff --git a/src/main/java/com/emr/controller/StatementController.java b/src/main/java/com/emr/controller/StatementController.java new file mode 100644 index 00000000..8117df80 --- /dev/null +++ b/src/main/java/com/emr/controller/StatementController.java @@ -0,0 +1,61 @@ +package com.emr.controller; + +import com.emr.dto.ThreeDaysFileDto; +import com.emr.entity.OffsetLimitPage; +import com.emr.service.StatementService; +import com.emr.util.Msg; +import com.emr.vo.ThreeDaysFileVo; +import com.emr.vo.ExecuteVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * @ClassName StatementController + * @Description 报表接口 + * @Author linjj + * @Date 2024/1/11 14:28 + * @Version 1.0 + */ +@Controller +@RequestMapping("statement") +public class StatementController { + + @Autowired + StatementService statementService; + + @RequestMapping(value = "/threeDaysFile") + public String threeDaysFile(Model model) { + return "statementDir/ThreeDaysFile"; + } + + @RequestMapping(value = "/threeDaysFileList") + @ResponseBody + public List threeDaysFileList(ThreeDaysFileDto dto) { + return statementService.threeDaysFileList(dto); + } + + @RequestMapping(value = "/reportList") + @ResponseBody + public OffsetLimitPage getMedicalOverdueReportList(Integer offset, Integer limit) { + OffsetLimitPage result = statementService.getMedicalOverdueReportList(offset, limit); + return result; + } + + @RequestMapping(value = "/saveExecute") + @ResponseBody + public Msg saveMedicalOverdueExecute(ThreeDaysFileDto dto) { + return statementService.saveMedicalOverdueExecute(dto); + } + + + @RequestMapping(value = "/echoExecute") + @ResponseBody + public ExecuteVo executeList() { + return statementService.executeList(); + } +} diff --git a/src/main/java/com/emr/controller/taskController.java b/src/main/java/com/emr/controller/taskController.java index 71710720..5adee6ca 100644 --- a/src/main/java/com/emr/controller/taskController.java +++ b/src/main/java/com/emr/controller/taskController.java @@ -6,9 +6,13 @@ */ package com.emr.controller; +import com.emr.dao.MedicalOverdueReportMapper; +import com.emr.dto.ThreeDaysFileDto; import com.emr.entity.Temp_Info; +import com.emr.service.StatementService; import com.emr.service.Temp_InfoService; import com.emr.util.PDFUtils; +import com.emr.vo.ExecuteVo; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +38,10 @@ import java.util.List; public class taskController { @Autowired private Temp_InfoService tempInfoService; + @Autowired + private StatementService statementService; + @Autowired + private MedicalOverdueReportMapper medicalOverdueReportMapper; @Value("${HomepageDictionary}") private String HomepageDictionary; @@ -75,6 +83,15 @@ public class taskController { PDFUtils.delAllFile(pdfErrorUrl); } + @Scheduled(cron="0 0 2 * * ?")//每天4点触发cron="0 0 4 * * ?" + public void medicalOverdueReport() throws IOException { + ExecuteVo executeVo = medicalOverdueReportMapper.executeList(); + ThreeDaysFileDto threeDaysFileDto=new ThreeDaysFileDto(); + threeDaysFileDto.setDay(executeVo.getDay()); + threeDaysFileDto.setStartDateTo(executeVo.getStartDateTo()); + threeDaysFileDto.setEndDateTo(executeVo.getEndDateTo()); + statementService.threeDaysFileList(threeDaysFileDto); + } // @Scheduled(cron="0 0 1 * * ?")//每天4点触发cron="0 0 4 * * ?" // public void taskPDF() throws IOException { diff --git a/src/main/java/com/emr/dao/MedicalOverdueReportMapper.java b/src/main/java/com/emr/dao/MedicalOverdueReportMapper.java new file mode 100644 index 00000000..aae5e2e8 --- /dev/null +++ b/src/main/java/com/emr/dao/MedicalOverdueReportMapper.java @@ -0,0 +1,34 @@ +package com.emr.dao; + +import com.emr.dto.MedicalOverdueReportDto; +import com.emr.dto.ThreeDaysFileDto; +import com.emr.util.Msg; +import com.emr.vo.ExecuteVo; +import com.emr.vo.MedicalOverdueReportVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @InterfaceName MedicalOverdueReportMapper + * @Description medical_overdue_report表 + * @Author linjj + * @Date 2024/1/17 8:59 + * @Version 1.0 + */ +public interface MedicalOverdueReportMapper { + + //查询记录表中是否有数据 + int getMedicalOverdueReport(); + + int addMedicalOverdueReport(@Param("list") List list); + + int delMedicalOverdueReport(); + + ListgetMedicalOverdueReportList(); + + + int saveMedicalOverdueExecute(ThreeDaysFileDto dto); + + ExecuteVo executeList(); +} diff --git a/src/main/java/com/emr/dao/StatementMapper.java b/src/main/java/com/emr/dao/StatementMapper.java new file mode 100644 index 00000000..e2c53cb2 --- /dev/null +++ b/src/main/java/com/emr/dao/StatementMapper.java @@ -0,0 +1,37 @@ +package com.emr.dao; + +import com.emr.dto.ThreeDaysFileDto; +import com.emr.vo.ThreeDaysFileVo; + +import java.util.List; + +/** + * @InterfaceName StatementMapper + * @Description 报表mapper + * @Author linjj + * @Date 2024/1/11 14:30 + * @Version 1.0 + */ +public interface StatementMapper { + //归档数量 + List getThreeDaysFileList(ThreeDaysFileDto dto); + //及时归档 + List getDay3Rate(ThreeDaysFileDto dto); + //二日及时归档 + List getDay2Rate(ThreeDaysFileDto dto); + //每本每份超期天数 + List getLateNum(ThreeDaysFileDto dto); + //反馈数量 + List getReturnNum(ThreeDaysFileDto dto); + //反馈超期总数量 + List returnTimelyNum(ThreeDaysFileDto dto); + //反馈病历数量 + List feedBackRecord(ThreeDaysFileDto dto); + //3天归档奖励本数 + List day3RewardNum(ThreeDaysFileDto dto); + //返修超期数量 + ListreturnOverdueNum(ThreeDaysFileDto dto); + //2天内归档有反馈数(本) + ListreturnOverdue2Day(ThreeDaysFileDto dto); + +} diff --git a/src/main/java/com/emr/dto/MedicalOverdueReportDto.java b/src/main/java/com/emr/dto/MedicalOverdueReportDto.java new file mode 100644 index 00000000..d38bcf0c --- /dev/null +++ b/src/main/java/com/emr/dto/MedicalOverdueReportDto.java @@ -0,0 +1,53 @@ +package com.emr.dto; + +import lombok.Data; + +/** + * @ClassName MedicalOverdueReport + * @Description 超期报表dto + * @Author linjj + * @Date 2024/1/16 16:42 + * @Version 1.0 + */ +@Data +public class MedicalOverdueReportDto { + + //出院科室编码 + private String deptCode; + //出院科室名称 + private String deptName; + //出院人数 + private int outNum; + //迟交合计 + private int lateNum; + //及时合计数量 + private int day3Rate; + + //2天内及时合计数量 + private int day2Rate; + //科室迟交合计 + private int deptNameLate; + //初次及时归档率 + private String day3RateSting; + //返修及时归档百分比 + private String returnNumString; + //科室(科室kpi) + private String deptNameLateKpi; + //退回病历数量 + private int feedBackRecordNum; + //无发聩病历数量 + private int notFeedBackRecordNum; + //反馈扣罚金额 + private int feedBackMoney; + + //返修超期数量(本); + private int returnOverdueNum; + //超期扣罚金额 + private int returnOverdueMoney; + //3天归档奖励本数 + private int day3RewardNum; + + //2天内归档无反馈数(本) + private int noReturnOverdue2Day; + +} diff --git a/src/main/java/com/emr/dto/ThreeDaysFileDto.java b/src/main/java/com/emr/dto/ThreeDaysFileDto.java new file mode 100644 index 00000000..45eb9a63 --- /dev/null +++ b/src/main/java/com/emr/dto/ThreeDaysFileDto.java @@ -0,0 +1,22 @@ +package com.emr.dto; + +import lombok.Data; + +/** + * @ClassName ThreeDaysFileDto + * @Description 三日归档情况入参 + * @Author linjj + * @Date 2024/1/11 16:30 + * @Version 1.0 + */ +@Data +public class ThreeDaysFileDto { + + + + private String startDateTo; + + private String endDateTo; + + private int day; +} diff --git a/src/main/java/com/emr/service/StatementService.java b/src/main/java/com/emr/service/StatementService.java new file mode 100644 index 00000000..14f15c73 --- /dev/null +++ b/src/main/java/com/emr/service/StatementService.java @@ -0,0 +1,28 @@ +package com.emr.service; + +import com.emr.dto.ThreeDaysFileDto; +import com.emr.entity.OffsetLimitPage; +import com.emr.util.Msg; +import com.emr.vo.ExecuteVo; +import com.emr.vo.MedicalOverdueReportVo; +import com.emr.vo.ThreeDaysFileVo; + +import java.util.List; + +/** + * @InterfaceName StatementService + * @Description 报表接口 + * @Author linjj + * @Date 2024/1/11 14:31 + * @Version 1.0 + */ +public interface StatementService { + + List threeDaysFileList(ThreeDaysFileDto dto); + + OffsetLimitPage getMedicalOverdueReportList(Integer offset, Integer limit); + + Msg saveMedicalOverdueExecute(ThreeDaysFileDto dto); + + ExecuteVo executeList(); +} diff --git a/src/main/java/com/emr/service/ipml/StatementServiceImpl.java b/src/main/java/com/emr/service/ipml/StatementServiceImpl.java new file mode 100644 index 00000000..b187dada --- /dev/null +++ b/src/main/java/com/emr/service/ipml/StatementServiceImpl.java @@ -0,0 +1,353 @@ +package com.emr.service.ipml; + +import com.emr.dao.MedicalOverdueReportMapper; +import com.emr.dao.StatementMapper; +import com.emr.dto.MedicalOverdueReportDto; +import com.emr.dto.ThreeDaysFileDto; +import com.emr.entity.Emr_Dictionary; +import com.emr.entity.OffsetLimitPage; +import com.emr.entity.V_Count; +import com.emr.service.Emr_DictionaryService; +import com.emr.service.StatementService; +import com.emr.util.ListUtil; +import com.emr.util.Msg; +import com.emr.util.Setters; +import com.emr.vo.ExecuteVo; +import com.emr.vo.MedicalOverdueReportVo; +import com.emr.vo.ThreeDaysFileVo; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * @ClassName StatementServiceImpl + * @Description 报表实体类 + * @Author linjj + * @Date 2024/1/11 14:31 + * @Version 1.0 + */ +@Service +@Transactional +public class StatementServiceImpl implements StatementService { + @Autowired + StatementMapper statementMapper; + @Autowired + private Emr_DictionaryService emrDictionaryService; + @Autowired + private MedicalOverdueReportMapper medicalOverdueReportMapper; + + @Override + public List threeDaysFileList(ThreeDaysFileDto dto) { + ArrayList dtos = new ArrayList<>(); + List list = statementMapper.getThreeDaysFileList(dto); + //格式化保留两位小数四舍五入 + DecimalFormat df = new DecimalFormat("#.00"); + //转换科室方法 + conversion(list); + //及时合计方法 + day3Rate(dto, list); + //2天及时合计方法 + day2Rate(dto, list); + //计算每个科室有多少迟交病历 + deptNameLate(dto, list); + //返修及时归档数量 + returnNum(dto, list); + //返修总数 + returnTimelyNum(dto, list); + //反馈病历数量(本) + feedBackRecord(dto, list); + //超期扣罚数量 + returnOverdueNum(dto, list); + //2天内归档有反馈数(本) + returnOverdue2Day(dto, list); + for (ThreeDaysFileVo lists : list) { + //为空填充0 + fillNum(lists); + //计算迟交合计出院合计-及时合计 + int lateNum = lists.getOutNum() - lists.getDay3Rate(); + lists.setLateNum(lateNum); + //初次及时归档率 + if (String.valueOf(lists.getDay3Rate()).equals("0")) { + lists.setDay3RateSting("0%"); + } else { + double day3Rate = (double) lists.getDay3Rate() / (double) lists.getOutNum(); + //计算科室kpi + String kpi = df.format(day3Rate * 5); + lists.setDeptNameLateKpi(kpi); + lists.setDay3RateSting(df.format(day3Rate * 100) + "%"); + } + //返修及时归档率计算 + if (String.valueOf(lists.getReturnNum()).equals("0")) { + lists.setReturnNumString("0%"); + } else { + double returnNum = (double) lists.getReturnNum() / (double) lists.getReturnTimelyNum(); + lists.setReturnNumString(df.format(returnNum * 100) + "%"); + } + //计算归档病历迟交扣罚金额,每本每天*30元 + int i = lists.getDeptNameLate() * 30; + lists.setDeptNameLate(i); + //计算无反馈病历数量(本)出院数量-反馈病历数量 + lists.setNotFeedBackRecordNum(lists.getOutNum() - lists.getFeedBackRecordNum()); + //计算反馈病历扣罚金额 + lists.setFeedBackMoney(lists.getFeedBackRecordNum() * 30); + //计算超期扣罚金额,返修每本超期天数综合*30 + lists.setReturnOverdueMoney(lists.getReturnOverdueDay() * 30); + //3天归档奖励本数 + lists.setDay3RewardNum(lists.getNotFeedBackRecordNum()); + //计算2天归档病历无反馈数量(本),2天及时合计-2天归档有反馈数量 + lists.setNoReturnOverdue2Day(lists.getDay2Rate() - lists.getReturnOverdue2Day()); + } + arrangeDto(list,dtos); + int medicalOverdueReport = medicalOverdueReportMapper.getMedicalOverdueReport(); + //判断是否存在数据存在数据先清空后插入 + if (StringUtils.isNotBlank(String.valueOf(medicalOverdueReport))) { + medicalOverdueReportMapper.delMedicalOverdueReport(); + medicalOverdueReportMapper.addMedicalOverdueReport(dtos); + }else { + medicalOverdueReportMapper.addMedicalOverdueReport(dtos); + } + return list; + } + + @Override + public OffsetLimitPage getMedicalOverdueReportList(Integer offset, Integer limit) { + PageHelper.offsetPage(offset, limit); + List list = medicalOverdueReportMapper.getMedicalOverdueReportList(); + return new OffsetLimitPage((Page) list); + } + + @Override + public Msg saveMedicalOverdueExecute(ThreeDaysFileDto dto) { + int i = medicalOverdueReportMapper.saveMedicalOverdueExecute(dto); + if (i==1){ + return Msg.success("执行计划修改成功"); + } + return Msg.success("执行计划修改失败"); + } + + @Override + public ExecuteVo executeList() { + return medicalOverdueReportMapper.executeList(); + } + + //整理dto + private static void arrangeDto(List list,List dtos) { + for (ThreeDaysFileVo lists : list) { + MedicalOverdueReportDto medicalOverdueReportDto = new MedicalOverdueReportDto(); + medicalOverdueReportDto.setDeptCode(lists.getDeptCode()); + if (StringUtils.isNotBlank(lists.getDeptName())) { + medicalOverdueReportDto.setDeptName(lists.getDeptName()); + } + medicalOverdueReportDto.setOutNum(lists.getOutNum()); + medicalOverdueReportDto.setLateNum(lists.getLateNum()); + medicalOverdueReportDto.setDay3Rate(lists.getDay3Rate()); + medicalOverdueReportDto.setDay2Rate(lists.getDay2Rate()); + medicalOverdueReportDto.setDeptNameLate(lists.getDeptNameLate()); + medicalOverdueReportDto.setDay3RateSting(lists.getDay3RateSting()); + medicalOverdueReportDto.setReturnNumString(lists.getReturnNumString()); + medicalOverdueReportDto.setDeptNameLateKpi(lists.getDeptNameLateKpi()); + medicalOverdueReportDto.setFeedBackRecordNum(lists.getFeedBackRecordNum()); + medicalOverdueReportDto.setNotFeedBackRecordNum(lists.getNotFeedBackRecordNum()); + medicalOverdueReportDto.setFeedBackMoney(lists.getFeedBackMoney()); + medicalOverdueReportDto.setReturnOverdueNum(lists.getReturnOverdueNum()); + medicalOverdueReportDto.setReturnOverdueMoney(lists.getReturnOverdueMoney()); + medicalOverdueReportDto.setDay3RewardNum(lists.getDay3RewardNum()); + medicalOverdueReportDto.setNoReturnOverdue2Day(lists.getNoReturnOverdue2Day()); + dtos.add(medicalOverdueReportDto); + } + } + + //2天内归档有反馈数(本) + private void returnOverdue2Day(ThreeDaysFileDto dto, List list) { + List returnOverdueList = statementMapper.returnOverdue2Day(dto); + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(returnOverdueList, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int returnOverdue2Day = codeMap.get(deptCode).getReturnOverdue2Day(); + p.setReturnOverdue2Day(returnOverdue2Day); + } + }); + } + + //超期扣罚数量 + private void returnOverdueNum(ThreeDaysFileDto dto, List list) { + //填充0防止空指针异常 + for (ThreeDaysFileVo lists : list) { + lists.setReturnOverdueNum(0); + lists.setReturnOverdueDay(0); + } + List returnOverdueList = statementMapper.returnOverdueNum(dto); + if (returnOverdueList.size() > 0) { + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(list, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(returnOverdueList).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + //超期本数 + codeMap.get(deptCode).setReturnOverdueNum(codeMap.get(deptCode).getReturnOverdueNum() + 1); + //超期天数 + codeMap.get(deptCode).setReturnOverdueDay(codeMap.get(deptCode).getReturnOverdueDay() + p.getReturnOverdueDay() - dto.getDay()); + } + }); + } + } + + //反馈病历数量(本) + private void feedBackRecord(ThreeDaysFileDto dto, List list) { + List feedBackRecordList = statementMapper.feedBackRecord(dto); + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(feedBackRecordList, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int feedBackRecordNum = codeMap.get(deptCode).getFeedBackRecordNum(); + p.setFeedBackRecordNum(feedBackRecordNum); + } + }); + } + + //返修总数 + private void returnTimelyNum(ThreeDaysFileDto dto, List list) { + List returnTimelyNumList = statementMapper.returnTimelyNum(dto); + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(returnTimelyNumList, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int returnTimelyNum = codeMap.get(deptCode).getReturnTimelyNum(); + p.setReturnTimelyNum(returnTimelyNum); + } + }); + } + + //返修及时归档数量 + private void returnNum(ThreeDaysFileDto dto, List list) { + List returnNumList = statementMapper.getReturnNum(dto); + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(returnNumList, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int returnNum = codeMap.get(deptCode).getReturnNum(); + p.setReturnNum(returnNum); + } + }); + } + + //计算每个科室有多少天迟交病历 + private void deptNameLate(ThreeDaysFileDto dto, List list) { + for (ThreeDaysFileVo vo : list) { + vo.setDeptNameLate(0); + } + List lateNumList = statementMapper.getLateNum(dto); + if (lateNumList.size() > 0) { + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(list, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(lateNumList).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int lateNum = p.getLateNum(); + if (lateNum != 0) { + codeMap.get(deptCode).setDeptNameLate(codeMap.get(deptCode).getDeptNameLate() + lateNum - dto.getDay()); + } + } + }); + } + } + + //2天及时合计方法 + private void day2Rate(ThreeDaysFileDto dto, List list) { + //2天及时合计 + List day2Rate1 = statementMapper.getDay2Rate(dto); + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(day2Rate1, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int day2Rate = codeMap.get(deptCode).getDay2Rate(); + p.setDay2Rate(day2Rate); + } + }); + } + + //即使合计方法 + private void day3Rate(ThreeDaysFileDto dto, List list) { + List day3Rate1 = statementMapper.getDay3Rate(dto); + //根据科室code转换key。value + Map codeMap = ListUtil.toMap(day3Rate1, ThreeDaysFileVo::getDeptCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + int day3Rate = codeMap.get(deptCode).getDay3Rate(); + p.setDay3Rate(day3Rate); + } + }); + } + + + private static void fillNum(ThreeDaysFileVo list) { + if (StringUtils.isBlank(String.valueOf(list.getDay3Rate()))) { + list.setDay3Rate(0); + } + if (StringUtils.isBlank(String.valueOf(list.getReturnNum()))) { + list.setReturnNum(0); + } + if (StringUtils.isBlank(String.valueOf(list.getDeptNameLate()))) { + list.setDeptNameLate(0); + } + if (StringUtils.isBlank(String.valueOf(list.getFeedBackRecordNum()))) { + list.setFeedBackRecordNum(0); + } + if (StringUtils.isBlank(String.valueOf(list.getReturnOverdueDay()))) { + list.setReturnOverdueDay(0); + } + if (StringUtils.isBlank(String.valueOf(list.getReturnOverdue2Day()))) { + list.setReturnOverdue2Day(0); + } + + } + + + //转换科室 + private void conversion(List list) { + //科室名称转换 + Emr_Dictionary dic = new Emr_Dictionary(); + dic.setEffective(1); + dic.setTypecode("dept_code"); + List dicList = emrDictionaryService.dicByTypeCode(dic); + //转换科室 + Map codeMap = ListUtil.toMap(dicList, Emr_Dictionary::getCode); + Setters.instance().list(list).cycleSetProperties(p -> { + String deptCode = p.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { + String deptName = codeMap.get(deptCode).getName(); + p.setDeptName(deptName); + } + }); + } + + // //3天归档奖励本书 +// private void day3RewardNum(ThreeDaysFileDto dto, List list){ +// List day3RewardLiset = statementMapper.day3RewardNum(dto); +// //根据科室code转换key。value +// Map codeMap = ListUtil.toMap(day3RewardLiset, ThreeDaysFileVo::getDeptCode); +// Setters.instance().list(list).cycleSetProperties(p -> { +// String deptCode = p.getDeptCode(); +// if (StringUtils.isNotBlank(deptCode) && codeMap.containsKey(deptCode)) { +// int day3RewardNum = codeMap.get(deptCode).getDay3RewardNum(); +// p.setDay3RewardNum(day3RewardNum); +// } +// }); +// } +} diff --git a/src/main/java/com/emr/util/Msg.java b/src/main/java/com/emr/util/Msg.java index 006f49a6..3e0f8221 100644 --- a/src/main/java/com/emr/util/Msg.java +++ b/src/main/java/com/emr/util/Msg.java @@ -42,6 +42,14 @@ public class Msg { return result; } + + public static Msg success(String msg){ + Msg result=new Msg(); + result.setCode(100); + result.setMsg(msg); + return result; + } + public Msg add(String key, Object value){ this.getExtend().put(key, value); return this; diff --git a/src/main/java/com/emr/vo/ExecuteVo.java b/src/main/java/com/emr/vo/ExecuteVo.java new file mode 100644 index 00000000..9808a113 --- /dev/null +++ b/src/main/java/com/emr/vo/ExecuteVo.java @@ -0,0 +1,22 @@ +package com.emr.vo; + +import lombok.Data; + +/** + * @ClassName ThreeDaysFileDto + * @Description 执行计划返回 + * @Author linjj + * @Date 2024/1/11 16:30 + * @Version 1.0 + */ +@Data +public class ExecuteVo { + + + + private String startDateTo; + + private String endDateTo; + + private int day; +} diff --git a/src/main/java/com/emr/vo/MedicalOverdueReportVo.java b/src/main/java/com/emr/vo/MedicalOverdueReportVo.java new file mode 100644 index 00000000..6a58d518 --- /dev/null +++ b/src/main/java/com/emr/vo/MedicalOverdueReportVo.java @@ -0,0 +1,53 @@ +package com.emr.vo; + +import lombok.Data; + +/** + * @ClassName MedicalOverdueReport + * @Description 超期报表dto + * @Author linjj + * @Date 2024/1/16 16:42 + * @Version 1.0 + */ +@Data +public class MedicalOverdueReportVo { + + //出院科室编码 + private String deptCode; + //出院科室名称 + private String deptName; + //出院人数 + private int outNum; + //迟交合计 + private int lateNum; + //及时合计数量 + private int day3Rate; + + //2天内及时合计数量 + private int day2Rate; + //科室迟交合计 + private int deptNameLate; + //初次及时归档率 + private String day3RateSting; + //返修及时归档百分比 + private String returnNumString; + //科室(科室kpi) + private String deptNameLateKpi; + //退回病历数量 + private int feedBackRecordNum; + //无发聩病历数量 + private int notFeedBackRecordNum; + //反馈扣罚金额 + private int feedBackMoney; + + //返修超期数量(本); + private int returnOverdueNum; + //超期扣罚金额 + private int returnOverdueMoney; + //3天归档奖励本数 + private int day3RewardNum; + + //2天内归档无反馈数(本) + private int noReturnOverdue2Day; + +} diff --git a/src/main/java/com/emr/vo/ThreeDaysFileVo.java b/src/main/java/com/emr/vo/ThreeDaysFileVo.java new file mode 100644 index 00000000..c92b7149 --- /dev/null +++ b/src/main/java/com/emr/vo/ThreeDaysFileVo.java @@ -0,0 +1,59 @@ +package com.emr.vo; + +import lombok.Data; + +/** + * @ClassName ThreeDaysFileVo + * @Description 三日归档情况 + * @Author linjj + * @Date 2024/1/11 16:27 + * @Version 1.0 + */ +@Data +public class ThreeDaysFileVo { + //出院科室编码 + private String deptCode; + //出院科室名称 + private String deptName; + //出院人数 + private int outNum; + //及时合计数量 + private int day3Rate; + + //2天内及时合计数量 + private int day2Rate; + + private String day3RateSting; + //迟交合计 + private int lateNum; + //科室迟交合计 + private int deptNameLate; + //返修及时归档数量 + private int returnNum; + //返修及时归档百分比 + private String returnNumString; + //返修总数 + private int returnTimelyNum; + //科室(科室kpi) + private String deptNameLateKpi; + //退回病历数量 + private int feedBackRecordNum; + //无发聩病历数量 + private int notFeedBackRecordNum; + //反馈扣罚金额 + private int feedBackMoney; + //3天归档奖励本数 + private int day3RewardNum; + //返修超期数量(本); + private int returnOverdueNum; + //返修超期数量天数 + private int returnOverdueDay; + //超期扣罚金额 + private int returnOverdueMoney; + //2天内归档有反馈数(本) + private int returnOverdue2Day; + + //2天内归档无反馈数(本) + private int noReturnOverdue2Day; + +} diff --git a/src/main/resources/config/jdbc.properties b/src/main/resources/config/jdbc.properties index b39c224c..9d86ac92 100644 --- a/src/main/resources/config/jdbc.properties +++ b/src/main/resources/config/jdbc.properties @@ -1,18 +1,18 @@ -#POWER_IP=localhost -#jdbc.username=sa -#jdbc.password=admin123 -#dataBaseName=zj_record_new -#POWER_PORT=8082 -#jdbc.url=jdbc\:sqlserver\://${POWER_IP}:1433;databaseName=${dataBaseName} +POWER_IP=localhost +jdbc.username=sa +jdbc.password=admin123 +dataBaseName=zj_record_new +POWER_PORT=8082 +jdbc.url=jdbc\:sqlserver\://${POWER_IP}:1433;databaseName=${dataBaseName} # -POWER_IP=localhost -jdbc.username=sa -jdbc.password=docus@702 -dataBaseName=DB_PrivilegeManagement_GYFY -POWER_PORT=9001 -jdbc.url=jdbc\:sqlserver\://10.6.1.127:1433;databaseName=${dataBaseName} +#POWER_IP=localhost +#jdbc.username=sa +#jdbc.password=docus@702 +#dataBaseName=DB_PrivilegeManagement_GYFY +#POWER_PORT=9001 +#jdbc.url=jdbc\:sqlserver\://10.6.1.127:1433;databaseName=${dataBaseName} jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver #hibernate config diff --git a/src/main/resources/mapper/MedicalOverdueReportMapper.xml b/src/main/resources/mapper/MedicalOverdueReportMapper.xml new file mode 100644 index 00000000..c2c99cfe --- /dev/null +++ b/src/main/resources/mapper/MedicalOverdueReportMapper.xml @@ -0,0 +1,31 @@ + + + + + insert into medical_overdue_report(deptCode,deptName,outNum,lateNum,day3Rate,day2Rate,deptNameLate,day3RateSting,returnNumString, + deptNameLateKpi,feedBackRecordNum,notFeedBackRecordNum,feedBackMoney,returnOverdueNum,returnOverdueMoney,day3RewardNum, + noReturnOverdue2Day) + values + + (#{item.deptCode},#{item.deptName},#{item.outNum},#{item.lateNum},#{item.day3Rate},#{item.day2Rate},#{item.deptNameLate}, + #{item.day3RateSting},#{item.returnNumString},#{item.deptNameLateKpi},#{item.feedBackRecordNum},#{item.notFeedBackRecordNum}, + #{item.feedBackMoney},#{item.returnOverdueNum},#{item.returnOverdueMoney},#{item.day3RewardNum},#{item.noReturnOverdue2Day}) + + + + update medical_overdue_execute set day=#{day},startDateTo=#{startDateTo},endDateTo=#{endDateTo} where static=1 + + + delete from medical_overdue_report + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/StatementMapper.xml b/src/main/resources/mapper/StatementMapper.xml new file mode 100644 index 00000000..41d9db8b --- /dev/null +++ b/src/main/resources/mapper/StatementMapper.xml @@ -0,0 +1,454 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/test/java/com/emr/MapperTest.java b/src/main/test/java/com/emr/MapperTest.java deleted file mode 100644 index 95f4d700..00000000 --- a/src/main/test/java/com/emr/MapperTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package java.com.emr; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.FileSystemXmlApplicationContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import java.io.File; - - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={"classpath:config/applicationContext.xml"}) -public class MapperTest { - - /*@Autowired - PaperDao paperDao; - - *//** - * 测试mapper - */ - @Test - public void testCRUD(){ - String path = "F:\\isDelete\\mr_file\\pdf\\pdf"; - File file = new File(path); - File[] files = file.listFiles(); - for(File file1 : files){ - String absolutePath = file1.getAbsolutePath(); - System.out.println(absolutePath); - } - } -} diff --git a/src/main/webapp/WEB-INF/views/followDir/followUpStatistics.jsp b/src/main/webapp/WEB-INF/views/followDir/followUpStatistics.jsp index 6839d416..e5af8667 100644 --- a/src/main/webapp/WEB-INF/views/followDir/followUpStatistics.jsp +++ b/src/main/webapp/WEB-INF/views/followDir/followUpStatistics.jsp @@ -887,29 +887,6 @@