From 8f0e83d68ea67296f2e94468843cfb67ec6350de Mon Sep 17 00:00:00 2001 From: litao Date: Mon, 8 Aug 2022 18:56:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3=E7=BB=93?= =?UTF-8?q?=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LargeScreenController.java | 274 +++++++++++++++--- .../lims/service/ILargeScreenService.java | 12 - .../service/impl/LargeScreenServiceImpl.java | 24 -- 3 files changed, 239 insertions(+), 71 deletions(-) delete mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java delete mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java index 77ff2ec..6547a2e 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java @@ -6,22 +6,14 @@ import lombok.AllArgsConstructor; import org.joda.time.DateTime; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.api.R; -import org.springblade.lims.entry.Entrust; -import org.springblade.lims.entry.Instrument; -import org.springblade.lims.entry.InstrumentUseLog; -import org.springblade.lims.entry.RepairApplication; -import org.springblade.lims.service.IEntrtrustService; -import org.springblade.lims.service.IInstrumentService; -import org.springblade.lims.service.IInstrumentUseLogService; -import org.springblade.lims.service.IRepairApplicationService; +import org.springblade.lims.entry.*; +import org.springblade.lims.service.*; import org.springframework.web.bind.annotation.*; +import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author swj @@ -41,8 +33,11 @@ public class LargeScreenController extends BladeController { private final IInstrumentUseLogService instrumentUseLogService; + private final IExamineService examineService; + + /** - * 本年度委托单完成情况 + * 1.本年度委托单完成情况 */ @GetMapping("/entrustYear") public R> entrustYear() throws ParseException { @@ -50,57 +45,58 @@ public class LargeScreenController extends BladeController { DateTime date = new DateTime(); int year = date.getYear(); String str = year + "-01-01 00:00:00"; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date parse = sdf.parse(str); // 本年度委托单完成数量 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Entrust::getStatus, 6); + wrapper.eq(Entrust::getEntrustStatus, 6); wrapper.ge(Entrust::getCreateTime, parse); int count = entrtrustService.count(wrapper); // 年度计划数量 - double plan = 0.00; + double plan = 1000.00; double actual = 0.00; actual += count; // 完成率 double rate = actual / plan * 100; // 委托 wrapper.clear(); - wrapper.eq(Entrust::getStatus, 6); + wrapper.eq(Entrust::getEntrustStatus, 6); wrapper.ge(Entrust::getCreateTime, parse); wrapper.eq(Entrust::getInvestigativeType, "1"); int wt = entrtrustService.count(wrapper); double wt1 = 0.00; wt1 += wt; - double rate1 = wt1 / wt * 100; + double rate1 = wt1 / count * 100; // 监督 wrapper.clear(); - wrapper.eq(Entrust::getStatus, 6); + wrapper.eq(Entrust::getEntrustStatus, 6); wrapper.ge(Entrust::getCreateTime, parse); wrapper.eq(Entrust::getInvestigativeType, "2"); int jd = entrtrustService.count(wrapper); double jd1 = 0.00; jd1 += jd; - double rate2 = jd1 / jd * 100; + double rate2 = jd1 / count * 100; // 仲裁 wrapper.clear(); - wrapper.eq(Entrust::getStatus, 6); + wrapper.eq(Entrust::getEntrustStatus, 6); wrapper.ge(Entrust::getCreateTime, parse); wrapper.eq(Entrust::getInvestigativeType, "3"); int zc = entrtrustService.count(wrapper); double zc1 = 0.00; zc1 += zc; - double rate3 = zc1 / zc * 100; + double rate3 = zc1 / count * 100; // 门诊 wrapper.clear(); - wrapper.eq(Entrust::getStatus, 6); + wrapper.eq(Entrust::getEntrustStatus, 6); wrapper.ge(Entrust::getCreateTime, parse); wrapper.eq(Entrust::getInvestigativeType, "4"); int mz = entrtrustService.count(wrapper); double mz1 = 0.00; mz1 += mz; - double rate4 = mz1 / mz * 100; + double rate4 = mz1 / count * 100; Map map = new HashMap<>(); map.put("entrustCount", count); + map.put("rate", rate); map.put("wt", rate1); map.put("jd", rate2); map.put("zc", rate3); @@ -108,6 +104,106 @@ public class LargeScreenController extends BladeController { return R.data(map); } + + /** + * 2.以周为维度统计委托单完成数量,并计算较上周的比率 + */ + @GetMapping("/entrustMonth") + public R> entrustMonth() throws ParseException { + Map map = new HashMap<>(); + + //设置日期格式 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar cld = Calendar.getInstance(Locale.CHINA); + + //以周一为首日 + cld.setFirstDayOfWeek(Calendar.MONDAY); + //当前时间 + cld.setTimeInMillis(System.currentTimeMillis()); + // 本周周一开始时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + Date parse1 = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + // 本周周日结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + Date parse2 = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + + //上周时间 + cld.setTimeInMillis(System.currentTimeMillis() - (1000 * 60 * 60 * 24 * 7 * 1)); + // 上周周一开始时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + Date parse3 = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + // 上周周日结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + Date parse4 = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + + // 本周的数量 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Entrust::getEntrustStatus, 6); + wrapper.between(Entrust::getCreateTime, parse1, parse2); + int currWeekEntrustCount = entrtrustService.count(wrapper); + DecimalFormat df1 = new DecimalFormat("#0.00"); + double a1 = Double.parseDouble(df1.format(currWeekEntrustCount)); + + // 上周的数量 + wrapper.clear(); + wrapper.eq(Entrust::getEntrustStatus, 6); + wrapper.between(Entrust::getCreateTime, parse3, parse4); + int lastWeekEntrustCount = entrtrustService.count(wrapper); + double a2 = Double.parseDouble(df1.format(lastWeekEntrustCount)); + // 本周较上周增长百分比 + int ratioByLastWeek = 100; + if (a2 > 0) { + ratioByLastWeek = (int) ((a1 - a2) / a2 * 100); + } + + map.put("currWeekEntrustCount", currWeekEntrustCount); + map.put("ratioByLastWeek", ratioByLastWeek); + + for (long i = 1; i <= 7; i++) { + long i1 = 1000 * 60 * 60 * 24 * 7 * i; + // 本周时间 + cld.setTimeInMillis(System.currentTimeMillis() - i1); + // 获取第几周 + String getzs = getzs(df.format(cld.getTime())); + // 本周周一开始时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + Date tempParse1 = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + // 本周周日结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + Date tempParse2 = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 本周数量 + wrapper.clear(); + wrapper.eq(Entrust::getEntrustStatus, 6); + wrapper.between(Entrust::getCreateTime, tempParse1, tempParse2); + int count = entrtrustService.count(wrapper); + map.put("week" + i, getzs + ":" + count); + } + return R.data(map); + } + + /** + * 工具方法:获取周数 + */ + public static String getzs(String time) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date date = null; + try { + date = format.parse(time); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + Calendar calendar = Calendar.getInstance(); + calendar.setFirstDayOfWeek(Calendar.MONDAY); + calendar.setTime(date); + + int i = calendar.get(Calendar.WEEK_OF_YEAR); + return String.valueOf(i); + + } + /** * 今日委托单完成情况 */ @@ -119,9 +215,9 @@ public class LargeScreenController extends BladeController { int year = date.getYear(); int month = date.getMonthOfYear(); int day = date.getDayOfMonth(); - String str1 = year + month + day + "00:00:00"; - String str2 = year + month + day + "23:59:59"; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String str1 = year + "-" + month + "-" + day + " 00:00:00"; + String str2 = year + "-" + month + "-" + day + " 23:59:59"; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date parse1 = sdf.parse(str1); Date parse2 = sdf.parse(str2); // 今日委托单数量 @@ -131,12 +227,12 @@ public class LargeScreenController extends BladeController { int count = entrtrustService.count(wrapper); wrapper.clear(); // 今日进行中 - wrapper.between(Entrust::getCreateTime, parse1, parse2); - wrapper.ne(Entrust::getStatus, 6); +// wrapper.between(Entrust::getCreateTime, parse1, parse2); + wrapper.ne(Entrust::getEntrustStatus, 6); int count1 = entrtrustService.count(wrapper); // 今日完成 - wrapper.between(Entrust::getCreateTime, parse1, parse2); - wrapper.eq(Entrust::getStatus, 6); + wrapper.between(Entrust::getUpdateTime, parse1, parse2); + wrapper.eq(Entrust::getEntrustStatus, 6); int count2 = entrtrustService.count(wrapper); map.put("count", count); map.put("jxz", count1); @@ -146,11 +242,111 @@ public class LargeScreenController extends BladeController { /** - * 各实验室检测数量统计 + * 各实验室检测数量统计(今年) */ @GetMapping("/examine") - public void examine() { - + public R> examine() throws ParseException { + Map map = new HashMap<>(); + //获取今年第一天 + DateTime date = new DateTime(); + int year = date.getYear(); + String str = year + "-01-01 00:00:00"; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date parse = sdf.parse(str); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 科室一今年已完成的检测 + wrapper.eq(Examine::getDeptId, "1536303217085018114"); + wrapper.eq(Examine::getIsFinished, "1"); + wrapper.ge(Examine::getFinishTime, parse); + List examineList1 = examineService.list(wrapper); + int wt1 = 0; + int jd1 = 0; + int zc1 = 0; + int sy1 = 0; + if (examineList1 != null) { + for (Examine examine : examineList1) { + Entrust entrust = entrtrustService.getById(examine.getEntrustId()); + if ("1".equals(entrust.investigativeType)) { + wt1++; + } + if ("2".equals(entrust.investigativeType)) { + jd1++; + } + if ("3".equals(entrust.investigativeType)) { + zc1++; + } + if ("4".equals(entrust.investigativeType)) { + sy1++; + } + } + } + // 科室二今年已完成的检测 + wrapper.clear(); + wrapper.eq(Examine::getDeptId, "1536303261238456322"); + wrapper.eq(Examine::getIsFinished, "1"); + wrapper.ge(Examine::getFinishTime, parse); + List examineList2 = examineService.list(wrapper); + int wt2 = 0; + int jd2 = 0; + int zc2 = 0; + int sy2 = 0; + if (examineList2 != null) { + for (Examine examine : examineList2) { + Entrust entrust = entrtrustService.getById(examine.getEntrustId()); + if ("1".equals(entrust.investigativeType)) { + wt2++; + } + if ("2".equals(entrust.investigativeType)) { + jd2++; + } + if ("3".equals(entrust.investigativeType)) { + zc2++; + } + if ("4".equals(entrust.investigativeType)) { + sy2++; + } + } + } + // 科室三今年已完成的检测 + wrapper.clear(); + wrapper.eq(Examine::getDeptId, "1536303317815422978"); + wrapper.eq(Examine::getIsFinished, "1"); + wrapper.ge(Examine::getFinishTime, parse); + List examineList3 = examineService.list(wrapper); + int wt3 = 0; + int jd3 = 0; + int zc3 = 0; + int sy3 = 0; + if (examineList3 != null) { + for (Examine examine : examineList3) { + Entrust entrust = entrtrustService.getById(examine.getEntrustId()); + if ("1".equals(entrust.investigativeType)) { + wt3++; + } + if ("2".equals(entrust.investigativeType)) { + jd3++; + } + if ("3".equals(entrust.investigativeType)) { + zc3++; + } + if ("4".equals(entrust.investigativeType)) { + sy3++; + } + } + } + map.put("wt1", wt1); + map.put("jd1", jd1); + map.put("zc1", zc1); + map.put("sy1", sy1); + map.put("wt2", wt2); + map.put("jd2", jd2); + map.put("zc2", zc2); + map.put("sy2", sy2); + map.put("wt3", wt3); + map.put("jd3", jd3); + map.put("zc3", zc3); + map.put("sy3", sy3); + return R.data(map); } @@ -268,7 +464,15 @@ public class LargeScreenController extends BladeController { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByDesc(InstrumentUseLog::getCreateTime); List useLogs = instrumentUseLogService.list(queryWrapper); - map.put("useLogs", useLogs); + if (useLogs.size() > 0 && useLogs.size() < 4) { + map.put("useLogs", useLogs); + } else { + List useLogList = new ArrayList<>(); + for (int i = 0; i < 3; i++) { + useLogList.add(useLogs.get(i)); + } + map.put("useLogs", useLogList); + } return R.data(map); } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java deleted file mode 100644 index e7a2726..0000000 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java +++ /dev/null @@ -1,12 +0,0 @@ - -package org.springblade.lims.service; - -import org.springblade.core.mp.base.BaseService; -import org.springblade.lims.entry.ExamineWay; - -/** - * @author swj - * @since 2022年6月1日19:50:34 - */ -public interface ILargeScreenService extends BaseService { -} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java deleted file mode 100644 index 16fb365..0000000 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java +++ /dev/null @@ -1,24 +0,0 @@ - -package org.springblade.lims.service.impl; - - -import lombok.AllArgsConstructor; -import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.lims.entry.ExamineItem; -import org.springblade.lims.mapper.ExamineItemMapper; -import org.springblade.lims.mapper.LargeScreenMapper; -import org.springblade.lims.service.IExamineItemService; -import org.springblade.lims.service.ILargeScreenService; -import org.springframework.stereotype.Service; - - -/** - * - * @author swj - * @since 2022年6月2日15:53:01 - */ -@Service -@AllArgsConstructor -public class LargeScreenServiceImpl extends BaseServiceImpl implements ILargeScreenService { - -}