巡检报表

master
zhaoxiaolin 10 months ago
parent a5232f1751
commit 98444d5023

@ -488,11 +488,22 @@ public class QcStaticTableController extends BaseController {
}
}
/**
* ----
* ----
**/
@GetMapping("/getTableHzTitle")
@Log(title = "检验分类汇总", businessType = BusinessType.QUERY)
public QcStaticTable getTableHzTitle(QcStaticTable qcStaticTable) {
@PostMapping("/getTableHzTitle")
@Log(title = "检验分析报表", businessType = BusinessType.QUERY)
public QcStaticTable getTableHzTitle(@RequestBody QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzTitle(qcStaticTable);
}
/**
* --
**/
@PostMapping("/getTableHzData")
public List<HashMap> getTableHzLineData(@RequestBody QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzData(qcStaticTable);
}
@PostMapping("/getTableHzNoOkData")
public List<QcStaticTable> getTableHzNoOkData(@RequestBody QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzNoOkData(qcStaticTable);
}
}

@ -88,6 +88,7 @@ public class QcStaticTable extends BaseEntity {
private String projectNo;
private String status;
private String ymdms;
private String ymdUntype;
private String column080090;
private String column090100;
private String column100110;
@ -113,6 +114,14 @@ public class QcStaticTable extends BaseEntity {
private List<String> columns1;
private List<String> columns2;
public String getYmdUntype() {
return ymdUntype;
}
public void setYmdUntype(String ymdUntype) {
this.ymdUntype = ymdUntype;
}
public List<String> getColumns1() {
return columns1;
}

@ -85,4 +85,10 @@ public interface QcStaticTableMapper {
List<String> getTableHzTitle(QcStaticTable qcStaticTable);
List<String> getTableHzTitle2(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getSamplesNum(QcStaticTable qcStaticTable);
@MapKey("ymdUntype")
Map<String, QcStaticTable> getNoOkNum(QcStaticTable qcStaticTable);
List<QcStaticTable> getTableHzNoOkData(QcStaticTable qcStaticTable);
}

@ -1,5 +1,6 @@
package com.op.quality.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -51,4 +52,8 @@ public interface IQcStaticTableService {
List<QcStaticTable> getProjectList(String checkType);
QcStaticTable getTableHzTitle(QcStaticTable qcStaticTable);
List<HashMap> getTableHzData(QcStaticTable qcStaticTable);
List<QcStaticTable> getTableHzNoOkData(QcStaticTable qcStaticTable);
}

@ -884,7 +884,10 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
}
}
qcCheckTask.setSampleQuality(sampleQuality);
if(qcCheckTask.getSampleQuality().equals(BigDecimal.ZERO)){
qcCheckTask.setSampleQuality(sampleQuality);
}
/**qc_check_task**/
n = qcCheckTaskIncomeMapper.updateQcCheckTask(qcCheckTask);
logger.info("qc_check_task:"+n);

@ -4,6 +4,11 @@ import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.util.*;
import java.util.stream.Collectors;
@ -788,15 +793,17 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService {
public QcStaticTable getTableHzTitle(QcStaticTable qcStaticTable) {
QcStaticTable dto = new QcStaticTable();
qcStaticTable.setDataType("unqualified_remark");
qcStaticTable.setRemark("checkTypeCP");
qcStaticTable.setRemark(qcStaticTable.getCheckType());
List<String> cols1 = qcStaticTableMapper.getTableHzTitle(qcStaticTable);
if(CollectionUtils.isEmpty(cols1)){
return dto;
}
dto.setColumns1(cols1);
List<String> cols2 = qcStaticTableMapper.getTableHzTitle2(qcStaticTable);
dto.setColumns2(cols2);
dto.setColumns1(cols1);
// List<String> cols2 = qcStaticTableMapper.getTableHzTitle2(qcStaticTable);
//
// dto.setColumns2(cols2);
return dto;
}
@ -876,8 +883,152 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService {
return days;
}
@Override
@DS("#header.poolName")
public List<HashMap> getTableHzData(QcStaticTable qcStaticTable) {
List<HashMap> dtos = new ArrayList<>();
qcStaticTable.setDataType("unqualified_remark");
qcStaticTable.setRemark(qcStaticTable.getCheckType());
List<String> noOkTyps = qcStaticTableMapper.getTableHzTitle(qcStaticTable);
//第一列日期
List<String> days = this.getHzDays(qcStaticTable.getIncomeTimeStr(),qcStaticTable.getYmdms());
//抽样数、不良数、不良率
Map<String,QcStaticTable> samples = qcStaticTableMapper.getSamplesNum(qcStaticTable);
if(samples.isEmpty()){
return dtos;
}
//不良数
Map<String,QcStaticTable> noOks = qcStaticTableMapper.getNoOkNum(qcStaticTable);
HashMap colMap = null;
for(String col:days){
colMap = new HashMap();
colMap.put("timeCol",col);
String samKey = col;
QcStaticTable sampl = samples.get(samKey);
if(sampl!=null&&!sampl.getSampleQuality().equals("0.00")){
colMap.put("sampleQuality",sampl.getSampleQuality().replaceAll("\\..*", ""));
BigDecimal noOkRate = new BigDecimal(sampl.getNoOkQuality()).multiply(new BigDecimal("100.00"))
.divide(new BigDecimal(sampl.getSampleQuality()),2, BigDecimal.ROUND_HALF_UP);
colMap.put("noOkRate",noOkRate);
}else{
colMap.put("sampleQuality","0");
colMap.put("noOkRate","0");
}
//缺陷不良
for(int i=0;i< noOkTyps.size();i++){
String noOkTyp = noOkTyps.get(0);
String noOkTypeKey = col+noOkTyp;
QcStaticTable noOk = noOks.get(noOkTypeKey);
if(noOk!=null&&noOk.getNoOkQuality()!=null) {
colMap.put("col"+i, noOk.getNoOkQuality().replaceAll("\\..*", ""));
}else{
colMap.put("col"+i, "0");
}
}
dtos.add(colMap);
}
return dtos;
}
@Override
@DS("#header.poolName")
public List<QcStaticTable> getTableHzNoOkData(QcStaticTable qcStaticTable) {
//不良数
List<QcStaticTable> dtos = qcStaticTableMapper.getTableHzNoOkData(qcStaticTable);
BigDecimal totalNoOkQuality = BigDecimal.ZERO;
//求不良数和
for (QcStaticTable dto : dtos) {
totalNoOkQuality = totalNoOkQuality.add(new BigDecimal(dto.getNoOkQuality()));
}
//求占比
for (QcStaticTable dto : dtos) {
BigDecimal noOkratio = new BigDecimal(dto.getNoOkQuality())
.divide(totalNoOkQuality,2, BigDecimal.ROUND_HALF_UP);
dto.setNoOkNumRate(noOkratio.toString());
dto.setNoOkQuality(dto.getNoOkQuality().replaceAll("\\..*", ""));
}
return dtos;
}
/****/
public List<String> getHzDays(String timeStr,String ymd) {
// 返回的日期集合
List<String> days = new ArrayList<String>();
DateFormat dateFormat = null;
try {
Calendar tempStart = null;
Calendar tempEnd = null;
if ("dd".equals(ymd)) {//天内各小时
for (int i = 0; i < 24; i++) {
// 使用String.format()格式化小时,保证每个小时都是两位数
String hourS = String.format("%02d", i);//String.format("%02d:00", i);
days.add(hourS);
}
} else if ("mm".equals(ymd)){//月内各日
int year = Integer.parseInt(timeStr.split("-")[0]);
int month = Integer.parseInt(timeStr.split("-")[1]);
YearMonth yearMonth = YearMonth.of(year, month);
// 获取该月份的第一天
LocalDate firstDayOfMonth = yearMonth.atDay(1);
// 循环直到下一个月的第一天
LocalDate currentDate = firstDayOfMonth;
while (currentDate.getMonthValue() == month) {
// 使用DateTimeFormatter格式化日期为字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
days.add(formattedDate);
// 移动到下一天
currentDate = currentDate.plusDays(1);
}
} else if ("yyyy".equals(ymd)){//
for (Month month : Month.values()) {
// 使用String.format来构造"yyyy-MM"格式的字符串
// %d用于整数年份和月份但月份需要前面补0使用%02d
String formattedMonth = String.format("%d-%02d", Integer.parseInt(timeStr), month.getValue());
days.add(formattedMonth);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return days;
}
public static List<String> getDaysOfMonth(int year, int month) {
List<String> days = new ArrayList<>();
YearMonth yearMonth = YearMonth.of(year, month);
// 获取该月份的第一天
LocalDate firstDayOfMonth = yearMonth.atDay(1);
// 循环直到下一个月的第一天
LocalDate currentDate = firstDayOfMonth;
while (currentDate.getMonthValue() == month) {
// 使用DateTimeFormatter格式化日期为字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
days.add(formattedDate);
// 移动到下一天
currentDate = currentDate.plusDays(1);
}
return days;
}
public static void main(String args[]){
double a = 0.01;
System.out.println(new BigDecimal(a).compareTo(BigDecimal.ZERO));
List<String> months = new ArrayList<>();
for (Month month : Month.values()) {
// 使用String.format来构造"yyyy-MM"格式的字符串
// %d用于整数年份和月份但月份需要前面补0使用%02d
String formattedMonth = String.format("%d-%02d",2024, month.getValue());
months.add(formattedMonth);
}
System.out.println(months);
}
}

@ -498,4 +498,115 @@
<select id="getTableHzTitle2" resultType="java.lang.String">
select defect_subclass from qc_defect_type where defect_type = #{typeCode} and del_flag = '0'
</select>
<select id="getSamplesNum" resultType="com.op.quality.domain.QcStaticTable">
<if test="ymdms == 'yyyy'">
select sum(sample_quality) sampleQuality,
sum(noOk_quality) noOkQuality,
ymdms
FROM(
select CONVERT(varchar(7),qct.create_time, 120) AS ymdms, qct.sample_quality, qct.noOk_quality
from qc_check_task qct
where check_type = #{checkType}
and CONVERT(varchar(4),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by ymdms
</if>
<if test="ymdms == 'mm'">
select sum(sample_quality) sampleQuality,
sum(noOk_quality) noOkQuality,
ymdms
FROM(
select CONVERT(varchar(10),qct.create_time, 120) AS ymdms, qct.sample_quality, qct.noOk_quality
from qc_check_task qct
where check_type = #{checkType}
and CONVERT(varchar(7),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by ymdms
</if>
<if test="ymdms == 'dd'">
select sum(sample_quality) sampleQuality,
sum(noOk_quality) noOkQuality,
RIGHT('00' + CAST(ymdms AS VARCHAR(2)), 2) ymdms
FROM(
select DATEPART(HOUR, qct.create_time) AS ymdms, qct.sample_quality, qct.noOk_quality
from qc_check_task qct
where check_type = #{checkType}
and CONVERT(varchar(10),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by ymdms
</if>
</select>
<select id="getNoOkNum" resultType="com.op.quality.domain.QcStaticTable">
<if test="ymdms == 'yyyy'">
select sum(noOk_quality) noOkQuality,
concat(hourName,dict_label) ymdUntype
FROM(
select CONVERT(varchar(7),qct.create_time, 120) AS hourName,
qct.noOk_quality,
bdd.dict_label
from qc_check_task qct
left join base_dict_data bdd on bdd.dict_type = 'unqualified_remark' and qct.remark_code = dict_value
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(4),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by hourName,dict_label
</if>
<if test="ymdms == 'mm'">
select sum(noOk_quality) noOkQuality,
concat(hourName,dict_label) ymdUntype
FROM(
select CONVERT(varchar(10),qct.create_time, 120) AS hourName,
qct.noOk_quality,
bdd.dict_label
from qc_check_task qct
left join base_dict_data bdd on bdd.dict_type = 'unqualified_remark' and qct.remark_code = dict_value
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(7),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by hourName,dict_label
</if>
<if test="ymdms == 'dd'">
select sum(noOk_quality) noOkQuality,
concat(hourName,dict_label) ymdUntype
FROM(
select RIGHT('00' + CAST(DATEPART(HOUR, qct.create_time) AS VARCHAR(2)), 2) AS hourName,
qct.noOk_quality,
bdd.dict_label
from qc_check_task qct
left join base_dict_data bdd on bdd.dict_type = 'unqualified_remark' and qct.remark_code = dict_value
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(10),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by hourName,dict_label
</if>
</select>
<select id="getTableHzNoOkData" resultType="com.op.quality.domain.QcStaticTable">
select sum(t.noOk_quality) noOkQuality,
t.dict_label dataType
FROM(
select
qct.noOk_quality,qct.sample_quality,
bdd.dict_label
from qc_check_task qct
left join base_dict_data bdd on bdd.dict_type = 'unqualified_remark' and qct.remark_code = dict_value
where qct.check_type = #{checkType} and qct.check_status = '2'
<if test="ymdms == 'yyyy'">
and CONVERT(varchar(4),qct.create_time, 120) = #{incomeTimeStr}
</if>
<if test="ymdms == 'mm'">
and CONVERT(varchar(7),qct.create_time, 120) = #{incomeTimeStr}
</if>
<if test="ymdms == 'dd'">
and CONVERT(varchar(10),qct.create_time, 120) = #{incomeTimeStr}
</if>
and del_flag = '0' and qct.remark_code is not null
) t
group by t.dict_label
</select>
</mapper>

Loading…
Cancel
Save