diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java b/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java index 993912269..a94ac60f4 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java @@ -2,18 +2,11 @@ package com.op.common.core.utils.poi; import com.alibaba.fastjson2.JSONObject; import com.op.common.core.domain.ExcelCol; -import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -35,22 +28,45 @@ public class ExcelMapUtil { }else{ sheet = workbook.createSheet(sheetName); } -// //创建主标题行(第一行) -// Row sheetTitleRow = sheet.createRow(0); -// Cell titleCell = sheetTitleRow.createCell(0);//创建第一行第一个单元格 -// titleCell.setCellValue(title);//传值 -// titleCell.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式 -// //主标题行合并单元格 -// CellRangeAddress cellAddresses = new CellRangeAddress(0, 0, 0, colSize - 1); -// sheet.addMergedRegion(cellAddresses); - //创建表头行(第二行) - Row sheetHeadRow = sheet.createRow(0);//1 - //遍历表头名称,创建表头单元格 - for(int i = 0 ; i < colSize ; i++){ - sheet.setColumnWidth(i,(excelCol.get(i).getWidth())*256);//宽度单位是字符的256分之一 - Cell headCell = sheetHeadRow.createCell(i); - headCell.setCellValue(excelCol.get(i).getTitle());//传值 - headCell.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式 + if(title != null){//定量分析 + String[] title1s = title.split(","); + int rangeVal = colSize/title1s.length; + //创建主标题行(第一行) + Row sheetTitleRow = sheet.createRow(0); + + Cell titleCell0 = sheetTitleRow.createCell(0);//创建第一行第一个单元格 + titleCell0.setCellValue("");//传值 + titleCell0.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式 + + //遍历表头名称,创建表头单元格 + for (int i = 0; i < title1s.length; i++) { + Cell titleCell = sheetTitleRow.createCell(i*rangeVal+1);//创建第一行第一个单元格 + titleCell.setCellValue(title1s[i]);//传值 + titleCell.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式 + //主标题行合并单元格 + CellRangeAddress cellAddresses = new CellRangeAddress(0, 0, i*rangeVal+1, (i+1)*rangeVal); + sheet.addMergedRegion(cellAddresses); + } + + //创建表头行(第二行) + Row sheetHeadRow = sheet.createRow(1);//1 + //遍历表头名称,创建表头单元格 + for (int i = 0; i < colSize; i++) { + sheet.setColumnWidth(i, (excelCol.get(i).getWidth()) * 256);//宽度单位是字符的256分之一 + Cell headCell = sheetHeadRow.createCell(i); + headCell.setCellValue(excelCol.get(i).getTitle());//传值 + headCell.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式 + } + }else { + //创建表头行(第二行) + Row sheetHeadRow = sheet.createRow(0);//1 + //遍历表头名称,创建表头单元格 + for (int i = 0; i < colSize; i++) { + sheet.setColumnWidth(i, (excelCol.get(i).getWidth()) * 256);//宽度单位是字符的256分之一 + Cell headCell = sheetHeadRow.createCell(i); + headCell.setCellValue(excelCol.get(i).getTitle());//传值 + headCell.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式 + } } //将data中的值填充到excel @@ -65,12 +81,15 @@ public class ExcelMapUtil { for (int i = 0 ; i < colSize ; i++ ){ Cell dataCell = dataRow.createCell(i); dataCell.setCellStyle(getDataFont(workbook)); - if(i>=2){ - dataCell.setCellValue(getValueNum(jsonObject.get(excelCol.get(i).getField()))); - }else{ + if(title!=null){//定量分析 dataCell.setCellValue(getValue(jsonObject.get(excelCol.get(i).getField()))); + }else{ + if(i>=2){ + dataCell.setCellValue(getValueNum(jsonObject.get(excelCol.get(i).getField()))); + }else{ + dataCell.setCellValue(getValue(jsonObject.get(excelCol.get(i).getField()))); + } } - } iterator.remove(); rowNum++; @@ -110,6 +129,7 @@ public class ExcelMapUtil { cellStyle.setFont(font); cellStyle.setAlignment(HorizontalAlignment.CENTER_SELECTION);//设置水平居中 cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//设置垂直居中 + cellStyle.setWrapText(true);//设置单元格内容自动换行 return cellStyle; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java index c67141d86..5a075762c 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java @@ -153,4 +153,11 @@ public class MesReportWorkConsumeController extends BaseController { public AjaxResult submitReportInfo(@RequestBody MesReportWork mesReportWork) { return toAjax(mesReportWorkConsumeService.submitReportInfo(mesReportWork)); } + + /**获取母子BOM**/ + @GetMapping("/getBomList") + public List getBomList(MesReportWorkConsume mesReportWorkConsume) { + List rlist = mesReportWorkConsumeService.getBomList(mesReportWorkConsume); + return rlist; + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index 7d218a9d8..32a2566e4 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -346,7 +346,7 @@ public class MesReportWorkController extends BaseController { response.setContentType("application/octet-stream;charset=UTF-8"); ServletOutputStream outputStream = response.getOutputStream(); //调用工具类 - workbook = ExcelMapUtil.initWorkbook(titleName, titleName, excelCols, list); + workbook = ExcelMapUtil.initWorkbook(titleName, null, excelCols, list); workbook.write(outputStream); } catch (Exception e) { e.printStackTrace(); diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java index d1a1d7fb1..597b5c834 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java @@ -72,6 +72,79 @@ public class MesReportWorkConsume extends BaseEntity { private String parentOrder; private String batch; private String recoil; + private String standardDosage; + private String lossRate; + private String lossAmount; + private String cilosses; + private String sanka; + private String productGroup; + private String productGroupName; + //上级物料 + private String pMaterialCode; + + public String getpMaterialCode() { + return pMaterialCode; + } + + public void setpMaterialCode(String pMaterialCode) { + this.pMaterialCode = pMaterialCode; + } + + public String getProductGroup() { + return productGroup; + } + + public void setProductGroup(String productGroup) { + this.productGroup = productGroup; + } + + public String getProductGroupName() { + return productGroupName; + } + + public void setProductGroupName(String productGroupName) { + this.productGroupName = productGroupName; + } + + public String getStandardDosage() { + return standardDosage; + } + + public void setStandardDosage(String standardDosage) { + this.standardDosage = standardDosage; + } + + public String getLossRate() { + return lossRate; + } + + public void setLossRate(String lossRate) { + this.lossRate = lossRate; + } + + public String getLossAmount() { + return lossAmount; + } + + public void setLossAmount(String lossAmount) { + this.lossAmount = lossAmount; + } + + public String getCilosses() { + return cilosses; + } + + public void setCilosses(String cilosses) { + this.cilosses = cilosses; + } + + public String getSanka() { + return sanka; + } + + public void setSanka(String sanka) { + this.sanka = sanka; + } public String getRecoil() { return recoil; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java index b349ef97b..410ed0f39 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java @@ -77,4 +77,6 @@ public interface MesReportWorkConsumeMapper { int addConsumePS(@Param("list")List rconsumes); List getSonConsumeList(MesReportWorkConsume mesReportWorkConsume); + + List getBomList(MesReportWorkConsume mesReportWorkConsume); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java index b3c49ded9..e2d134c2d 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java @@ -82,4 +82,6 @@ public interface IMesReportWorkConsumeService { int submitConsumePS(List mesReportWorkConsume); int submitReportInfo(MesReportWork mesReportWork); + + List getBomList(MesReportWorkConsume mesReportWorkConsume); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index f63e76c43..70d03ff18 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -380,6 +380,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { List lt_hwList =new ArrayList<>(); MesReportWorkConsume consumeqo = new MesReportWorkConsume(); consumeqo.setWorkorderCode(workOrder.getWorkorderCode()); + consumeqo.setRecoil("X"); List consumes = mesReportWorkConsumeMapper.selectMesReportWorkConsumeList(consumeqo); if(!CollectionUtils.isEmpty(consumes)){ for(MesReportWorkConsume consume:consumes){ diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java index 4cb75a1f9..b3adfb61e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java @@ -252,4 +252,11 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer } return rconsumes; } + + @Override + @DS("#header.poolName") + public List getBomList(MesReportWorkConsume mesReportWorkConsume) { + List dtos = mesReportWorkConsumeMapper.getBomList(mesReportWorkConsume); + return dtos; + } } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml index 588831934..20c6b2e19 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml @@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and attr3 = #{attr3} and attr4 = #{attr4} and factory_code = #{factoryCode} + and recoil = #{recoil} and del_flag = '0' @@ -109,6 +110,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where mrwc.del_flag = '0' and pow.del_flag = '0' and pow.parent_order = #{workorderCode} + insert into mes_report_work_consume 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 6dfeb4efa..b42d86776 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 @@ -824,7 +824,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" upload_time = null, upload_status = '0', upload_msg = null - where workorder_code = #{workorderCode} + where workorder_code = #{workorderCode} or parent_order = #{workorderCode} diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index 00aae8e00..95dca07be 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -472,7 +472,7 @@ public class OpenServiceImpl implements OpenService { try { StringBuilder postDataBuilder = new StringBuilder(); postDataBuilder.append("createTime=").append("dateTime"); - String result = HttpUtils.sendPost(url_user,postDataBuilder.toString()); + String result = HttpUtils.sendPost("http://lj.lanju.cn:8801/outside/api/mes/getUserList.do",postDataBuilder.toString()); return success(result); } catch (Exception e) { e.printStackTrace(); diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java index 22c11cdc6..65d98aa3e 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java @@ -105,7 +105,7 @@ public class ProOrderController extends BaseController { response.setContentType("application/octet-stream;charset=UTF-8"); ServletOutputStream outputStream = response.getOutputStream(); //调用工具类 - workbook = ExcelMapUtil.initWorkbook(titleName, titleName, excelCols, null); + workbook = ExcelMapUtil.initWorkbook(titleName, null, excelCols, null); workbook.write(outputStream); } catch (Exception e) { e.printStackTrace(); diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java index 0a7b37f12..c0d50a566 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java @@ -179,9 +179,11 @@ public class ProOrderWorkorder extends TreeEntity { private Integer materialId; // 物料编码(湿料计划模块使用) + @Excel(name = "投料编码") private String materialCode; // 物料名称(湿料计划模块使用) + @Excel(name = "投料名称") private String materialName; // 供湿料计划使用 private String materialName1; diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 9bd51bca7..3dd9f5aef 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -2,6 +2,7 @@ package com.op.plan.mapper; import com.op.plan.domain.ProOrder; import com.op.plan.domain.ProOrderWorkorder; +import com.op.plan.domain.ProWetMaterialPlanDetail; import com.op.system.api.domain.dto.BaseBomComponentDTO; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; @@ -168,5 +169,7 @@ public interface ProOrderWorkorderMapper { ProOrderWorkorder getPWorkOrder(ProOrderWorkorder whiteOrder); List selectProOrderWorkorderList999(ProOrderWorkorder proOrderWorkorder); + + ProWetMaterialPlanDetail getWetMaterial(String workorderId); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 453791066..a23f44bf0 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -99,6 +99,11 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { String factoryCode = request.getHeader(key.substring(8)).replace("ds_",""); if("999".equals(factoryCode)){ workorderList = proOrderWorkorderMapper.selectProOrderWorkorderList999(proOrderWorkorder); + for(ProOrderWorkorder owork:workorderList){ + ProWetMaterialPlanDetail material = proOrderWorkorderMapper.getWetMaterial(owork.getWorkorderId()); + owork.setMaterialCode(material.getMaterialCode()); + owork.setMaterialName(material.getMaterialName()); + } }else{ workorderList = proOrderWorkorderMapper.selectProOrderWorkorderList(proOrderWorkorder); } diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 79a1df96f..bc9ffc89b 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -42,6 +42,9 @@ + + + @@ -68,8 +71,8 @@ and pow.workorder_name like concat('%', #{workorderName}, '%') and pow.order_id = #{orderId} and pow.order_code like concat('%', #{orderCode}, '%') - and pow.product_code like concat('%', #{productCode}, '%') - and pow.product_name like concat('%', #{productName}, '%') + and ppow.product_code like concat('%', #{productCode}, '%') + and ppow.product_name like concat('%', #{productName}, '%') and pow.product_date = #{productDate} and pow.shift_id = #{shiftId} and pow.parent_order = #{parentOrder} @@ -84,37 +87,43 @@ + insert into mes_prepare_detail diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java index c86a2a3f2..bf4b5556a 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java @@ -1,14 +1,18 @@ package com.op.quality.controller; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; @@ -20,6 +24,7 @@ import com.op.system.api.domain.SysUser; import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -262,10 +267,43 @@ public class QcCheckTaskIncomeController extends BaseController { } /**检测结果提交**/ @PutMapping("/commitCheckResult") + @DS("#header.poolName") public AjaxResult commitCheckResult(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) { qcCheckTaskIncome.setUpdateBy(SecurityUtils.getUsername()); qcCheckTaskIncome.setUpdateTime(DateUtils.getNowDate()); - return toAjax(qcCheckTaskIncomeService.commitCheckResult(qcCheckTaskIncome)); + qcCheckTaskIncome.setUpdateByName(SecurityUtils.getLoginUser().getSysUser().getNickName()); + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + qcCheckTaskIncome.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_","")); + //获取defectList + List details = qcCheckTaskIncome.getQcCheckTaskDetails(); + if (CollectionUtils.isEmpty(qcCheckTaskIncome.getDefects())) { + List defectList = new ArrayList<>(); + Map> groupedByDefectCode = details.stream() + .filter(detail -> detail.getDefectCode() != null) // 过滤掉defectCode为null的数据 + .collect(Collectors.groupingBy(QcCheckTaskDetail::getDefectCode)); + defectList = groupedByDefectCode.entrySet().stream() + .map(entry -> { + String defectCode = entry.getKey(); + List detailsWithSameCode = entry.getValue(); + BigDecimal sum = detailsWithSameCode.stream() + .map(QcCheckTaskDetail::getDefectQuality) + .reduce(BigDecimal::add) // 使用summingBigDecimal()方法来求和,该方法内部实际上使用reduce()来实现 + .orElse(BigDecimal.ZERO); + String defectSubclass = detailsWithSameCode.stream() + .map(QcCheckTaskDetail::getDefectSubclass) + .findFirst() + .orElse(""); + QcCheckTaskDefect taskDefect = new QcCheckTaskDefect(); + taskDefect.setDefectCode(defectCode); + taskDefect.setDefectSubclass(defectSubclass); + taskDefect.setNoOkQuality(sum); + return taskDefect; + }) + .collect(Collectors.toList()); + qcCheckTaskIncome.setDefects(defectList); + } + return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome)); } /**不良类型**/ diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java index a4ab70348..94adec2be 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java @@ -8,15 +8,19 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import com.op.common.core.domain.ExcelCol; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.poi.ExcelMapUtil; import com.op.quality.domain.QcCheckProject; import com.op.quality.domain.QcCheckType; import com.op.system.api.domain.quality.ChartDTO; import com.op.system.api.domain.quality.ChartSeriesDTO; import com.op.system.api.domain.quality.FactoryDto; import org.apache.commons.lang.StringUtils; +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; @@ -240,6 +244,11 @@ public class QcStaticTableController extends BaseController { return qcStaticTableService.getSupplierList(typeCode); } + @GetMapping("/getProjectOptionList/{checkType}") + public List getProjectList(@PathVariable("checkType") String checkType) { + return qcStaticTableService.getProjectList(checkType); + } + /** * 巡检记录报表 */ @@ -313,4 +322,68 @@ public class QcStaticTableController extends BaseController { util.exportExcel(response, list, "质检不良统计"); } + /**定量值分析--表头--产品名称**/ + @GetMapping("/getDLTableAvgInfo") + public QcStaticTable getDLTableAvgInfo(QcStaticTable qcStaticTable) { + return qcStaticTableService.getDLTableAvgInfo(qcStaticTable); + } + @PostMapping("/exportDLTable") + public void exportDLTable(HttpServletResponse response, QcStaticTable qcStaticTable) { + + QcStaticTable resultInfo = qcStaticTableService.getDLTableAvgInfo(qcStaticTable); + + //第一行标题 + List title1Cols = resultInfo.getTitleCol1(); + //第二行标题 + List title2Cols = resultInfo.getTitleCol2(); + String titleRow1 = String.join(",", title1Cols); + //表格结构数据 + ArrayList excelCols = new ArrayList<>(); + excelCols.add(new ExcelCol("日期","ymdms",30)); + List titleKeys = new ArrayList<>(); + for(int m = 0; m list = new ArrayList<>(); + //具体数据 + List dxData = resultInfo.getDxData(); + for(HashMap mapdto:dxData){ + list.add(mapdto); + List detailMap0 = (List) mapdto.get("details"); + HashMap detailMap1 = new HashMap(); + for(String titleKey:titleKeys){ + detailMap1.put(titleKey,detailMap0.get(0).get(titleKey+"Detail")); + } + if(StringUtils.isNotBlank((String)detailMap1.get(titleKeys.get(0)))){ + list.add(detailMap1); + } + + } + + + 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, titleRow1, excelCols, list); + workbook.write(outputStream); + } catch (Exception e) { + e.printStackTrace(); + }finally { + if (workbook!=null){ + workbook.dispose(); + } + } + } + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java index c0f5a9942..572ff945f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java @@ -238,6 +238,14 @@ public class QuaController extends BaseController { List list = qcCheckTaskIncomeService.getLLWorkOrder(qcCheckTaskIncome); return getDataTable(list); } + + /**不良类型**/ + @PutMapping("/getDefectListPDA") + public List getDefectListPDA(@RequestBody QcDefectType qcDefectType) { + DynamicDataSourceContextHolder.push(qcDefectType.getFactoryCode()); + return qcCheckTaskIncomeService.getDefectList(qcDefectType); + } + /**获取生产工单列表**/ @GetMapping("/getWorkOrder") public TableDataInfo getWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java index ee082dcd3..05aaffe5e 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java @@ -95,6 +95,8 @@ public class QcCheckTaskDetail extends BaseEntity { private List actualValues; private String typeProjectId; private String defectCode; + private BigDecimal defectQuality; + private String defectSubclass; private String checkType; private String fileListStr; private List files; @@ -360,6 +362,22 @@ public class QcCheckTaskDetail extends BaseEntity { return delFlag; } + public BigDecimal getDefectQuality() { + return defectQuality; + } + + public void setDefectQuality(BigDecimal defectQuality) { + this.defectQuality = defectQuality; + } + + public String getDefectSubclass() { + return defectSubclass; + } + + public void setDefectSubclass(String defectSubclass) { + this.defectSubclass = defectSubclass; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java index 1daa776aa..a2404425a 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java @@ -154,6 +154,33 @@ public class QcCheckTaskProduce extends BaseEntity { private String productType; private String confirmManCode; private String confirmManName; + private String confirm; + private String confirmRemark; + private String confirmTime; + + public String getConfirm() { + return confirm; + } + + public void setConfirm(String confirm) { + this.confirm = confirm; + } + + public String getConfirmRemark() { + return confirmRemark; + } + + public void setConfirmRemark(String confirmRemark) { + this.confirmRemark = confirmRemark; + } + + public String getConfirmTime() { + return confirmTime; + } + + public void setConfirmTime(String confirmTime) { + this.confirmTime = confirmTime; + } public String getConfirmManCode() { return confirmManCode; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java index cade73b8d..63953ef09 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java @@ -8,6 +8,7 @@ import com.op.system.api.domain.quality.ChartSeriesDTO; import java.math.BigDecimal; import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -99,6 +100,51 @@ public class QcStaticTable extends BaseEntity { private String startDateStr; private String endDateStr; private String checkType; + private List titleCol1; + private List titleCol2; + private List dxData; + private List details; + private String[] projectNoArray; + + public String[] getProjectNoArray() { + return projectNoArray; + } + + public void setProjectNoArray(String[] projectNoArray) { + this.projectNoArray = projectNoArray; + } + + public List getDetails() { + return details; + } + + public void setDetails(List details) { + this.details = details; + } + + public List getTitleCol1() { + return titleCol1; + } + + public void setTitleCol1(List titleCol1) { + this.titleCol1 = titleCol1; + } + + public List getTitleCol2() { + return titleCol2; + } + + public void setTitleCol2(List titleCol2) { + this.titleCol2 = titleCol2; + } + + public List getDxData() { + return dxData; + } + + public void setDxData(List dxData) { + this.dxData = dxData; + } public String getCheckType() { return checkType; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckReportIncomeMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckReportIncomeMapper.java index 4d022ac74..c73f47c93 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckReportIncomeMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckReportIncomeMapper.java @@ -81,4 +81,5 @@ public interface QcCheckReportIncomeMapper { QcCheckReportIncome getXJTaskInfo(QcCheckReportIncome qcCheckReportIncome); QcCheckReportIncome getLastXJTaskInfo(QcCheckReportIncome qcCheckReportIncome); + QcCheckTaskProduce getLastProductTypeInfo(QcCheckTaskProduce qcCheckTaskProduce); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java index 7d4cbc8b7..15c4629e3 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java @@ -62,4 +62,10 @@ public interface QcStaticTableMapper { List getLocList(); List getWorkcenter(); + @MapKey("recordId") + Map picsMap(QcStaticTable qcStaticTable); + + List getDLTableTitle(QcStaticTable qcStaticTable); + + List getProjectList(String checkType); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java index d60c07e39..f04847f59 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java @@ -43,4 +43,8 @@ public interface IQcStaticTableService { List getCheckTypeList(String typeCode); List getSupplierList(String typeCode); + + QcStaticTable getDLTableAvgInfo(QcStaticTable qcStaticTable); + + List getProjectList(String checkType); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProduceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProduceServiceImpl.java index 69576ee20..b69e7ef5b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProduceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProduceServiceImpl.java @@ -209,6 +209,14 @@ public class QcCheckReportProduceServiceImpl implements IQcCheckReportProduceSer qcStaticTable.setOrderNo(qcCheckTaskProduce.getOrderNo()); List checkInfos = qcStaticTableService.getXJCheckTableDetail(qcStaticTable); produce.setCheckInfos(checkInfos); + QcCheckTaskProduce lastProduce = qcCheckReportIncomeMapper.getLastProductTypeInfo(qcCheckTaskProduce); + if(lastProduce != null ){ + produce.setProductType(lastProduce.getProductType()); + produce.setCheckManCode(lastProduce.getCheckManCode()); + produce.setCheckManName(lastProduce.getCheckManName()); + produce.setConfirmManCode(lastProduce.getConfirmManCode()); + produce.setConfirmManName(lastProduce.getConfirmManName()); + } return produce; } @@ -224,6 +232,7 @@ public class QcCheckReportProduceServiceImpl implements IQcCheckReportProduceSer //最后一条巡检记录得确认人当最终确认人 QcCheckReportIncome lastData = qcCheckReportIncomeMapper.getLastXJTaskInfo(qcCheckReportIncome); if(lastData!=null ){ + taskInfo.setProductType(lastData.getProductType()); taskInfo.setConfirmManCode(lastData.getConfirmManCode()); taskInfo.setConfirmManName(lastData.getConfirmManName()); taskInfo.setConfirm(lastData.getConfirm()); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java index 3a3b68c83..9fe4772b6 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java @@ -649,27 +649,30 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { qcCheckTaskIncome.setCheckResult(result.equals("Y")?"1":"2"); qcCheckUnqualifiedMapper.updateQualityStatus(qcCheckTaskIncome); }else if("produce".equals(qcCheckTaskIncome.getTypeCode())){ - /**pro_order_workorder_batch-->status->w5**/ - qcCheckTaskIncome.setStatus("2"); - qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); + if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())){ + /**pro_order_workorder_batch-->qc_status->2**/ + qcCheckTaskIncome.setStatus("2"); + qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); + } if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())&&"N".equals(result)){ - QcCheckTaskIncome recheck = new QcCheckTaskIncome(); recheck.setOldBelongTo(belongId); - recheck.setBelongTo(recheck.getRecordId()); + recheck.setCreateBy(updateBy); recheck.setCreateTime(nowTime); //首件不合格触发复检 recheck.setRecordId(IdUtils.fastSimpleUUID()); + recheck.setBelongTo(recheck.getRecordId()); + n = qcCheckUnqualifiedMapper.repeatCheckTask(recheck); logger.info("复检表qc_check_task:" + n); - recheck.setRecordId(IdUtils.fastSimpleUUID()); + n = qcCheckUnqualifiedMapper.repeatCheckTaskDefect(recheck); logger.info("复检表qc_check_task_defect:" + n); - recheck.setRecordId(IdUtils.fastSimpleUUID()); + n = qcCheckUnqualifiedMapper.repeatCheckTaskDetail(recheck); logger.info("复检表qc_check_task_detail:" + n); - recheck.setRecordId(IdUtils.fastSimpleUUID()); + n = qcCheckUnqualifiedMapper.repeatCheckTaskUser(recheck); logger.info("复检表qc_check_task_user:" + n); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java index 88661d284..87c494d81 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java @@ -166,202 +166,202 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { public List getXJCheckTableDetail(QcStaticTable qcStaticTable) { List projects = qcStaticTableMapper.getXJProjects(qcStaticTable); Map detailMap = qcStaticTableMapper.getProjectDetail(qcStaticTable); + Map picsMap = qcStaticTableMapper.picsMap(qcStaticTable); for(QcStaticTable project:projects){ - this.getDataFromMap(detailMap,project); + this.getDataFromMap(detailMap,project,picsMap); } - return projects; } - private void getDataFromMap(Map detailMap,QcStaticTable project){ + private void getDataFromMap(Map detailMap,QcStaticTable project,Map picsMap){ String keystr = project.getProjectId()+"08"; QcStaticTable detail = detailMap.get(keystr); - if(detail!=null&&StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn080090(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn080090(project.getColumn080090()+","+picurls); + if(detail!=null) { + if (StringUtils.isNotBlank(detail.getRemark())) { + project.setColumn080090(detail.getRemark()); + } else if (detail != null && StringUtils.isNotBlank(detail.getStatus())) { + project.setColumn080090(detail.getStatus().equals("Y") ? "✓" : "✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn080090(project.getColumn080090()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null&&StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn080090(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn080090("-"); } keystr = project.getProjectId()+"09"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn090100(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn090100(project.getColumn090100()+","+picurls); + if(detail!=null){ + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn090100(detail.getRemark()); + }else if(detail!=null&&StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn090100(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn090100(project.getColumn090100()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null&&StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn090100(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn090100("-"); } keystr = project.getProjectId()+"10"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn100110(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn100110(project.getColumn100110()+","+picurls); + if(detail!=null){ + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn100110(detail.getRemark()); + }else if(detail!=null&&StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn100110(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn100110(project.getColumn100110()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null&&StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn100110(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn100110("-"); } keystr = project.getProjectId()+"11"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn110120(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn110120(project.getColumn110120()+","+picurls); + if(detail!=null){ + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn110120(detail.getRemark()); + }else if(detail!=null&&detail!=null && StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn110120(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn110120(project.getColumn110120()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null&&detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn110120(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn110120("-"); } keystr = project.getProjectId()+"12"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn123133(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn123133(project.getColumn123133()+","+picurls); + if(detail!=null) { + if (StringUtils.isNotBlank(detail.getRemark())) { + project.setColumn123133(detail.getRemark()); + } else if (detail != null && StringUtils.isNotBlank(detail.getStatus())) { + project.setColumn123133(detail.getStatus().equals("Y") ? "✓" : "✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn123133(project.getColumn123133()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn123133(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn123133("-"); } keystr = project.getProjectId()+"13"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn133143(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn133143(project.getColumn133143()+","+picurls); + if(detail!=null){ + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn133143(detail.getRemark()); + }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn133143(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn133143(project.getColumn133143()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn133143(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn133143("-"); } keystr = project.getProjectId()+"14"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn143153(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn143153(project.getColumn143153()+","+picurls); + if(detail!=null) { + if (StringUtils.isNotBlank(detail.getRemark())) { + project.setColumn143153(detail.getRemark()); + } else if (detail != null && StringUtils.isNotBlank(detail.getStatus())) { + project.setColumn143153(detail.getStatus().equals("Y") ? "✓" : "✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn143153(project.getColumn143153()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn143153(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn143153("-"); } keystr = project.getProjectId()+"15"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn153163(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn153163(project.getColumn153163()+","+picurls); + if(detail!=null) { + if (StringUtils.isNotBlank(detail.getRemark())) { + project.setColumn153163(detail.getRemark()); + } else if (detail != null && StringUtils.isNotBlank(detail.getStatus())) { + project.setColumn153163(detail.getStatus().equals("Y") ? "✓" : "✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn153163(project.getColumn153163()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn153163(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn153163("-"); } keystr = project.getProjectId()+"16"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn163173(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn163173(project.getColumn163173()+","+picurls); + if(detail!=null) { + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn163173(detail.getRemark()); + }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn163173(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn163173(project.getColumn163173()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn163173(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn163173("-"); } keystr = project.getProjectId()+"18"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn180190(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn180190(project.getColumn180190()+","+picurls); + if(detail!=null) { + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn180190(detail.getRemark()); + }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn180190(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn180190(project.getColumn180190()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn180190(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn180190("-"); } keystr = project.getProjectId()+"19"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn190200(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn190200(project.getColumn190200()+","+picurls); + if(detail!=null) { + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn190200(detail.getRemark()); + }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn190200(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn190200(project.getColumn190200()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn190200(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn190200("-"); } keystr = project.getProjectId()+"20"; detail = detailMap.get(keystr); - if(detail!=null && StringUtils.isNotBlank(detail.getRemark())){ - project.setColumn200210(detail.getRemark()); - List files = qmsFileMapper.getBaseFileBatch(detail.getRecordId()); - if (!CollectionUtils.isEmpty(files)) { - List pics = files.stream().map(BaseFile::getFileAddress).collect(Collectors.toList()); - String picurls = pics.stream().collect(Collectors.joining(",")); - project.setColumn200210(project.getColumn200210()+","+picurls); + if(detail!=null) { + if(StringUtils.isNotBlank(detail.getRemark())){ + project.setColumn200210(detail.getRemark()); + }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ + project.setColumn200210(detail.getStatus().equals("Y")?"✓":"✘"); + } + QcStaticTable urlDTO = picsMap.get(detail.getRecordId()); + if(urlDTO!=null){ + project.setColumn200210(project.getColumn200210()+","+urlDTO.getProjectId().replace("&","&"));//projectId存的照片路径 } - }else if(detail!=null && StringUtils.isNotBlank(detail.getStatus())){ - project.setColumn200210(detail.getStatus().equals("Y")?"✓":"✘"); }else{ project.setColumn200210("-"); } @@ -471,6 +471,70 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return dtos; } + @Override + @DS("#header.poolName") + public QcStaticTable getDLTableAvgInfo(QcStaticTable qcStaticTable) { + QcStaticTable dto = new QcStaticTable(); + //第一列日期 + List days = this.getDays(qcStaticTable.getYmArrayStart(), + qcStaticTable.getYmArrayEnd(),"ymd"); + qcStaticTable.setDataType("ymd"); + + List titleList = qcStaticTableMapper.getDLTableTitle(qcStaticTable); + Map titleMap = titleList.stream().collect(Collectors.toMap(QcStaticTable::getYearMonth, (a) -> a)); + //表头:第一行 + List colName1 = titleList.stream().map(QcStaticTable::getMaterialName).distinct().collect(Collectors.toList()); + List colCode1 = titleList.stream().map(QcStaticTable::getMaterialCode).distinct().collect(Collectors.toList()); + dto.setTitleCol1(colName1); + //表头:第二行 + List colName2 = titleList.stream().map(QcStaticTable::getRuleName).distinct().collect(Collectors.toList()); + List colCode2 = titleList.stream().map(QcStaticTable::getProjectNo).distinct().collect(Collectors.toList()); + dto.setTitleCol2(colName2); + //均值列表 + List dxData = new ArrayList<>(); + + for(String day:days){ + HashMap result = new HashMap(); + List detailsData = new ArrayList<>(); + HashMap detailResult = new HashMap(); + result.put("ymdms",day+" AVG"); + int i=0,j=0; + for(int m=0;m avgArray = Arrays.asList(avgArrayStr.split(",")); + BigDecimal addVal = new BigDecimal("0.00"); + for(String avgVal:avgArray){ + addVal = addVal.add(new BigDecimal(avgVal)); + } + BigDecimal avg = addVal.divide(new BigDecimal(avgArray.size()),2,BigDecimal.ROUND_HALF_UP); + result.put("mcode"+m+"Pcode"+n,avg); + detailResult.put("mcode"+m+"Pcode"+n+"Detail",avgArrayStr.replace(",","\n")); + }else{ + result.put("mcode"+m+"Pcode"+n,"0.00"); + detailResult.put("mcode"+m+"Pcode"+n+"Detail",""); + } + } + } + detailsData.add(detailResult); + result.put("details",detailsData); + dxData.add(result); + } + dto.setDxData(dxData); + return dto; + } + + @Override + @DS("#header.poolName") + public List getProjectList(String checkType) { + return qcStaticTableMapper.getProjectList(checkType); + } + private List getHourProductionTitle(QcStaticTable qcStaticTable) { // 返回的日期集合 @@ -501,6 +565,50 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return dayHours; } + public List getDays(String startMonth,String endMonth,String type){ + // 返回的日期集合 + List days = new ArrayList(); + DateFormat dateFormat = null; + try { + Calendar tempStart = null; + Calendar tempEnd = null; + if("ymd".equals(type)){ + dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date start = dateFormat.parse(startMonth);//开始 + Date end = dateFormat.parse(endMonth);//结束 + + tempStart = Calendar.getInstance(); + tempStart.setTime(start); + + tempEnd = Calendar.getInstance(); + tempEnd.setTime(end); + tempEnd.add(Calendar.DAY_OF_MONTH, 1); + }else{ + dateFormat = new SimpleDateFormat("yyyy-MM"); + Date start = dateFormat.parse(startMonth);//开始 + Date end = dateFormat.parse(endMonth);//结束 + + tempStart = Calendar.getInstance(); + tempStart.setTime(start); + + tempEnd = Calendar.getInstance(); + tempEnd.setTime(end); + tempEnd.add(Calendar.MONTH, 1); + } + + while (tempStart.before(tempEnd)) { + days.add(dateFormat.format(tempStart.getTime())); + if("ymd".equals(type)) { + tempStart.add(Calendar.DAY_OF_MONTH, 1); + }else{ + tempStart.add(Calendar.MONTH, 1); + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + return days; + } } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckReportIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckReportIncomeMapper.xml index 10a5874fc..04656d1fc 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckReportIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckReportIncomeMapper.xml @@ -137,6 +137,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" td.create_time createTime, td.update_by updateBy, td.update_time updateTime, + td.defect_code defectCode, + td.defect_quality defectQuality, qctp.upper_diff upperDiff, qctp.down_diff downDiff, qctp.sample, @@ -208,6 +210,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT top 1 c.confirm, + c.product_type productType, c.confirm_man_code confirmManCode, c.confirm_man_name confirmManName, c.confirm_remark confirmRemark, @@ -217,6 +220,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where c.check_type='checkTypeSCXJ' and c.order_no = #{orderNo} order by c.create_time desc + insert into qc_check_task diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml index 903886103..9f454b2d3 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml @@ -168,6 +168,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" factory_code = #{factoryCode}, del_flag = #{delFlag}, defect_code = #{defectCode}, + defect_quality = #{defectQuality}, where record_id = #{recordId} diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml index 49734a0d9..71556d608 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml @@ -78,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and qct.check_type = #{checkType} and qct.type_code = #{typeCode} + order by qct.create_time DESC diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml index c19a7dd31..4d6a4555f 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml @@ -75,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" defect_subclass defectSubclass from qc_defect_type where defect_type = #{defectType} and del_flag='0' + order by create_time + + + diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index 6c2c10400..7adb7076d 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -76,7 +76,7 @@ public class SapController extends BaseController { if(!"ds_999".equals(dateSource.get("poolName"))){ logger.info("++++++++++++" + dateSource.get("poolName") + "++++product同步开始++++++++++"); DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key - + /**base_product**/ Date maxTime0 = sapBomMapper.getProductMaxTime(); if(maxTime0 != null){ Calendar calendar = Calendar.getInstance(); @@ -115,7 +115,7 @@ public class SapController extends BaseController { logger.info("++++++++++++" + dateSource.get("poolName") + "++++bom同步开始++++++++++"); DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key - Date maxTime0 = sapBomMapper.getProductMaxTime(); + Date maxTime0 = sapBomMapper.getBomMaxTime(); if (maxTime0 != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(maxTime0); diff --git a/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java index b7796b816..1953efb20 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java @@ -47,4 +47,6 @@ public interface SapBomMapper { Date getProductMaxTime(); Date getRouteMaxTime(); + + Date getBomMaxTime(); } diff --git a/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml index b7f9c979d..a13467251 100644 --- a/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml +++ b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml @@ -78,7 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select factory_id from sys_factory where factory_code = #{factoryCode} @@ -288,6 +288,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseEquipmentController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseEquipmentController.java index fecad0b34..b90324a91 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseEquipmentController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseEquipmentController.java @@ -34,7 +34,7 @@ import org.springframework.web.multipart.MultipartFile; /** * 设备管理Controller - * + * * @author Open Platform * @date 2023-07-20 */ @@ -199,7 +199,7 @@ public class BaseEquipmentController extends BaseController { response.setContentType("application/octet-stream;charset=UTF-8"); ServletOutputStream outputStream = response.getOutputStream(); //调用工具类 - workbook = ExcelMapUtil.initWorkbook(titleName, titleName, excelCols, null); + workbook = ExcelMapUtil.initWorkbook(titleName, null, excelCols, null); workbook.write(outputStream); } catch (Exception e) { e.printStackTrace(); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/SysFactoryController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/SysFactoryController.java index 69b6ff5a5..fa635b09e 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/SysFactoryController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/SysFactoryController.java @@ -102,11 +102,8 @@ public class SysFactoryController extends BaseController { } // 查询工作中心 -// @RequiresPermissions("wms:factory:getWorkCenterList") @GetMapping("/getWorkCenterList") - public TableDataInfo getWorkCenterList(SysFactory sysFactory) { - startPage(); - List list = sysFactoryService.getWorkCenterList(sysFactory); - return getDataTable(list); + public AjaxResult getWorkCenterList(SysFactory sysFactory) { + return sysFactoryService.getWorkCenterList(sysFactory); } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/ISysFactoryService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/ISysFactoryService.java index ce4f9743c..331fb7f7c 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/ISysFactoryService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/ISysFactoryService.java @@ -1,6 +1,8 @@ package com.op.wms.service; import java.util.List; + +import com.op.common.core.web.domain.AjaxResult; import com.op.wms.domain.SysFactory; /** @@ -58,8 +60,8 @@ public interface ISysFactoryService { */ public int deleteSysFactoryByFactoryId(Long factoryId); - //好 - List getWorkCenterList(SysFactory sysFactory); + //查询工作中心 + AjaxResult getWorkCenterList(SysFactory sysFactory); //新增 判断逻辑 boolean checkFactoryCodeUnique(SysFactory sysFactory); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/SysFactoryServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/SysFactoryServiceImpl.java index edfec7c21..442ccb4aa 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/SysFactoryServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/SysFactoryServiceImpl.java @@ -4,12 +4,14 @@ import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.utils.DateUtils; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.wms.mapper.SysFactoryMapper; import com.op.wms.domain.SysFactory; import com.op.wms.service.ISysFactoryService; +import static com.op.common.core.web.domain.AjaxResult.success; /** * 工厂模型Service业务层处理 @@ -99,15 +101,16 @@ public class SysFactoryServiceImpl implements ISysFactoryService { } /** - * 查询工厂模型列表 + * 查询工作中心 * * @param sysFactory 工厂模型 * @return 工厂模型 */ @Override @DS("#header.poolName") - public List getWorkCenterList(SysFactory sysFactory) { - return sysFactoryMapper.getWorkCenterList(sysFactory); + public AjaxResult getWorkCenterList(SysFactory sysFactory) { + List list= sysFactoryMapper.getWorkCenterList(sysFactory); + return success(list); } /** diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index 794291aca..39c851edd 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -54,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ods_procure_out_order where Active='1' - and Produce_Code = #{produceCode} + and Produce_Code like concat('%', #{produceCode}, '%') and User_Defined1 = #{userDefined1} GROUP BY Produce_Code,User_Defined1 @@ -83,7 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"