Commit bbf333e4 by ghxdhr

数据录入展示试样的值;

大屏报告相关统计
parent 1acdeb63
package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.kisso.annotation.Action;
import com.baomidou.kisso.annotation.Login;
import com.patzn.cloud.service.hmhj.entity.EntrustRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -21,7 +23,9 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 委托操作日志表 前端控制器
......@@ -80,4 +84,12 @@ public class EntrustRecordController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(entrustRecordService.removeByIds(ids));
}
@ApiOperation("统计各月报告总量相关统计")
@PostMapping("/month_statistic")
@Login(action = Action.Skip)
public RestResult<Map<String, String>> monthStatistic(@RequestParam("start") Date start,
@RequestParam("end") Date end) {
return success(entrustRecordService.monthStatistic(start,end));
}
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.baomidou.mybatisplus.annotations.SqlParser;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.EntrustRecord;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* <p>
......@@ -13,4 +18,9 @@ import com.patzn.cloud.service.hmhj.entity.EntrustRecord;
*/
public interface EntrustRecordMapper extends BatchMapper<EntrustRecord> {
@SqlParser(filter = true)
List<Long> selectRollBackCount(@Param("start") Date startYM, @Param("end") Date endYM);
@SqlParser(filter = true)
Long selectInTimeCount(@Param("start") Date startYM, @Param("endYM") Date endYM);
}
......@@ -6,7 +6,9 @@ import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.EntrustRecord;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 委托操作日志表 服务类
......@@ -23,4 +25,12 @@ public interface IEntrustRecordService extends IBaseService<EntrustRecord> {
void record(Long[] ids, String from, String to, int type, Account account, String remark);
void record(Collection<Long> ids, String from, String to, int type, Account account, String remark);
Map<String, String> monthStatistic(Date start, Date end);
/* 查询被退回过的报告数 */
Integer selectRollBackCount(Date startYM, Date endYM);
/* 查询不及时的报告数 */
Long selectInTimeCount(Date startYM, Date endYM);
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.MapMergeUtils;
import com.patzn.cloud.service.hmhj.entity.EntrustRecord;
import com.patzn.cloud.service.hmhj.entity.EntrustReport;
import com.patzn.cloud.service.hmhj.enums.EntrustReportStatusEnum;
import com.patzn.cloud.service.lims.frame.entity.LmsFrameCheckPlan;
import com.patzn.cloud.service.lims.frame.entity.LmsFrameCheckReport;
import com.patzn.cloud.service.lims.frame.enums.ManageCheckEnum;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustRecordMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustRecordService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 委托操作日志表 服务实现类
......@@ -26,6 +36,9 @@ import java.util.List;
@Service
public class EntrustRecordServiceImpl extends BaseServiceImpl<EntrustRecordMapper, EntrustRecord> implements IEntrustRecordService {
@Autowired
private IEntrustReportService entrustReportService;
@Override
public Page<EntrustRecord> page(Page<EntrustRecord> page, EntrustRecord entrustRecord) {
Wrapper wrapper = new EntityWrapper<>(entrustRecord);
......@@ -64,4 +77,104 @@ public class EntrustRecordServiceImpl extends BaseServiceImpl<EntrustRecordMappe
saveBatch(saveRecord);
}
}
@Override
public Map<String, String> monthStatistic(Date start, Date end) {
String mistakeRateKey = "mistakeRate";//报告出错率的key
String inTimeRateKey = "inTimeRate";//报告及时率的key
String dealRateKey = "dealRate";//客户投诉处理率的key
String satisfactionRateKey = "satisfactionRate";//客户满意率的key
Map<String, String> resMap = new HashMap<>();
if (start.after(end)) {
return null;
}
/* 得到start-end时间段内所有的报告数量,然后分别得到各月的 */
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Date startYM = DateUtils.toDate(format.format(start));
Date endYM = DateUtils.toDate(format.format(end));
List<EntrustReport> reports = entrustReportService.list(Condition.create()
.between("report_make_time", startYM, endYM)
.ne("status", EntrustReportStatusEnum.MAKING));
/* 报告总量 */
int total = reports.size();
/* 退回过的报告数 */
Integer rollBackCount = this.selectRollBackCount(startYM, endYM);
/* 及时的报告数 */
Long inTimeCount = this.selectInTimeCount(startYM, endYM);
/* 计算百分比 */
String mistakeRate = calculatePercent(rollBackCount, total, 2);
String inTimeRate = calculatePercent((int) (long) inTimeCount, total, 2);
String dealRate = "100%";
String satisfactionRate = "100%";
resMap.put(mistakeRateKey,mistakeRate);
resMap.put(inTimeRateKey,inTimeRate);
resMap.put(dealRateKey,dealRate);
resMap.put(satisfactionRateKey,satisfactionRate);
return resMap;
}
/* 查询被退回过的报告数 */
@Override
public Integer selectRollBackCount(Date startYM, Date endYM) {
return baseMapper.selectRollBackCount(startYM,endYM).size();
}
@Override
public Long selectInTimeCount(Date startYM, Date endYM) {
return baseMapper.selectInTimeCount(startYM,endYM);
}
private Map<String, Map<String, Date>> getMonthStartDayEndDayMap(Date start, Date end) {
String ym = "yyyy-MM";
String ymd = "yyyy-MM-dd";
String ymdt = "yyyy-MM-dd HH:mm:ss";
String startTime = " 00:00:00";
String endTime = " 23:59:59";
String startKey = "begin";
String endKey = "end";
String startStr = DateUtils.toStrByFormatStr(start, ym);
String endStr = DateUtils.toStrByFormatStr(end, ym);
Map<String, Map<String, Date>> map = new HashMap<>();
Calendar cStart = Calendar.getInstance();
cStart.setTime(DateUtils.toDateByFormatStr(startStr,ym));
Calendar cEnd = Calendar.getInstance();
cEnd.setTime(DateUtils.toDateByFormatStr(endStr,ym));
cEnd.add(Calendar.MONTH,1); // 加一个月,不超过这个月
while (cStart.before(cEnd)) {
String key = DateUtils.toStrByFormatStr(cStart.getTime(),ym);
cStart.set(Calendar.DAY_OF_MONTH,1);//第一天
String s = DateUtils.toStrByFormatStr(cStart.getTime(),ymd) + startTime;
cStart.set(Calendar.DAY_OF_MONTH,cStart.getActualMaximum(Calendar.DAY_OF_MONTH));//最后一天
String e = DateUtils.toStrByFormatStr(cStart.getTime(),ymd) + endTime;
HashMap<String, Date> SEMap = new HashMap<>();
SEMap.put(startKey,DateUtils.toDateByFormatStr(s,ymdt));
SEMap.put(endKey,DateUtils.toDateByFormatStr(e,ymdt));
map.put(key,SEMap);
cStart.add(Calendar.MONTH,1);
}
return map;
}
/**
*
* @param numerator 分子
* @param denominator 分母
* @param digit 百分比的小数位数 设置精确到小数点后几位
* @return
*/
private String calculatePercent(int numerator,int denominator,int digit) {
NumberFormat numberFormat = NumberFormat.getInstance();
// 设置精确到小数点后几位
numberFormat.setMaximumFractionDigits(digit);
return numberFormat.format((float) numerator / (float) denominator * 100);
}
}
......@@ -153,6 +153,7 @@
left join (
select s.company_id,s.entrust_id,max(s.name) "sample_name"
from entrust_sample s where s.deleted = 0
and s.type = 0
group by s.company_id, s.entrust_id
) s on s.entrust_id = e.id
WHERE e.deleted = 0 and s.entrust_id = e.id
......
......@@ -2,4 +2,22 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.EntrustRecordMapper">
<select id="selectRollBackCount" resultType="java.lang.Long">
select id
from entrust_record
where ctime between #{start} and #{end}
and position('退回至报告' in remark) > 0
group by id
</select>
<select id="selectInTimeCount" resultType="java.lang.Long">
WITH TIME AS
(SELECT COALESCE(report_issue_time,report_send_time,NULL) AS time1,
e.expect_send_time
FROM entrust_report er
JOIN entrust e ON e.id = er.entrust_id
WHERE report_make_time BETWEEN #{start} AND #{end})
SELECT sum(CASE WHEN time1 > expect_send_time THEN 0 ELSE 1 END) AS total
FROM time
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment