diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegStatController.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegStatController.java index fb58107..7dac1cf 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegStatController.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegStatController.java @@ -3,6 +3,7 @@ package com.transitPlatForm.transitPF.controller; import com.transitPlatForm.common.annotation.Anonymous; import com.transitPlatForm.common.core.domain.Result; import com.transitPlatForm.common.utils.DateUtils; +import com.transitPlatForm.interfaceCommon.utils.CommonUtil; import com.transitPlatForm.transitPF.mapper.RegStatMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -27,50 +28,67 @@ import java.util.stream.Collectors; public class RegStatController { @Autowired RegStatMapper regStatMapper; + @Autowired + private CommonUtil commonUtil; + @Anonymous @ApiOperation("获取业务数据总数") @GetMapping("/getallcount") public Result getallcount() { - Date st= DateUtils.parseDate("2025-10-01"); - Date et= DateUtils.parseDate("2025-11-01"); + //获取当前日期的月份 + String currentDateTime = commonUtil.getCurrentDateTime(); + Date st = DateUtils.parseDate(currentDateTime.substring(0,7)+"-01"); + int month = Integer.parseInt(currentDateTime.substring(5, 7)); + int nextMonth = month + 1; + // 补零 + String monthStr = nextMonth < 10 ? "0" + nextMonth : String.valueOf(nextMonth); + String currentDateTime1 = currentDateTime.substring(0, 4) + "-" + monthStr + "-01 00:00:00"; + Date et = DateUtils.parseDate(currentDateTime1); + + Map map = new HashMap<>(); - Map regStatAll=regStatMapper.selectRegStatAll(); + Map regStatAll = regStatMapper.selectRegStatAll(); + //概况 map.put("regStatAll", regStatAll); - List> regStatMonth=regStatMapper.selectRegStatMonth(st,et); + List> regStatMonth = regStatMapper.selectRegStatMonth(st, et); List> regStatMonth0 = regStatMonth.stream() .sorted(Comparator.comparingInt(o -> (Integer) o.get("daynum"))).collect(Collectors.toList()); + //委托机构当月送检标本数量(按天显示的) map.put("regStatMonth", regStatMonth0); - List> regStatHospMonth=regStatMapper.selectRegStatHospMonth(st,et); - if(!regStatHospMonth.isEmpty()) { + List> regStatHospMonth = regStatMapper.selectRegStatHospMonth(st, et); + if (!regStatHospMonth.isEmpty()) { List> regStatHospMonth0 = regStatHospMonth.stream() .sorted(Comparator.comparingInt(o -> (Integer) o.get("daynum"))).collect(Collectors.toList()); - List> regStatHospMonth1=setmapgroup(regStatHospMonth0); + List> regStatHospMonth1 = setmapgroup(regStatHospMonth0); List> regStatHospMonth2 = regStatHospMonth1.stream() .sorted(Comparator.comparingInt((Map o) -> (Integer) o.get("groupsum")).reversed()).collect(Collectors.toList()); map.put("regStatHospMonth", regStatHospMonth2); } - List> regStatStatus=regStatMapper.selectRegStatStatus(st,et); + List> regStatStatus = regStatMapper.selectRegStatStatus(st, et); List> regStatStatus0 = regStatStatus.stream() .sorted((o1, o2) -> { int val1 = (Integer) o1.get("sl"); int val2 = (Integer) o2.get("sl"); return Integer.compare(val2, val1); }).collect(Collectors.toList()); + //送检样本状态占比 map.put("regStatStatus", regStatStatus0); - List> regStatSample=regStatMapper.selectRegStatSample(st,et); + List> regStatSample = regStatMapper.selectRegStatSample(st, et); List> regStatSample0 = regStatSample.stream() .sorted((o1, o2) -> { int val1 = (Integer) o1.get("sl"); int val2 = (Integer) o2.get("sl"); return Integer.compare(val2, val1); }).collect(Collectors.toList()); + //送检样本占比 map.put("regStatSample", regStatSample0); - return new Result("0","成功",map); + return new Result("0", "成功", map); } - private List> setmapgroup(List> maps){ - List> mapref=new ArrayList<>(); - if(!maps.isEmpty()) { + + private List> setmapgroup(List> maps) { + List> mapref = new ArrayList<>(); + if (!maps.isEmpty()) { OptionalInt maxOpt = maps.stream().mapToInt(map -> (Integer) map.get("daynum")).max(); int lastday = maxOpt.orElse(0); int total = maps.stream().mapToInt(map2 -> ((int) map2.get("sl"))).sum(); @@ -83,18 +101,18 @@ public class RegStatController { DecimalFormat df = new DecimalFormat("0.00%"); df.setRoundingMode(RoundingMode.HALF_UP); for (Map map1 : distinctList) { - String srcHospName= map1.get("SrcHospName").toString(); + String srcHospName = map1.get("SrcHospName").toString(); List> result = maps.stream() .filter(map2 -> Objects.equals(map2.get("SrcHospName"), srcHospName)) .collect(Collectors.toList()); - if(!result.isEmpty()) { + if (!result.isEmpty()) { int total0 = result.stream().mapToInt(map2 -> ((int) map2.get("sl"))).sum(); - double percentage = (double) total0 / (double)total; + double percentage = (double) total0 / (double) total; Map maptemp = new HashMap<>(); maptemp.put("groupname", srcHospName); - maptemp.put("groupsum",total0); + maptemp.put("groupsum", total0); maptemp.put("percentage", df.format(percentage)); - maptemp.put("dayline", setdayline(result,lastday)); + maptemp.put("dayline", setdayline(result, lastday)); mapref.add(maptemp); } } @@ -102,32 +120,33 @@ public class RegStatController { } return mapref; } - List> setdayline(List> maps,Integer lastnum){ - List> mapref=new ArrayList<>(); - if(!maps.isEmpty()) { - int i=0; + + List> setdayline(List> maps, Integer lastnum) { + List> mapref = new ArrayList<>(); + if (!maps.isEmpty()) { + int i = 0; for (Map map : maps) { i++; - int daynum=(Integer)map.get("daynum"); - if(daynum>i){ - while (daynum>i){ - Map maptemp = new HashMap<>(); - maptemp.put("daynum",i); - maptemp.put("sl",0); - mapref.add(maptemp); - i++; - } + int daynum = (Integer) map.get("daynum"); + if (daynum > i) { + while (daynum > i) { + Map maptemp = new HashMap<>(); + maptemp.put("daynum", i); + maptemp.put("sl", 0); + mapref.add(maptemp); + i++; + } } Map maptemp = new HashMap<>(); - maptemp.put("daynum",daynum); - maptemp.put("sl",map.get("sl")); + maptemp.put("daynum", daynum); + maptemp.put("sl", map.get("sl")); mapref.add(maptemp); } - if(lastnum>i){ - while (lastnum>i){ + if (lastnum > i) { + while (lastnum > i) { Map maptemp = new HashMap<>(); - maptemp.put("daynum",i); - maptemp.put("sl",0); + maptemp.put("daynum", i); + maptemp.put("sl", 0); mapref.add(maptemp); i++; } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/RegItemVO.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/RegItemVO.java index a5027ad..c4078df 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/RegItemVO.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/RegItemVO.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + @Data @AllArgsConstructor @NoArgsConstructor @@ -12,4 +14,6 @@ public class RegItemVO { private String SrcOrderItemCode; private String SrcOrderItemName; private String DstHospName; + private Date DateStart; + private Date DateEnd; } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/SampleSignVO.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/SampleSignVO.java index 48633cf..8edfcf8 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/SampleSignVO.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/pojo/DTO/SampleSignVO.java @@ -58,4 +58,10 @@ public class SampleSignVO { private String cancelName; @ApiModelProperty(value = "标本退回时间") private Date backTime; + @ApiModelProperty(value = "上机时间") + private Date operdatetime; + @ApiModelProperty(value = "上机操作人代码") + private String opercode; + @ApiModelProperty(value = "上机操作人姓名") + private String opername; } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegInterfaceImpl.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegInterfaceImpl.java index 1181383..57ec4bc 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegInterfaceImpl.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegInterfaceImpl.java @@ -258,6 +258,20 @@ public class RegInterfaceImpl { requestInfoUtil.updateRegTransitSampleStatus(regTransitSample50,regApply); break; case "60": //上机检测 + if(Integer.parseInt(status) == 90 || Integer.parseInt(status) == 70) return new Result("-1","该标本已经作废或者已经审核,不允许再上机!"); + Date operdatetime = sampleSignVO.getOperdatetime(); + String opercode = sampleSignVO.getOpercode(); + String opername = sampleSignVO.getOpername(); + if(operdatetime == null) return new Result("-1","上机时间不能为空!"); + if(opername == null || opername.equals("")) return new Result("-1","上机人姓名不能为空!"); + RegTransitSample regTransitSample60 = new RegTransitSample(); + regTransitSample60.setBarcode(barcode); + regTransitSample60.setOperdatetime(operdatetime); + regTransitSample60.setOpercode(opercode); + regTransitSample60.setOpername(opername); + regTransitSample60.setStatus("60"); + + requestInfoUtil.updateRegTransitSampleStatus(regTransitSample60,regApply); break; case "70": //结果审核 Date reportTime = sampleSignVO.getReportTime(); diff --git a/pf_transitPF/src/main/resources/mapper/RegReportMapper.xml b/pf_transitPF/src/main/resources/mapper/RegReportMapper.xml index 42ec7f3..7eeedaf 100644 --- a/pf_transitPF/src/main/resources/mapper/RegReportMapper.xml +++ b/pf_transitPF/src/main/resources/mapper/RegReportMapper.xml @@ -8,20 +8,21 @@ select srchospname,sampletypecode,sampletypename,count(1) as sl from reg_TransitSample and SrcHospName = #{SrcHospName} - and sampletypecode = #{SampleTypeCode} - and sampletypename = #{SampleTypeName} - and (OrderTime between #{DateStart} and #{DateEnd}) + and sampletypecode like '%'+#{SampleTypeCode}+'%' + and sampletypename like '%'+#{SampleTypeName}+'%' + and (OrderTime between #{DateStart} and #{DateEnd}) group by srchospname,sampletypecode,sampletypename \ No newline at end of file