diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java index ad1001ab..4a789e6f 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java @@ -5,9 +5,18 @@ import java.math.BigDecimal; public class QuantityDto { private Long quantityFeedbackSum; private BigDecimal workTime; - private Long useMan; + private BigDecimal useMan; private String workorderCode; private String machineCode; + private BigDecimal totalWorkTime; + + public BigDecimal getTotalWorkTime() { + return totalWorkTime; + } + + public void setTotalWorkTime(BigDecimal totalWorkTime) { + this.totalWorkTime = totalWorkTime; + } public Long getQuantityFeedbackSum() { return quantityFeedbackSum; @@ -25,11 +34,11 @@ public class QuantityDto { this.workTime = workTime; } - public Long getUseMan() { + public BigDecimal getUseMan() { return useMan; } - public void setUseMan(Long useMan) { + public void setUseMan(BigDecimal useMan) { this.useMan = useMan; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java index a74d8c7f..3d17560e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java @@ -10,6 +10,8 @@ import java.util.Date; public class MesDailyReportVo extends BaseEntity { private static final long serialVersionUID = 1L; + @Excel(name = "工厂编码") + private String factoryCode; // 车间 @Excel(name = "车间编码") private String workshopCode; @@ -27,8 +29,13 @@ public class MesDailyReportVo extends BaseEntity { private String equipmentCode; @Excel(name = "组别") private String equipmentName; + @Excel(name = "品类") + private String prodType;//分类 + @Excel(name = "组长") + private String teamLeaderName;//组长 + @Excel(name = "工单号") + private String workorderCode; // 工时 - private BigDecimal unitWorkingHours; private String workorderCodeSap; @@ -36,45 +43,40 @@ public class MesDailyReportVo extends BaseEntity { private String productCode;//产品编码 @Excel(name = "产品名称") private String productName;//产品名称 + @Excel(name = "规格") + private Long spec;//规格 + @Excel(name = "单位(件)") + private String unit; + @Excel(name = "计划产量(件)") + private Long quantitySplit; + @Excel(name = "实际产量(件)") + private String quantityFeedback;//实际产量(箱) + @Excel(name = "产量(PC)") + private String quantityAct;// 产量(盒) + @Excel(name = "订单完成率(%)") + private String completeRate;// 订单完成率 + // 标准效率 + @Excel(name = "产线标准效率(PC/H)") + private BigDecimal efficiency; - //组别 private String teamCode; private String teamDesc; - @Excel(name = "品类") - private String prodType;//分类 - @Excel(name = "组长") - private String teamLeaderName;//组长 //计划产量 // 标准用人 @Excel(name = "标准用人") - private Long useMan; - // 标准效率 - @Excel(name = "产线标准效率") - private BigDecimal efficiency; - @Excel(name = "工单号") - private String workorderCode; + private BigDecimal useMan; + private String workorderName; private String quantity;//计划产量(箱) - @Excel(name = "规格") - private Long spec;//规格 - @Excel(name = "单位") - private String unit; - @Excel(name = "计划产量") - private Long quantitySplit; - @Excel(name = "实际产量") - private String quantityFeedback;//实际产量(箱) - @Excel(name = "产量") - private String quantityAct;// 产量(盒) - @Excel(name = "产线标准效率") - private String completeRate;// 订单完成率 + @Excel(name = "实际用人") private String manStandard;//实际用人 @Excel(name = "标准工时") private String workTimeStandard;//工时-标准 @Excel(name = "实际工时") private BigDecimal workTime;//工时-实际 - @Excel(name = "产线效率") + @Excel(name = "产线效率(%)") private String productivity;//工时-产线效率 @Excel(name = "总工时") private String totalWorkTime; @@ -95,8 +97,6 @@ public class MesDailyReportVo extends BaseEntity { private String equipmentTypeCode; private String machineCode; - @Excel(name = "工厂编码") - private String factoryCode; private BigDecimal reportRate; public BigDecimal getReportRate() { @@ -393,11 +393,11 @@ public class MesDailyReportVo extends BaseEntity { this.quantitySplit = quantitySplit; } - public Long getUseMan() { + public BigDecimal getUseMan() { return useMan; } - public void setUseMan(Long useMan) { + public void setUseMan(BigDecimal useMan) { this.useMan = useMan; } 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 d5f054e8..c557bbbb 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 @@ -180,7 +180,7 @@ public interface MesReportWorkMapper { QuantityDto getRealQuantity(QuantityDto quantityDto); - List getSumQuantity(QuantityDto quantityDto); + QuantityDto getSumQuantity(QuantityDto quantityDto); //当月产线产量汇总 List getmonthProductionSut(MesMonthReportVo mesMonthReportVo); diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index d39a4731..93546ba7 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -425,8 +425,7 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { quantityDto.setWorkorderCode(workorderCode); quantityDto.setMachineCode(machineCode); QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto); - List sonMesReportList = mesReportWorkMapper.getSumQuantity(quantityDto); - QuantityDto sonMesReport = sonMesReportList.stream().max(Comparator.comparingLong(QuantityDto::getUseMan)).orElse(null); + QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto); // 产量 Long sumQua = 0L; @@ -435,7 +434,7 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { // 实际工时 BigDecimal workTime = BigDecimal.ZERO; // 实际用人 - Long useMan = 0L; + BigDecimal useMan = BigDecimal.ZERO; if (sonMesReport != null && sonMesReport != null) { sumQua = sonMesReport.getQuantityFeedbackSum(); realQua = parentMesReport.getQuantityFeedbackSum(); @@ -465,9 +464,8 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { .divide(workTime,2,BigDecimal.ROUND_HALF_UP); dto.setProductivity(productivity.toString()+"%"); // 总工时 实际用人*实际工时 - BigDecimal totalWorkTime = new BigDecimal(useMan) - .multiply(workTime); - dto.setTotalWorkTime(totalWorkTime.toString()); + + dto.setTotalWorkTime(sonMesReport.getTotalWorkTime().toString()); // 标准人均效率 实际产量/标准用人/标准工时 BigDecimal manAvgStandard = new BigDecimal(realQua) .divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP) @@ -475,7 +473,7 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { dto.setManAvgStandard(manAvgStandard.toString()); // 实际人均效率 实际产量/总工时 BigDecimal manAvgActual = new BigDecimal(realQua) - .divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP); + .divide(sonMesReport.getTotalWorkTime(),2,BigDecimal.ROUND_HALF_UP); dto.setManAvgActual(manAvgActual.toString()); // 人均效率达成率 实际人均效率/标准人均效率 BigDecimal manAvgDo = manAvgActual 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 b0f18603..aee118bd 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 @@ -709,16 +709,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select sum(quantity_feedback) quantityFeedbackSum from mes_report_work where workorder_code = #{workorderCode} and del_flag = '0' and machine_code = #{machineCode} + and upload_status = '1' + SELECT powb.batch_code batchCode, + powb.batch_quantity batchQuantity + FROM pro_order_workorder_batch powb + LEFT JOIN pro_order_workorder pow ON powb.workorder_id = pow.workorder_id + WHERE pow.workorder_id = #{workorderId} and powb.del_flag = '2' and pow.del_flag = '2' + order by powb.batch_code + + + insert into pro_order @@ -395,6 +416,25 @@ #{id} + + update pro_order_workorder_batch set del_flag = '0' + where workorder_id in(select workorder_id from pro_order_workorder + where del_flag= '2' and belong_work_order like concat(#{orderCode},'-%')) + and del_flag='2' + + + update pro_order_workorder set del_flag = '0' + where del_flag= '2' and belong_work_order like concat(#{orderCode},'-%') + + + update pro_order + set status = 'o2', + quantity_split = quantity + where del_flag= '0' and order_code in( + select order_code from pro_order_workorder + where del_flag= '0' and belong_work_order like concat(#{orderCode},'-%') + ) + update pro_order @@ -410,4 +450,13 @@ #{id} + + delete from pro_order_workorder where del_flag= '2' and belong_work_order like concat(#{orderCode},'-%') + + + delete from pro_order_workorder_batch + where workorder_id in(select workorder_id from pro_order_workorder + where del_flag= '2' and belong_work_order like concat(#{orderCode},'-%')) + and del_flag='2' + diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml index 1348714f..1d2dd5b1 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml @@ -125,6 +125,18 @@ #{factoryCode}, + + INSERT INTO pro_order_workorder_batch ( + batch_id,workorder_id,batch_code,batch_quantity,status, + create_by,create_time,factory_code,del_flag + )VALUES + + ( + #{d.batchId},#{d.workorderId},#{d.batchCode},#{d.batchQuantity},'0', + #{d.createBy},#{d.createTime}, #{d.factoryCode},'2' + ) + + update pro_order_workorder_batch 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 6ed79d0e..1279a840 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 @@ -212,12 +212,22 @@ and del_flag = '0' + + - + + + + + insert into mes_prepare_detail @@ -738,6 +772,24 @@ + + INSERT INTO pro_order_workorder ( + workorder_id,workorder_code,order_id,order_code,product_code, + product_name,unit,quantity_split,route_code,prod_line_code, + product_date,parent_order, status,create_by,create_time, + prod_type,factory_code,end_flag,del_flag,sort_no, + belong_work_order + )VALUES + + ( + #{d.workorderId},#{d.workorderCode},#{d.orderId},#{d.orderCode},#{d.productCode}, + #{d.productName},#{d.unit},#{d.quantitySplit},#{d.routeCode},#{d.prodLineCode}, + #{d.productDate},#{d.parentOrder},#{d.status},#{d.createBy},#{d.createTime}, + #{d.prodType}, #{d.factoryCode},#{d.endFlag},'2',#{d.sortNo}, + #{d.belongWorkOrder} + ) + + update pro_order_workorder diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java index fbbf3fdc..4e633d8c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java @@ -1,12 +1,16 @@ package com.op.quality.controller; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import com.op.quality.domain.QcCheckProject; -import com.op.quality.domain.QcMaterialGroup; -import com.op.quality.domain.QcProjectType; +import com.op.common.core.domain.ExcelCol; +import com.op.common.core.utils.poi.ExcelMapUtil; +import com.op.quality.domain.*; import com.op.quality.service.IQcMaterialGroupService; +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; @@ -19,12 +23,12 @@ import org.springframework.web.bind.annotation.RestController; import com.op.common.log.annotation.Log; import com.op.common.log.enums.BusinessType; import com.op.common.security.annotation.RequiresPermissions; -import com.op.quality.domain.QcCheckTypeProject; import com.op.quality.service.IQcCheckTypeProjectService; import com.op.common.core.web.controller.BaseController; import com.op.common.core.web.domain.AjaxResult; import com.op.common.core.utils.poi.ExcelUtil; import com.op.common.core.web.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; /** * 物料检验项目维护Controller @@ -127,4 +131,78 @@ public class QcCheckTypeProjectController extends BaseController { List list = qcCheckTypeProjectService.getProjectOptions(qcCheckProject); return list; } + + @PostMapping("/importTemplate") + @Log(title = "生成订单模板", businessType = BusinessType.EXPORT) + public void importTemplate(HttpServletResponse response) throws IOException { + + ArrayList excelCols = new ArrayList<>(); + excelCols.add(new ExcelCol("线体编码", "lineCode", 20)); + excelCols.add(new ExcelCol("产品编码", "productCode", 20)); + excelCols.add(new ExcelCol("产品名称", "productName", 20)); + excelCols.add(new ExcelCol("标准用人", "useMan", 20)); + excelCols.add(new ExcelCol("标准效率", "efficiency", 20)); + excelCols.add(new ExcelCol("标准工时", "attr1", 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, null); + workbook.write(outputStream); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (workbook != null) { + workbook.dispose(); + } + } + } + + @PostMapping("/importMaterailTemplate") + public void importMaterailTemplate(HttpServletResponse response) throws IOException { + + ArrayList excelCols = new ArrayList<>(); + excelCols.add(new ExcelCol("质检物料组名称", "groupName", 50)); + excelCols.add(new ExcelCol("物料编码", "materialCode", 50)); + excelCols.add(new ExcelCol("物料名称", "materialName", 50)); + 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, null); + workbook.write(outputStream); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (workbook != null) { + workbook.dispose(); + } + } + } + /** + * 导入订单信息接口 + * + * @param file + * @return + * @throws Exception + */ + @Log(title = "导入线体产品信息", businessType = BusinessType.IMPORT) + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file) throws Exception { + // 创建接收对象 + ExcelUtil util = new ExcelUtil<>(QcMaterialGroupDetail.class); + // 接收表格信息 + List orderList = util.importExcel(file.getInputStream()); + return qcCheckTypeProjectService.importOrder(orderList); + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcMaterialGroupDetail.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcMaterialGroupDetail.java index dbdce17d..be24f61f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcMaterialGroupDetail.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcMaterialGroupDetail.java @@ -26,10 +26,13 @@ public class QcMaterialGroupDetail extends BaseEntity { private String groupId; //物料组编码 private String groupCode; + //物料组名称 + @Excel(name = "质检物料组名称") + private String groupName; /** * 物料号 */ - @Excel(name = "物料号") + @Excel(name = "物料编码") private String materialCode; /** @@ -50,6 +53,14 @@ public class QcMaterialGroupDetail extends BaseEntity { @Excel(name = "工厂编码") private String factoryCode; + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + /** * 删除标识1删除0正常 */ 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 9a69cc94..af74ce19 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 @@ -105,6 +105,24 @@ public class QcStaticTable extends BaseEntity { private List dxData; private List details; private String[] projectNoArray; + private BigDecimal upperDiff; + private BigDecimal downDiff; + + public BigDecimal getUpperDiff() { + return upperDiff; + } + + public void setUpperDiff(BigDecimal upperDiff) { + this.upperDiff = upperDiff; + } + + public BigDecimal getDownDiff() { + return downDiff; + } + + public void setDownDiff(BigDecimal downDiff) { + this.downDiff = downDiff; + } public String getShiftId() { return shiftId; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java index a858713c..4975b703 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java @@ -3,10 +3,7 @@ package com.op.quality.mapper; import java.util.List; import java.util.Map; -import com.op.quality.domain.QcCheckProject; -import com.op.quality.domain.QcCheckTaskDetail; -import com.op.quality.domain.QcCheckTypeProject; -import com.op.quality.domain.QcProjectType; +import com.op.quality.domain.*; import com.op.system.api.domain.SysDictData; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; @@ -84,4 +81,6 @@ public interface QcCheckTypeProjectMapper { List getProjectOptions(QcCheckProject qcCheckProject); QcProjectType getProductGroup(String materialCode); + + QcMaterialGroupDetail selectExist(QcMaterialGroupDetail materialGroupDetail); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcMaterialGroupMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcMaterialGroupMapper.java index 60419adf..112a74f9 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcMaterialGroupMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcMaterialGroupMapper.java @@ -66,4 +66,6 @@ public interface QcMaterialGroupMapper { public List getMaterialChildrenList(QcMaterialGroup qcMaterialGroup); public List validationData(String id); + + String selectGroupIdByName(String groupName); } 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 36b64150..f696c237 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 @@ -77,4 +77,6 @@ public interface QcStaticTableMapper { List getDLTableTitle(QcStaticTable qcStaticTable); List getProjectList(String checkType); + + QcStaticTable getUpAndDown(QcStaticTable qcStaticTable); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTypeProjectService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTypeProjectService.java index bd2d0e4e..d846e749 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTypeProjectService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTypeProjectService.java @@ -2,8 +2,10 @@ package com.op.quality.service; import java.util.List; +import com.op.common.core.web.domain.AjaxResult; import com.op.quality.domain.QcCheckProject; import com.op.quality.domain.QcCheckTypeProject; +import com.op.quality.domain.QcMaterialGroupDetail; import com.op.quality.domain.QcProjectType; /** @@ -71,4 +73,6 @@ public interface IQcCheckTypeProjectService { int submitProjects(List typeProjects); List getProjectOptions(QcCheckProject qcCheckProject); + + AjaxResult importOrder(List orderList); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java index 02ddc356..e851b40a 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java @@ -7,10 +7,15 @@ import java.util.Map; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.ServletUtils; import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.QcCheckProject; +import com.op.quality.domain.QcMaterialGroupDetail; import com.op.quality.domain.QcProjectType; +import com.op.quality.mapper.QcMaterialGroupDetailMapper; +import com.op.quality.mapper.QcMaterialGroupMapper; import com.op.system.api.domain.SysDictData; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -18,11 +23,15 @@ import org.springframework.stereotype.Service; import com.op.quality.mapper.QcCheckTypeProjectMapper; import com.op.quality.domain.QcCheckTypeProject; import com.op.quality.service.IQcCheckTypeProjectService; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import static com.op.common.core.web.domain.AjaxResult.error; +import static com.op.common.core.web.domain.AjaxResult.success; + /** * 物料检验项目维护Service业务层处理 * @@ -34,6 +43,12 @@ public class QcCheckTypeProjectServiceImpl implements IQcCheckTypeProjectService @Autowired private QcCheckTypeProjectMapper qcCheckTypeProjectMapper; + @Autowired + private QcMaterialGroupDetailMapper qcMaterialGroupDetailMapper; + + @Autowired + private QcMaterialGroupMapper qcMaterialGroupMapper; + /** * 查询物料检验项目维护 * @@ -162,5 +177,87 @@ public class QcCheckTypeProjectServiceImpl implements IQcCheckTypeProjectService return qcCheckTypeProjectMapper.getProjectOptions(qcCheckProject); } + @Override + @DS("#header.poolName") + @Transactional + public AjaxResult importOrder(List mgDetails) { + String GroupId = qcMaterialGroupMapper.selectGroupIdByName(mgDetails.get(0).getGroupName()); + + if(StringUtils.isBlank(GroupId)){ + return error("没有找到对应的质检物料组"); + } + + for(QcMaterialGroupDetail mgDetail:mgDetails){ + String factoryCode = ServletUtils.getRequest().getHeader("PoolName").replace("ds_",""); + mgDetail.setFactoryCode(factoryCode); + mgDetail.setCreateBy(SecurityUtils.getUsername()); + mgDetail.setCreateTime(DateUtils.getNowDate()); + mgDetail.setGroupId(GroupId); + } + + // 数据校验 + AjaxResult checkResult = checkImportOrder(mgDetails); + // 如果数据校验成功 + if (checkResult.isSuccess()) { + String info = syncImportFunc(mgDetails); + return success("信息导入完成。其中导入失败订单:"+info); + }else{ + return checkResult; + } + } + /** + * 校验导入订单信息 + * + * @param mgDetails + */ + public AjaxResult checkImportOrder(List mgDetails) { + + // 传入对象不能为空 + if (mgDetails.size() == 0 || com.op.common.core.utils.StringUtils.isNull(mgDetails)) { + return error(500, "信息不能为空!信息导入失败!"); + } + + // 循环遍历校验数据是否为空 + for (QcMaterialGroupDetail mesLine : mgDetails) { + + // 物料组名称 + if (!StringUtils.isNotBlank(mesLine.getGroupName())) { + return error(500, "物料组名称不能为空!信息导入失败!"); + } + // 物料号 + if (!StringUtils.isNotBlank(mesLine.getMaterialCode())) { + return error(500, "物料编码不能为空!信息导入失败!"); + } + // 物料名称 + if (!StringUtils.isNotBlank(mesLine.getMaterialName())) { + return error(500, "物料名称不能为空!信息导入失败!"); + } + + } + return success(); + } + public String syncImportFunc(List mesLineList){ + String failOrder = ""; + for (QcMaterialGroupDetail mesLine:mesLineList) { + String msg = syncFunc(mesLine); + if(StringUtils.isNotBlank(msg)){ + failOrder += msg+","; + } + } + return failOrder; + } + + @Transactional(rollbackFor = Exception.class) + public String syncFunc(QcMaterialGroupDetail materialGroupDetail){ + String failOrder = ""; + Date nowDate = DateUtils.getNowDate(); + QcMaterialGroupDetail orderExit = qcCheckTypeProjectMapper.selectExist(materialGroupDetail); + if (orderExit==null) {//不存在就插入 + materialGroupDetail.setId(IdUtils.fastSimpleUUID()); + materialGroupDetail.setCreateTime(nowDate); + qcMaterialGroupDetailMapper.insertQcMaterialGroupDetail(materialGroupDetail); + } + return failOrder; + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java index df29b644..34b5defd 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java @@ -154,7 +154,7 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService public List getOAInfoList(QcCheckUnqualified qcCheckUnqualified) { logger.info("查看流程Id"+ qcCheckUnqualified.getTaskId()); AjaxResult oaR = remoteOpenService.GetOaNodeInfo(qcCheckUnqualified.getTaskId()); - logger.info("流程Id 26235:"+ JSONObject.toJSONString(oaR)); + logger.info("流程Id 113454:"+ JSONObject.toJSONString(oaR)); List infoList = new ArrayList<>(); if((int)oaR.get("code")==200){ infoList=JSONArray.parseArray(oaR.get("msg").toString(),OAInfo.class); @@ -173,7 +173,7 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService * \"MAKTX\":\"榄菊加大盘强力型蚊香(60装)现货纸箱(2201)\",\"suppliernum\":\"0000102951\", * \"supplier\":\"广东高顺印刷包装有限公司\",\"CHARG\":\"null\",\"comeQty\":\"1117\", * \"DW\":\"ST\",\"JYBH\":\"202404180042\",\"BJY\":\"202404180042\",\"WLLY\":\"2\", - * \"memo\":\"不合格\",\"PZGLBZG\":\"不合格\"}","user":"999999","requestLevel":0,"workflowId":26235} + * \"memo\":\"不合格\",\"PZGLBZG\":\"不合格\"}","user":"999999","requestLevel":0,"workflowId":113454} */ private AjaxResult createLLOA(QcCheckUnqualified task){ @@ -184,7 +184,7 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService paramMap.put("user",task.getUser());//提交人工号 paramMap.put("requestLevel",0);//流程紧急度 paramMap.put("requestName","ZL0010-来料检验不合格控制流程");//流程名称 - paramMap.put("workflowId",26235);//该流程对应的唯- workFlowld + paramMap.put("workflowId",113454);//该流程对应的唯- workFlowld StringBuffer mainObject = new StringBuffer(); mainObject.append("{"); @@ -206,9 +206,9 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService mainObject.append("}"); paramMap.put("mainObject",mainObject.toString()); - logger.info("流程Id 26235:"+ JSONObject.toJSONString(paramMap)); + logger.info("流程Id 113454:"+ JSONObject.toJSONString(paramMap)); AjaxResult oaR = remoteOpenService.OAInspection(paramMap); - logger.info("流程Id 26235:"+ JSONObject.toJSONString(oaR)); + logger.info("流程Id 113454:"+ JSONObject.toJSONString(oaR)); return oaR; } /*成品入库不良OA流程 @@ -274,7 +274,7 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService "user": "999999", 提交用户账号 "requestLevel": "0", 紧急程度,默认0 "requestName": "ZL0030-品质异常流程-智能制造-2024-01-17(产品名称:榄菊高级型蚊香(60装))", - "workflowId": "26256", + "workflowId": "113455", "mainObject": "{ "CPMC":"榄菊高级型蚊香(60装)", *产品名称 "CPBM":"10101000115", *产品编码 @@ -307,7 +307,7 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService paramMap.put("user",SecurityUtils.getUsername());//提交人工号 paramMap.put("requestLevel",0);//流程紧急度 paramMap.put("requestName","ZL0030-品质异常流程-智能制造-"+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",detailInfo.getIncomeTime())+"(产品名称:"+detailInfo.getMaterialName()+")");//流程名称 - paramMap.put("workflowId",26256);//该流程对应的唯- workFlowld + paramMap.put("workflowId",113455);//该流程对应的唯- workFlowld StringBuffer mainObject = new StringBuffer(); mainObject.append("{"); @@ -333,9 +333,9 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService mainObject.append("}"); paramMap.put("mainObject",mainObject.toString()); - logger.info("流程Id 26256:"+ JSONObject.toJSONString(paramMap)); + logger.info("流程Id 113455:"+ JSONObject.toJSONString(paramMap)); AjaxResult oaR = remoteOpenService.OAInspection(paramMap); - logger.info("流程Id 26256:"+ JSONObject.toJSONString(oaR)); + logger.info("流程Id 113455:"+ JSONObject.toJSONString(oaR)); return oaR; } } 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 ae7e83ed..f5048b84 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 @@ -541,6 +541,20 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { dxData.add(result); } dto.setDxData(dxData); + + //给折线图取上下限制 + if(qcStaticTable.getProjectNoArray()!=null){ + qcStaticTable.setProjectNo(qcStaticTable.getProjectNoArray()[0]); + QcStaticTable upandown = qcStaticTableMapper.getUpAndDown(qcStaticTable); + if(upandown!=null){ + dto.setUpperDiff(upandown.getUpperDiff()); + dto.setDownDiff(upandown.getDownDiff()); + }else{ + dto.setUpperDiff(BigDecimal.ZERO); + dto.setDownDiff(BigDecimal.ZERO); + } + } + return dto; } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml index d565954d..e1e48ab3 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml @@ -436,8 +436,8 @@ left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx' where pow.del_flag = '0' and pow.status = #{status} and pow.parent_order = '0' - and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120) - or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120)) + + and pow.product_date >= CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120) + 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 2ac41fdc..74d108cc 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 @@ -196,7 +196,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into qc_check_task( record_id,check_no,income_batch_no,order_no, material_code,material_name,quality,unit, - supplier_code,supplier_name,income_time, + supplier_code,supplier_name,income_time,check_loc, check_status, create_by,create_time,factory_code,del_flag, check_type,noOk_quality,sample_quality,type_code,order_type @@ -204,7 +204,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select #{recordId},concat(check_no,FORMAT(GETDATE(),'HHmmss')),income_batch_no ,order_no , material_code,material_name,quality ,unit , - supplier_code,supplier_name,income_time, + supplier_code,supplier_name,income_time,check_loc, '0', #{createBy},#{createTime},factory_code,del_flag, check_type,noOk_quality,sample_quality,type_code ,'reCheckCS' diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcMaterialGroupMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcMaterialGroupMapper.xml index a14c64d6..4a558445 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcMaterialGroupMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcMaterialGroupMapper.xml @@ -127,4 +127,7 @@ from qc_check_type_project where group_id = #{id} + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml index d1bcf9b8..9d49b5ec 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml @@ -394,4 +394,10 @@ where qctp.type_id = #{checkType} and qctp.property_code = '1' and qctp.material_code is null and qcp.rule_name is not null +