|
|
|
|
@ -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<Map<String, Object>> 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<Entrust> 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<String, Object> 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<Map<String, Object>> entrustMonth() throws ParseException { |
|
|
|
|
Map<String, Object> 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<Entrust> 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<Map<String, Object>> examine() throws ParseException { |
|
|
|
|
Map<String, Object> 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<Examine> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 科室一今年已完成的检测
|
|
|
|
|
wrapper.eq(Examine::getDeptId, "1536303217085018114"); |
|
|
|
|
wrapper.eq(Examine::getIsFinished, "1"); |
|
|
|
|
wrapper.ge(Examine::getFinishTime, parse); |
|
|
|
|
List<Examine> 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<Examine> 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<Examine> 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<InstrumentUseLog> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
queryWrapper.orderByDesc(InstrumentUseLog::getCreateTime); |
|
|
|
|
List<InstrumentUseLog> useLogs = instrumentUseLogService.list(queryWrapper); |
|
|
|
|
map.put("useLogs", useLogs); |
|
|
|
|
if (useLogs.size() > 0 && useLogs.size() < 4) { |
|
|
|
|
map.put("useLogs", useLogs); |
|
|
|
|
} else { |
|
|
|
|
List<InstrumentUseLog> useLogList = new ArrayList<>(); |
|
|
|
|
for (int i = 0; i < 3; i++) { |
|
|
|
|
useLogList.add(useLogs.get(i)); |
|
|
|
|
} |
|
|
|
|
map.put("useLogs", useLogList); |
|
|
|
|
} |
|
|
|
|
return R.data(map); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|