diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskDTO.java index 47eb82b42..387772e11 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskDTO.java @@ -135,6 +135,24 @@ public class QcCheckTaskDTO extends BaseEntity { private BigDecimal aNoOkquality; private BigDecimal bNoOkquality; private BigDecimal cNoOkquality; + private String className; + private String reason; + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } public BigDecimal getSampleQuality() { return sampleQuality; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareController.java index 99b5f3d4a..191866738 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareController.java @@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse; import com.op.common.core.domain.R; import com.op.common.core.utils.uuid.IdUtils; +import com.op.system.api.domain.quality.QcCheckTaskDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties; import org.springframework.web.bind.annotation.GetMapping; @@ -113,4 +114,25 @@ public class MesPrepareController extends BaseController { public R reportWorkTask() { return mesPrepareService.reportWorkTask(); } + + /** + * 查询备料单列表 + */ + @GetMapping("/getBomTraceList") + @Log(title = "产品主键追溯备料单查询", businessType = BusinessType.QUERY) + public TableDataInfo getBomTraceList(MesPrepare mesPrepare) { + startPage(); + List list = mesPrepareService.getBomTraceList(mesPrepare); + return getDataTable(list); + } + /** + * 查询备料单列表 + */ + @GetMapping("/getCheckTaskTraceList") + @Log(title = "产品主键追溯检验任务查询", businessType = BusinessType.QUERY) + public TableDataInfo getCheckTaskTraceList(QcCheckTaskDTO dto) { + startPage(); + List list = mesPrepareService.getCheckTaskTraceList(dto); + return getDataTable(list); + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java index c789aff98..148940d0b 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java @@ -1,23 +1,30 @@ package com.op.mes.controller; +import com.op.common.core.domain.ExcelCol; import com.op.common.core.domain.R; import com.op.common.core.utils.bean.BeanUtils; +import com.op.common.core.utils.poi.ExcelMapUtil; import com.op.common.core.utils.poi.ExcelUtil; import com.op.common.core.web.controller.BaseController; import com.op.common.core.web.page.TableDataInfo; import com.op.common.security.annotation.RequiresPermissions; import com.op.mes.domain.*; +import com.op.mes.domain.vo.DynamicColumnVo; import com.op.mes.service.IMesReportWorksService; import com.op.common.core.utils.bean.BeanUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; import static com.op.common.core.utils.PageUtils.startPage; @@ -80,4 +87,50 @@ public class MesReportWorksController extends BaseController { } } + /**烘房产量统计**/ + @GetMapping("/getHFProductionList") + public List> getHFProductionList(HFProduction dto) { + List equNames = this.getHFProductionTitle(dto); + dto.setEquNames(equNames); + List> list = mesReportWorksService.getHFProductionList(dto); + return list; + } + @GetMapping("/getHFProductionTitle") + public List getHFProductionTitle(HFProduction dto) { + List list = mesReportWorksService.getHFProductionTitle(dto); + return list; + } + @PostMapping("/getHFProductionExport") + public void getHFProductionExport(HttpServletResponse response,HFProduction dto) { + List equNames = this.getHFProductionTitle(dto); + dto.setEquNames(equNames); + List> list = mesReportWorksService.getHFProductionList(dto); + + ArrayList excelCols = new ArrayList<>(); + excelCols.add(new ExcelCol("日期","ymd",20)); + for (DynamicColumnVo column : equNames) { + excelCols.add(new ExcelCol(column.getLabel(), column.getCode(), 20)); + } + excelCols.add(new ExcelCol("总产量","totalQuantity",20)); + + String titleName = "烘房产量统计报表"; + SXSSFWorkbook workbook = null; + + try { + //设置响应头 + response.setHeader("Content-disposition", + "attachment; filename="+ titleName); + response.setContentType("application/octet-stream;charset=UTF-8"); + ServletOutputStream outputStream = response.getOutputStream(); + //调用工具类 + workbook = ExcelMapUtil.initWorkbook(titleName, null, excelCols, list); + workbook.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + }finally { + if (workbook!=null){ + workbook.dispose(); + } + } + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/HFProduction.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/HFProduction.java new file mode 100644 index 000000000..790121799 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/HFProduction.java @@ -0,0 +1,83 @@ +package com.op.mes.domain; + +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import com.op.mes.domain.vo.DynamicColumnVo; + +import java.util.List; + +/** + * + * @author Open Platform + * @date 2024-12-12 + */ +public class HFProduction extends BaseEntity { + private static final long serialVersionUID = 1L; + @Excel(name = "日期") + private String ymd; + @Excel(name = "烘房编码") + private String equCode; + @Excel(name = "烘房名称") + private String equName; + @Excel(name = "产量") + private String quality; + private String ymArrayStart; + private String ymArrayEnd; + private List equNames; + + public List getEquNames() { + return equNames; + } + + public void setEquNames(List equNames) { + this.equNames = equNames; + } + + public String getYmd() { + return ymd; + } + + public void setYmd(String ymd) { + this.ymd = ymd; + } + + public String getEquCode() { + return equCode; + } + + public void setEquCode(String equCode) { + this.equCode = equCode; + } + + public String getEquName() { + return equName; + } + + public void setEquName(String equName) { + this.equName = equName; + } + + public String getQuality() { + return quality; + } + + public void setQuality(String quality) { + this.quality = quality; + } + + public String getYmArrayStart() { + return ymArrayStart; + } + + public void setYmArrayStart(String ymArrayStart) { + this.ymArrayStart = ymArrayStart; + } + + public String getYmArrayEnd() { + return ymArrayEnd; + } + + public void setYmArrayEnd(String ymArrayEnd) { + this.ymArrayEnd = ymArrayEnd; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java index d64aaf866..374fd508e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java @@ -175,6 +175,33 @@ public class MesPrepare extends BaseEntity { private String factoryCode; private String prodLineCode; private String dayStr; + private String recoil; + private String ymArrayStart; + private String ymArrayEnd; + + public String getYmArrayStart() { + return ymArrayStart; + } + + public void setYmArrayStart(String ymArrayStart) { + this.ymArrayStart = ymArrayStart; + } + + public String getYmArrayEnd() { + return ymArrayEnd; + } + + public void setYmArrayEnd(String ymArrayEnd) { + this.ymArrayEnd = ymArrayEnd; + } + + public String getRecoil() { + return recoil; + } + + public void setRecoil(String recoil) { + this.recoil = recoil; + } public String getProdLineCode() { return prodLineCode; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareMapper.java index 0be20db32..6f8d32a57 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.mes.domain.MesPrepare; +import com.op.system.api.domain.quality.QcCheckTaskDTO; import org.apache.ibatis.annotations.Mapper; /** @@ -71,4 +72,8 @@ public interface MesPrepareMapper { * @return */ MesPrepare selectMesPrepareByCode(String workorderCode); + + List getBomTraceList(MesPrepare mesPrepare); + + List getCheckTaskTraceList(QcCheckTaskDTO dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index dd97e2370..1b4dcda8b 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java @@ -8,6 +8,7 @@ import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.QuantityDto; import com.op.mes.domain.dto.SysFactoryDto; +import com.op.mes.domain.vo.DynamicColumnVo; import com.op.mes.domain.vo.MesDailyReportVo; import com.op.mes.domain.vo.MesMonthReportVo; import com.op.system.api.domain.SysNoticeGroup; @@ -214,4 +215,8 @@ public interface MesReportWorkMapper { List getWorkList(MesProductTrace qo); List getWaList(MesProductTrace qo); + + List getHFProductionList(HFProduction dto); + + List getHFProductionTitle(HFProduction dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareService.java index 0319e10b6..979667118 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareService.java @@ -4,6 +4,7 @@ import java.util.List; import com.op.common.core.domain.R; import com.op.mes.domain.MesPrepare; +import com.op.system.api.domain.quality.QcCheckTaskDTO; /** * 备料单Service接口 @@ -66,4 +67,8 @@ public interface IMesPrepareService { public R getMesPrepare(); public R reportWorkTask(); + + public List getBomTraceList(MesPrepare mesPrepare); + + public List getCheckTaskTraceList(QcCheckTaskDTO dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorksService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorksService.java index 32f98d6e3..46645ec72 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorksService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorksService.java @@ -1,10 +1,13 @@ package com.op.mes.service; import com.op.common.core.domain.R; +import com.op.mes.domain.HFProduction; import com.op.mes.domain.MesProductTrace; import com.op.mes.domain.MesReportWork; +import com.op.mes.domain.vo.DynamicColumnVo; import java.util.List; +import java.util.Map; public interface IMesReportWorksService { @@ -13,4 +16,8 @@ public interface IMesReportWorksService { R mesProTask(); List getProductTrace(MesProductTrace dto); + + List> getHFProductionList(HFProduction dto); + + List getHFProductionTitle(HFProduction dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareServiceImpl.java index 087ab1a51..f50832027 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareServiceImpl.java @@ -20,6 +20,7 @@ import com.op.mes.mapper.MesReportWorkMapper; import com.op.system.api.RemoteSapService; import com.op.system.api.RemoteUserService; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.quality.QcCheckTaskDTO; import com.op.system.api.domain.sap.SapMaterialPreparation; import com.op.system.api.domain.sap.SapRFW; import org.slf4j.Logger; @@ -303,4 +304,15 @@ public class MesPrepareServiceImpl implements IMesPrepareService { Set orderCodes = list.stream().map(SapMaterialPreparation::getAUFNR).collect(Collectors.toSet()); System.out.println(JSON.toJSONString(orderCodes)); } + + @Override + @DS("#header.poolName") + public List getBomTraceList(MesPrepare mesPrepare) { + return mesPrepareMapper.getBomTraceList(mesPrepare); + } + @Override + @DS("#header.poolName") + public List getCheckTaskTraceList(QcCheckTaskDTO dto) { + return mesPrepareMapper.getCheckTaskTraceList(dto); + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java index ef803cc6f..9d324a7fb 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java @@ -2,6 +2,7 @@ package com.op.mes.service.impl; import com.alibaba.fastjson2.JSONObject; +import com.alibaba.nacos.shaded.com.google.common.collect.Lists; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; @@ -9,9 +10,8 @@ import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.web.domain.AjaxResult; -import com.op.mes.domain.MesProductTrace; -import com.op.mes.domain.MesReportWork; -import com.op.mes.domain.ProOrderWorkorder; +import com.op.mes.domain.*; +import com.op.mes.domain.vo.DynamicColumnVo; import com.op.mes.mapper.MesReportWorkMapper; import com.op.mes.mapper.MesReportWorksMapper; import com.op.mes.service.IMesReportWorksService; @@ -27,6 +27,8 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; @@ -147,6 +149,7 @@ public class MesReportWorksServiceImpl implements IMesReportWorksService { } return dtos; } + public void setMesProInfoFunc(String poolName){ DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key //工厂名称 @@ -199,4 +202,77 @@ public class MesReportWorksServiceImpl implements IMesReportWorksService { //发企业微信--------------------结束 } } + + @Override + @DS("#header.poolName") + public List> getHFProductionList(HFProduction dto) { + //return mesReportWorkMapper.getHFProductionList(dto); + // 开始日期 + String start = dto.getYmArrayStart(); + String end = dto.getYmArrayEnd(); + // 查询出来时间区间 + List listDate = getDateInterval(start,end); + List allEquNames = dto.getEquNames(); + + List dbMProductList = mesReportWorkMapper.getHFProductionList(dto); + + List> results = listDate.stream() + .map(date -> { + Map row = new HashMap<>(); + row.put("ymd", date); + + //对于每个日期,收集该日期下所有产品的产量数据 + Map dailyProductQuantities = dbMProductList.stream() + .filter(HFProduction -> HFProduction.getYmd().equals(date)) + .collect(Collectors.toMap( + HFProduction::getEquCode, + HFProduction::getQuality + )); + + // 遍历所有产品,如果dailyProduct不存在此产品,添加产品,产量设为空 + for (DynamicColumnVo equ : allEquNames) { + String equCode = equ.getCode(); + dailyProductQuantities.putIfAbsent(equCode, "0"); + } + + row.putAll(dailyProductQuantities); + + // 计算并添加当日总产量 + int totalQuantity = dailyProductQuantities.values().stream() + .mapToInt(Integer::parseInt) + .sum(); + row.put("totalQuantity", totalQuantity); + + return row; + }).collect(Collectors.toList()); + + return results; + } + + @Override + @DS("#header.poolName") + public List getHFProductionTitle(HFProduction dto) { + //查询sql数据 + List data = mesReportWorkMapper.getHFProductionTitle(dto); + return data; + } + private List getDateInterval(String start, String end) { + start = start.substring(0,10); + end = end.substring(0,10); + DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + List dateList = Lists.newArrayList(); + + LocalDate localStart = LocalDate.parse(start,fmt); + LocalDate localEnd = LocalDate.parse(end,fmt); + + LocalDate nextDate = localStart; + + do { + String nextDateStr = nextDate.format(fmt); + dateList.add(nextDateStr); + nextDate = nextDate.plusDays(1); + }while (nextDate.compareTo(localEnd) <= 0); + return dateList; + + } } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml index 172258faa..b9f0a6476 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml @@ -92,6 +92,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from mes_prepare where workorder_code = #{workorderCode} and del_flag = '0' + + insert into mes_prepare diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index b74c437b8..9ed7a0ad9 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -1187,6 +1187,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and #{ymArrayEnd} >=CONVERT(varchar(10),qct.income_time,120) order by ba.area_desc asc,qct.income_time desc + + insert into mes_report_work diff --git a/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml b/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml index 8b1fd304c..f702196a5 100644 --- a/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -285,7 +285,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select max(create_time) from sys_user where create_by = 'job' and del_flag = '0'