From c4d7d1cb2b4fcff972fbe54947e68e0725a85d81 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Tue, 25 Jun 2024 18:18:12 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=97=A5=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E4=BA=BA=E5=91=98=E8=B0=83=E5=8A=A8--=E5=8F=96?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E4=BA=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/op/mes/mapper/MesReportWorkMapper.java | 2 +- .../java/com/op/mes/service/impl/MesReportWorkServiceImpl.java | 3 +-- .../src/main/resources/mapper/mes/MesReportWorkMapper.xml | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) 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 d11ffc30..2dc221e2 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 60b10a77..56f97b5d 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; 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 1f46a3f5..48aaeabf 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 @@ -715,10 +715,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select sum(quantity_feedback) quantityFeedbackSum, sum(work_time) workTime, - use_man useMan + max(use_man) useMan from mes_report_work where parent_order = #{workorderCode} and del_flag = '0' and machine_code = #{machineCode} - group by use_man diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java index c3914056..ee548b89 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java @@ -146,5 +146,7 @@ public interface IProOrderService { String checkRepeatBatchCodes(SplitOrderDTO splitOrderDTO); - List getCanProductLine(); + ProOrder getCanProductLine(ProOrder proOrder); + + R autoSplitOrder(ProOrder proOrder); } 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/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/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) + From ad5b9ee7a3d204a9d1bcede52093e5454cbe4314 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Wed, 26 Jun 2024 13:17:09 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E8=BE=85=E5=8A=A9=E6=8E=92=E4=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan/controller/ProOrderController.java | 13 +- .../java/com/op/plan/domain/ProOrder.java | 74 ++++++++ .../com/op/plan/mapper/ProOrderMapper.java | 2 + .../plan/mapper/ProOrderWorkorderMapper.java | 6 + .../service/impl/ProOrderServiceImpl.java | 169 +++++++++++++++++- .../resources/mapper/plan/ProOrderMapper.xml | 14 ++ .../mapper/plan/ProOrderWorkorderMapper.xml | 29 +++ 7 files changed, 297 insertions(+), 10 deletions(-) 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 07f1497b..802ab0a0 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 @@ -330,8 +330,15 @@ public class ProOrderController extends BaseController { return R.ok(); } - @GetMapping("/getCanProductLine") - public List getCanProductLine() { - return proOrderService.getCanProductLine(); + @PostMapping("/getCanProductLine") + public ProOrder getCanProductLine(@RequestBody ProOrder proOrder) { + return proOrderService.getCanProductLine(proOrder); } + + /**辅助排产**/ + @PostMapping("/autoSplitOrder") + public R autoSplitOrder(@RequestBody ProOrder proOrder) { + return proOrderService.autoSplitOrder(proOrder); + } + } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java index 60860c6e..112c0a9c 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java @@ -1,6 +1,8 @@ package com.op.plan.domain; +import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -65,6 +67,78 @@ public class ProOrder extends TreeEntity { private String productDate; private String lineCode; private String lineName; + private List lineList; + private List recommendLineList;//推荐线体 + private Integer useMan; + private BigDecimal efficiency; + private String[] lineCodes; + private String routeCode; + private Integer endFlag; + private String belongWorkOrder; + + public String getBelongWorkOrder() { + return belongWorkOrder; + } + + public void setBelongWorkOrder(String belongWorkOrder) { + this.belongWorkOrder = belongWorkOrder; + } + + public Integer getEndFlag() { + return endFlag; + } + + public void setEndFlag(Integer endFlag) { + this.endFlag = endFlag; + } + + public String getRouteCode() { + return routeCode; + } + + public void setRouteCode(String routeCode) { + this.routeCode = routeCode; + } + + public String[] getLineCodes() { + return lineCodes; + } + + public void setLineCodes(String[] lineCodes) { + this.lineCodes = lineCodes; + } + + public Integer getUseMan() { + return useMan; + } + + public void setUseMan(Integer useMan) { + this.useMan = useMan; + } + + public BigDecimal getEfficiency() { + return efficiency; + } + + public void setEfficiency(BigDecimal efficiency) { + this.efficiency = efficiency; + } + + public List getLineList() { + return lineList; + } + + public void setLineList(List lineList) { + this.lineList = lineList; + } + + public List getRecommendLineList() { + return recommendLineList; + } + + public void setRecommendLineList(List recommendLineList) { + this.recommendLineList = recommendLineList; + } public String getLineCode() { return lineCode; diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java index dcf31723..4c18bea4 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java @@ -238,4 +238,6 @@ public interface ProOrderMapper { int updateCloseOrderBatchById(@Param("orderIds")String[] orderIds); List getCanProductLine(); + + List getSelectLineLevel1(ProOrder proOrder); } 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 f4bd3164..daf7cfa4 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 @@ -216,5 +216,11 @@ public interface ProOrderWorkorderMapper { int updateMesReportWorkBatch(MesReportWorkBatchDTO mesReportWorkBatchDTO); int updateCheckTaskBatch(CheckTaskBatchDTO checkTaskBatchDTO); + + Long getLineProductInfo(ProOrder proOrder); + + String getProcessCode(String routeCode); + + int insertWorkorders(@Param("list") List workorders); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index 0e1d617b..2430371a 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -1220,15 +1220,170 @@ public class ProOrderServiceImpl implements IProOrderService { @Override @DS("#header.poolName") - public List getCanProductLine() { - return proOrderMapper.getCanProductLine(); + public ProOrder getCanProductLine(ProOrder proOrder) { + ProOrder dto = new ProOrder(); + //所有线体 + List lineList = proOrderMapper.getCanProductLine(); + dto.setLineList(lineList); + //推荐线体 + List recommendLineList = getRecommendLines(proOrder); + dto.setRecommendLineList(recommendLineList); + return dto; } - public static void main(String args[]){ - String arrayStr = "[[\"GX01\",\"LG1\"],[\"GX01\",\"LG2\"],[\"GX02\",\"S1\"],[\"GX02\",\"S2\"],[\"GX03\",\"HF01\"],[\"GX04\",\"SPJ01\"]]"; - JSONArray jsonArray = JSONArray.parseArray(arrayStr); - for(int c=0;c workorders = new ArrayList<>(); +// List workorderBatches = new ArrayList<>(); +// +// proOrder.setLineCode(proOrder.getLineCodes()[i]); +// Long efficiency = proOrderWorkorderMapper.getLineProductInfo(proOrder);//线体产能 +// if(efficiency==null){ +// break; +// logger.error("线体"+proOrder.getLineCodes()[i]+"产能"+efficiency+"无法生产"); +// } +// if(efficiency < orderQua){ +// proOrder.setQuantitySplit(efficiency); +// }else{ +// proOrder.setQuantitySplit(orderQua); +// } +// orderQua = orderQua - efficiency;//消耗订单总数量 +// List sonOrders = (List)proOrder.getChildren(); +// if(CollectionUtils.isEmpty(sonOrders)){//1层订单 +// proOrder.setEndFlag(1); +// } +// int endCode = getEndCode(proOrder.getId()); +// String belongWorkOrder = proOrder.getOrderCode()+"-"+endCode; +// proOrder.setBelongWorkOrder(belongWorkOrder); +// proOrder.setWorkerOrder(belongWorkOrder); +// proOrder.setParentOrder("0"); +// ProOrderWorkorder pworkOrder = getWorkOrderByOrder(proOrder);//TODO; +// //父级 +// workorders.add(pworkOrder); +// +// /**pro_order_workorder_batch**/ +// String parentWorkOrder = belongWorkOrder; +// while(!CollectionUtils.isEmpty(sonOrders)){ +// ProOrder sonOrder = sonOrders.get(0); +// sonOrder.setBelongWorkOrder(belongWorkOrder); +// endCode = getEndCode(proOrder.getId()); +// String sworkOrderCode = sonOrder.getOrderCode()+"-"+endCode; +// sonOrder.setBelongWorkOrder(belongWorkOrder); +// sonOrder.setWorkerOrder(sworkOrderCode); +// sonOrder.setParentOrder(parentWorkOrder); +// sonOrders = (List)sonOrder.getChildren(); +// if(CollectionUtils.isEmpty(sonOrders)){//1层订单 +// sonOrder.setEndFlag(1); +// } +// ProOrderWorkorder sworkOrder = getWorkOrderByOrder(sonOrder);//TODO; +// workorders.add(sworkOrder); +// parentWorkOrder = sworkOrderCode; +// } +// +// /**pro_order_workorder**/ +// if(!CollectionUtils.isEmpty(workorders)){ +// int pm = proOrderWorkorderMapper.insertWorkorders(workorders); +// System.out.println("pm:"+pm); +// } +// +// //拆批次 +// Long pworkOrderQua = proOrder.getQuantitySplit();//工单数量 +// ProOrderWorkorderBatch workBatch = null; +// int batchNum = 1; +// while(pworkOrderQua>0){ +// workBatch = new ProOrderWorkorderBatch(); +// workBatch.setBatchQuantity(0L); +// List batchCode = StringUtils.batchAutoCreate(proOrder.getFactoryCode(), +// proOrder.getLineCode(), +// DateUtils.dateTime("yyyy-MM-dd",proOrder.getProductDate()), +// proOrder.getAtrr2().substring(proOrder.getAtrr2().length()-1), +// "0",batchNum++); +// workBatch.setBatchCode(batchCode); +// workorderBatches.add(workBatch); +// } +// /**pro_order_workorder_batch**/ +// if(!CollectionUtils.isEmpty(workorderBatches)) { +// int pn = proOrderWorkorderBatchMapper.insertWorkorderBatchs(workBatch); +// System.out.println("pn:"+pn); +// } +// } + + return R.ok(); + } + + protected ProOrderWorkorder getWorkOrderByOrder(ProOrder proOrder){ + ProOrderWorkorder workOrder = new ProOrderWorkorder(); + workOrder.setWorkorderId(IdUtils.fastSimpleUUID()); + int endCode = getEndCode(proOrder.getId()); + workOrder.setWorkorderCode(proOrder.getWorkerOrder()); + workOrder.setBelongWorkOrder(proOrder.getBelongWorkOrder()); + workOrder.setOrderId(proOrder.getId()); + workOrder.setOrderCode(proOrder.getOrderCode()); + workOrder.setProductCode(proOrder.getProdCode()); + workOrder.setProductName(proOrder.getProdDesc()); + workOrder.setUnit(proOrder.getUnit()); + workOrder.setQuantitySplit(proOrder.getQuantitySplit()); + workOrder.setRouteCode(proOrder.getRouteCode()); + String gxCode = "CP";//proOrderWorkorderMapper.getProcessCode(proOrder.getRouteCode()); + String[][] lineCodeArray = {{gxCode,proOrder.getLineCode()}}; + workOrder.setProdLineCodeArray(lineCodeArray); + workOrder.setProductDate(DateUtils.dateTime("yyyy-MM-dd",proOrder.getProductDate())); + //workOrder.setShiftId(); + workOrder.setParentOrder(proOrder.getParentOrder()); + workOrder.setStatus("w0"); + workOrder.setCreateBy(SecurityUtils.getUsername()); + workOrder.setCreateTime(proOrder.getCreateTime()); + workOrder.setProdType(proOrder.getOrderType()); + workOrder.setFactoryCode(proOrder.getFactoryCode()); + workOrder.setEndFlag(proOrder.getEndFlag()); + workOrder.setSortNo(proOrder.getSortNo()); + return workOrder; + } + + /** + * 每个线体维护可生产的产品及其对应的每天的标准产能和标准用人。 + * 1、标准用人最少的线体。 + * 2、可生产产品种类最少的线体。 + * @param proOrder + */ + protected List getRecommendLines(ProOrder proOrder){ + List lines = new ArrayList<>(); + List proLines = proOrderMapper.getSelectLineLevel1(proOrder); + //订单总量 + BigDecimal orderQuality = new BigDecimal(proOrder.getQuantity()); + BigDecimal consumeQuality = BigDecimal.ZERO; + for(ProOrder pline:proLines){ + lines.add(pline.getLineCode()); + consumeQuality = consumeQuality.add(pline.getEfficiency()); + if(consumeQuality.compareTo(orderQuality)>=0){ + break; + } } + return lines; + } + + + + public static void main(String args[]){ +// String arrayStr = "[[\"GX01\",\"LG1\"],[\"GX01\",\"LG2\"],[\"GX02\",\"S1\"],[\"GX02\",\"S2\"],[\"GX03\",\"HF01\"],[\"GX04\",\"SPJ01\"]]"; +// JSONArray jsonArray = JSONArray.parseArray(arrayStr); +// for(int c=0;c + insert into pro_order 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..a99bb4bc 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 @@ -637,6 +637,17 @@ where pow.belong_work_order = #{workorderCode} and pow.del_flag = '0' order by pow.workorder_code_sap desc + + insert into mes_prepare_detail @@ -738,6 +749,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.prodLineCodeArray}, + #{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 From 0785b6b95ba8bf8db1d67a1d585bf1d255d6df11 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Thu, 27 Jun 2024 22:55:57 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E8=BE=85=E5=8A=A9=E6=8E=92=E4=BA=A71.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan/controller/ProOrderController.java | 15 + .../main/java/com/op/plan/domain/ProLine.java | 18 + .../com/op/plan/domain/dto/ProOrderDTO.java | 121 ++++++ .../com/op/plan/mapper/ProOrderMapper.java | 12 + .../mapper/ProOrderWorkorderBatchMapper.java | 2 + .../plan/mapper/ProOrderWorkorderMapper.java | 11 +- .../com/op/plan/service/IProOrderService.java | 6 + .../service/impl/ProOrderServiceImpl.java | 363 +++++++++++++----- .../resources/mapper/plan/ProOrderMapper.xml | 43 ++- .../plan/ProOrderWorkorderBatchMapper.xml | 12 + .../mapper/plan/ProOrderWorkorderMapper.xml | 33 +- 11 files changed, 529 insertions(+), 107 deletions(-) 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 802ab0a0..f035cb6c 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 @@ -133,6 +133,10 @@ public class ProOrderController extends BaseController { return proOrderService.getWorkOrderList(id); } + @GetMapping(value = "/getWorkOrderListCG/{id}") + public AjaxResult getWorkOrderListCG(@PathVariable("id") String id) { + return proOrderService.getWorkOrderListCG(id); + } /** * 获取当前订单信息列表 @@ -341,4 +345,15 @@ public class ProOrderController extends BaseController { return proOrderService.autoSplitOrder(proOrder); } + /**辅助排产取消**/ + @PostMapping("/autoSplitOrderCancel") + public R autoSplitOrderCancel(@RequestBody ProOrder proOrder) { + return proOrderService.autoSplitOrderCancel(proOrder); + } + + /**辅助排产提交**/ + @PostMapping("/autoSplitOrderOk") + public R autoSplitOrderOk(@RequestBody ProOrder proOrder) { + return proOrderService.autoSplitOrderOk(proOrder); + } } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProLine.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProLine.java index 7fc9202e..320b8aef 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProLine.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProLine.java @@ -6,6 +6,24 @@ public class ProLine { private String label; private String lineCode; private String lineName; + private Long efficiency; + private String dh; + + public Long getEfficiency() { + return efficiency; + } + + public void setEfficiency(Long efficiency) { + this.efficiency = efficiency; + } + + public String getDh() { + return dh; + } + + public void setDh(String dh) { + this.dh = dh; + } public String getLineCode() { return lineCode; diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/ProOrderDTO.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/ProOrderDTO.java index 0c375cd2..24b42fb5 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/ProOrderDTO.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/ProOrderDTO.java @@ -1,5 +1,8 @@ package com.op.plan.domain.dto; +import com.op.plan.domain.ProOrder; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -105,6 +108,124 @@ public class ProOrderDTO { private Integer sortNo; + private String bomBo; + private String syncUser; + private String productDate; + private String lineCode; + private String lineName; + private List lineList; + private List recommendLineList;//推荐线体 + private Integer useMan; + private BigDecimal efficiency; + private String[] lineCodes; + private String routeCode; + private Integer endFlag; + private String belongWorkOrder; + + public String getBomBo() { + return bomBo; + } + + public void setBomBo(String bomBo) { + this.bomBo = bomBo; + } + + public String getSyncUser() { + return syncUser; + } + + public void setSyncUser(String syncUser) { + this.syncUser = syncUser; + } + + public String getProductDate() { + return productDate; + } + + public void setProductDate(String productDate) { + this.productDate = productDate; + } + + public String getLineCode() { + return lineCode; + } + + public void setLineCode(String lineCode) { + this.lineCode = lineCode; + } + + public String getLineName() { + return lineName; + } + + public void setLineName(String lineName) { + this.lineName = lineName; + } + + public List getLineList() { + return lineList; + } + + public void setLineList(List lineList) { + this.lineList = lineList; + } + + public List getRecommendLineList() { + return recommendLineList; + } + + public void setRecommendLineList(List recommendLineList) { + this.recommendLineList = recommendLineList; + } + + public Integer getUseMan() { + return useMan; + } + + public void setUseMan(Integer useMan) { + this.useMan = useMan; + } + + public BigDecimal getEfficiency() { + return efficiency; + } + + public void setEfficiency(BigDecimal efficiency) { + this.efficiency = efficiency; + } + + public String[] getLineCodes() { + return lineCodes; + } + + public void setLineCodes(String[] lineCodes) { + this.lineCodes = lineCodes; + } + + public String getRouteCode() { + return routeCode; + } + + public void setRouteCode(String routeCode) { + this.routeCode = routeCode; + } + + public Integer getEndFlag() { + return endFlag; + } + + public void setEndFlag(Integer endFlag) { + this.endFlag = endFlag; + } + + public String getBelongWorkOrder() { + return belongWorkOrder; + } + + public void setBelongWorkOrder(String belongWorkOrder) { + this.belongWorkOrder = belongWorkOrder; + } + public Integer getCarNum() { return carNum; } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java index 4c18bea4..a326aef0 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderMapper.java @@ -240,4 +240,16 @@ public interface ProOrderMapper { List getCanProductLine(); List getSelectLineLevel1(ProOrder proOrder); + + List selectBatchCodesByIdCG(String workorderId); + + int deleteAutoSplitWork(String orderCode); + + int deleteAutoSplitWorkBatch(String orderCode); + + int updateAutoSplitWorkBatch(String orderCode); + + int updateAutoSplitWork(String orderCode); + + int updateAutoSplitOrder(String orderCode); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java index a7d4e35e..3cc78210 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java @@ -89,4 +89,6 @@ public interface ProOrderWorkorderBatchMapper { List checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List newbatchs); List getProdLineList(); + + int insertWorkorderBatchs(@Param("list") List workBatchs); } 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 daf7cfa4..a12d16ed 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 @@ -9,6 +9,7 @@ import com.op.system.api.domain.dto.MesPrepareDetailDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -217,10 +218,18 @@ public interface ProOrderWorkorderMapper { int updateCheckTaskBatch(CheckTaskBatchDTO checkTaskBatchDTO); - Long getLineProductInfo(ProOrder proOrder); + ProLine getLineProductInfo(ProOrder proOrder); String getProcessCode(String routeCode); int insertWorkorders(@Param("list") List workorders); + + BaseProduct getProductInfo(ProOrder proOrder); + + BigDecimal getQuaRatio(String productCode); + + List selectFirWorkOrderCG(String id); + + List selectChildWorkOrderCG(String workorderCode); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java index ee548b89..7debc0a6 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java @@ -149,4 +149,10 @@ public interface IProOrderService { ProOrder getCanProductLine(ProOrder proOrder); R autoSplitOrder(ProOrder proOrder); + + AjaxResult getWorkOrderListCG(String id); + + R autoSplitOrderCancel(ProOrder proOrder); + + R autoSplitOrderOk(ProOrder proOrder); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index 2430371a..a887f7ae 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -416,6 +416,99 @@ public class ProOrderServiceImpl implements IProOrderService { } } + /**辅助排产结果查看**/ + @Override + @DS("#header.poolName") + public AjaxResult getWorkOrderListCG(String id) { + // 通过订单id查询所有母工单信息list + List proOrderWorkorderList = proOrderWorkorderMapper.selectFirWorkOrderCG(id); + + for (ProOrderWorkorder proOrderWorkorder : proOrderWorkorderList) { + formatProOrderWorkorderCG(proOrderWorkorder); + } + + return success(proOrderWorkorderList); + } + + @Override + @DS("#header.poolName") + public R autoSplitOrderCancel(ProOrder proOrder) { + ProOrder order = proOrder; + /**pro_order_workorder_batch**/ + int n = proOrderMapper.deleteAutoSplitWorkBatch(proOrder.getOrderCode()); + logger.info("n:"+n); + + /**pro_order_workorder**/ + int m = proOrderMapper.deleteAutoSplitWork(proOrder.getOrderCode()); + logger.info("m:"+m); + + return R.ok(); + } + + @Override + @DS("#header.poolName") + public R autoSplitOrderOk(ProOrder proOrder) { + ProOrder order = proOrder; + /**pro_order_workorder_batch**/ + int n = proOrderMapper.updateAutoSplitWorkBatch(proOrder.getOrderCode()); + logger.info("n:"+n); + + /**pro_order_workorder**/ + int m = proOrderMapper.updateAutoSplitWork(proOrder.getOrderCode()); + logger.info("m:"+m); + + /**pro_order**/ + int s = proOrderMapper.updateAutoSplitOrder(proOrder.getOrderCode()); + logger.info("s:"+s); + return R.ok(); + } + + /** + * 格式化工单信息(递归处理) + * + * @param proOrderWorkorder + */ + private void formatProOrderWorkorderCG(ProOrderWorkorder proOrderWorkorder) { + + StringBuilder prodLineName = new StringBuilder(""); + StringBuilder equipCods = new StringBuilder("'"); + JSONArray codeArray = JSONArray.parseArray(proOrderWorkorder.getProdLineCode()); + for(int c=0;c equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.substring(1));//设备字典 + for (int c = 0; c < codeArray.size(); c++) { + String equipCode = codeArray.getJSONArray(c).getString(1); + prodLineName.append(equipMap.get(equipCode).getLabel() + ","); + } + + proOrderWorkorder.setProdLineCode(prodLineName.toString()); + + // 通过工单id查询批次号 + List batchCodeList = proOrderMapper.selectBatchCodesByIdCG(proOrderWorkorder.getWorkorderId()); + List batchCodes = new ArrayList<>(); + List batchNums = new ArrayList<>(); + // 格式化数据 + for (ProOrderWorkorderBatch batchCode : batchCodeList) { + batchCodes.add(new StringBuilder(batchCode.getBatchCode()).append(";")); + batchNums.add(new StringBuilder(batchCode.getBatchQuantity()+"").append(";")); + } + + proOrderWorkorder.setBatchCodeList(batchCodes); + proOrderWorkorder.setBatchNumList(batchNums); + + // 通过母工单workorder_id查询子工单 + List childWorkorders = proOrderWorkorderMapper.selectChildWorkOrderCG(proOrderWorkorder.getWorkorderCode()); + if (!childWorkorders.isEmpty()) { + for (ProOrderWorkorder childWorkorder : childWorkorders) { + formatProOrderWorkorderCG(childWorkorder); // 递归处理子工单 + } + proOrderWorkorder.setChildren(childWorkorders); // 设置子工单列表 + } + } + /** * 获取当前订单信息列表 * @@ -1235,98 +1328,135 @@ public class ProOrderServiceImpl implements IProOrderService { @DS("#header.poolName") public R autoSplitOrder(ProOrder proOrder) { -// Date nowTime = DateUtils.getNowDate();//公共时间 -// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); -// String key = "#header.poolName"; -// proOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_","")); -// proOrder.setCreateTime(nowTime); -// //订单总量 -// Long orderQua = proOrder.getQuantity(); -// //有几个设备就有几个工单 -// for(int i=0;i workorders = new ArrayList<>(); -// List workorderBatches = new ArrayList<>(); -// -// proOrder.setLineCode(proOrder.getLineCodes()[i]); -// Long efficiency = proOrderWorkorderMapper.getLineProductInfo(proOrder);//线体产能 -// if(efficiency==null){ -// break; -// logger.error("线体"+proOrder.getLineCodes()[i]+"产能"+efficiency+"无法生产"); -// } -// if(efficiency < orderQua){ -// proOrder.setQuantitySplit(efficiency); -// }else{ -// proOrder.setQuantitySplit(orderQua); -// } -// orderQua = orderQua - efficiency;//消耗订单总数量 -// List sonOrders = (List)proOrder.getChildren(); -// if(CollectionUtils.isEmpty(sonOrders)){//1层订单 -// proOrder.setEndFlag(1); -// } -// int endCode = getEndCode(proOrder.getId()); -// String belongWorkOrder = proOrder.getOrderCode()+"-"+endCode; -// proOrder.setBelongWorkOrder(belongWorkOrder); -// proOrder.setWorkerOrder(belongWorkOrder); -// proOrder.setParentOrder("0"); -// ProOrderWorkorder pworkOrder = getWorkOrderByOrder(proOrder);//TODO; -// //父级 -// workorders.add(pworkOrder); -// -// /**pro_order_workorder_batch**/ -// String parentWorkOrder = belongWorkOrder; -// while(!CollectionUtils.isEmpty(sonOrders)){ -// ProOrder sonOrder = sonOrders.get(0); -// sonOrder.setBelongWorkOrder(belongWorkOrder); -// endCode = getEndCode(proOrder.getId()); -// String sworkOrderCode = sonOrder.getOrderCode()+"-"+endCode; -// sonOrder.setBelongWorkOrder(belongWorkOrder); -// sonOrder.setWorkerOrder(sworkOrderCode); -// sonOrder.setParentOrder(parentWorkOrder); -// sonOrders = (List)sonOrder.getChildren(); -// if(CollectionUtils.isEmpty(sonOrders)){//1层订单 -// sonOrder.setEndFlag(1); -// } -// ProOrderWorkorder sworkOrder = getWorkOrderByOrder(sonOrder);//TODO; -// workorders.add(sworkOrder); -// parentWorkOrder = sworkOrderCode; -// } -// -// /**pro_order_workorder**/ -// if(!CollectionUtils.isEmpty(workorders)){ -// int pm = proOrderWorkorderMapper.insertWorkorders(workorders); -// System.out.println("pm:"+pm); -// } -// -// //拆批次 -// Long pworkOrderQua = proOrder.getQuantitySplit();//工单数量 -// ProOrderWorkorderBatch workBatch = null; -// int batchNum = 1; -// while(pworkOrderQua>0){ -// workBatch = new ProOrderWorkorderBatch(); -// workBatch.setBatchQuantity(0L); -// List batchCode = StringUtils.batchAutoCreate(proOrder.getFactoryCode(), -// proOrder.getLineCode(), -// DateUtils.dateTime("yyyy-MM-dd",proOrder.getProductDate()), -// proOrder.getAtrr2().substring(proOrder.getAtrr2().length()-1), -// "0",batchNum++); -// workBatch.setBatchCode(batchCode); -// workorderBatches.add(workBatch); -// } -// /**pro_order_workorder_batch**/ -// if(!CollectionUtils.isEmpty(workorderBatches)) { -// int pn = proOrderWorkorderBatchMapper.insertWorkorderBatchs(workBatch); -// System.out.println("pn:"+pn); -// } -// } + Date nowTime = DateUtils.getNowDate();//公共时间 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + proOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_","")); + proOrder.setCreateTime(nowTime); + //订单总量 + proOrder.setQuantitySplit(proOrder.getQuantitySplit()==null?0L:proOrder.getQuantitySplit()); + Long orderQua = proOrder.getQuantity()-proOrder.getQuantitySplit(); + //有几个设备就有几个工单 + for(int i=0;i workorders = new ArrayList<>(); + + proOrder.setLineCode(proOrder.getLineCodes()[i]); + ProLine plineInfo = proOrderWorkorderMapper.getLineProductInfo(proOrder);//线体母单产品产能和线体代码 + if(plineInfo==null){ + logger.error("线体"+proOrder.getLineCodes()[i]+"产能"+plineInfo.getEfficiency()+"无法生产"); + break; + } + Long efficiency = plineInfo.getEfficiency(); + if(efficiency < orderQua){ + proOrder.setQuantitySplit(efficiency); + }else{ + proOrder.setQuantitySplit(orderQua); + } + orderQua = orderQua - proOrder.getQuantitySplit();//消耗订单总数量 + if(CollectionUtils.isEmpty(proOrder.getChildren())){//1层订单 + proOrder.setEndFlag(1); + } + int endCode = getEndCode(proOrder.getId()); + String belongWorkOrder = proOrder.getOrderCode()+"-"+endCode; + proOrder.setBelongWorkOrder(belongWorkOrder); + proOrder.setWorkerOrder(belongWorkOrder); + proOrder.setParentOrder("0"); + ProOrderWorkorder pworkOrder = getWorkOrderByOrder(proOrder,proOrder);//TODO; + //父级 + workorders.add(pworkOrder); + + /**pro_order_workorder_batch**/ + String parentWorkOrder = belongWorkOrder; + + ProOrder order = proOrder; + while(!CollectionUtils.isEmpty(order.getChildren())){ + // 解决方案就是将list再次转为json串,然后由json串再转为list + String s = JSON.toJSONString(order.getChildren()); + List oragainzation = JSON.parseArray(s, ProOrder.class); + ProOrder sonOrder = oragainzation.get(0); + sonOrder.setBelongWorkOrder(belongWorkOrder); + String sworkOrderCode = sonOrder.getOrderCode()+"-"+(++endCode); + sonOrder.setBelongWorkOrder(belongWorkOrder); + sonOrder.setWorkerOrder(sworkOrderCode); + sonOrder.setParentOrder(parentWorkOrder); + sonOrder.setQuantitySplit(sonOrder.getQuantity()); + if(CollectionUtils.isEmpty(sonOrder.getChildren())){ + sonOrder.setEndFlag(1); + } + ProOrderWorkorder sworkOrder = getWorkOrderByOrder(sonOrder,proOrder);//TODO; + workorders.add(sworkOrder); + order = sonOrder; + parentWorkOrder = sworkOrderCode; + } + + /**pro_order_workorder**/ + if(!CollectionUtils.isEmpty(workorders)){ + //计算子单拆分数量 + for(int wm=0;wm workorderBatches0 = getBatchList(proOrder);//TODO; + List workBatchs = new ArrayList<>(); + for(int m=0;m getBatchList(ProOrder proOrder){ + List workorderBatches = new ArrayList<>(); + Long pworkOrderQua = proOrder.getQuantitySplit();//母工单数量 + BaseProduct batchQua0 = proOrderWorkorderMapper.getProductInfo(proOrder);//母单标准批次产能和几合一 + ProOrderWorkorderBatch workBatch = null; + while(pworkOrderQua>0){ + workBatch = new ProOrderWorkorderBatch(); + workBatch.setCreateBy(SecurityUtils.getUsername()); + workBatch.setCreateTime(proOrder.getCreateTime()); + if(batchQua0.getBatchQuaStandar().longValue()<= pworkOrderQua){ + workBatch.setBatchQuantity(batchQua0.getBatchQuaStandar().longValue()); + }else{ + workBatch.setBatchQuantity(pworkOrderQua); + } + workorderBatches.add(workBatch); + pworkOrderQua = pworkOrderQua - batchQua0.getBatchQuaStandar().longValue(); + } + + //获取批次号集合 + List batchCodes = StringUtils.batchAutoCreate(proOrder.getFactoryCode(), + proOrder.getProdSpc(), + DateUtils.dateTime("yyyy-MM-dd",proOrder.getProductDate()), + proOrder.getAtrr2().substring(proOrder.getAtrr2().length()-1), + "0",workorderBatches.size()); + + for(int n=0;n lines = new ArrayList<>(); List proLines = proOrderMapper.getSelectLineLevel1(proOrder); //订单总量 - BigDecimal orderQuality = new BigDecimal(proOrder.getQuantity()); + proOrder.setQuantitySplit(proOrder.getQuantitySplit()==null?0L:proOrder.getQuantitySplit()); + BigDecimal orderQuality = new BigDecimal(proOrder.getQuantity()).subtract(new BigDecimal(proOrder.getQuantitySplit())); BigDecimal consumeQuality = BigDecimal.ZERO; for(ProOrder pline:proLines){ lines.add(pline.getLineCode()); @@ -1382,8 +1546,13 @@ public class ProOrderServiceImpl implements IProOrderService { // for(int c=0;c - + + insert into pro_order @@ -409,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 @@ -424,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 a99bb4bc..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' + + - + - + select mlp.efficiency efficiency, + bp.dh from mes_line_product mlp + left join base_equipment bp on mlp.line_code = bp.equipment_code where mlp.del_flag = '0' and product_code = #{prodCode} - and mlp.line_code = #{lineCode} + and mlp.line_code = #{lineCode} and bp.del_flag = '0' + + insert into mes_prepare_detail @@ -760,7 +783,7 @@ ( #{d.workorderId},#{d.workorderCode},#{d.orderId},#{d.orderCode},#{d.productCode}, - #{d.productName},#{d.unit},#{d.quantitySplit},#{d.routeCode},#{d.prodLineCodeArray}, + #{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} From fe49dcaa8e941e06912f2a204c7530299793e8e5 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Fri, 28 Jun 2024 10:45:12 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E8=B4=A8=E6=A3=80=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=BB=84=EF=BC=8C=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QcCheckTypeProjectController.java | 86 +++++++++++++++- .../quality/domain/QcMaterialGroupDetail.java | 13 ++- .../mapper/QcCheckTypeProjectMapper.java | 7 +- .../quality/mapper/QcMaterialGroupMapper.java | 2 + .../service/IQcCheckTypeProjectService.java | 4 + .../impl/QcCheckTypeProjectServiceImpl.java | 97 +++++++++++++++++++ .../quality/QcCheckTypeProjectMapper.xml | 4 + .../mapper/quality/QcMaterialGroupMapper.xml | 3 + 8 files changed, 207 insertions(+), 9 deletions(-) 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/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/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/resources/mapper/quality/QcCheckTypeProjectMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml index b202ef12..3472c515 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml @@ -315,4 +315,8 @@ where bp.product_code like concat('%',#{materialCode},'%') and bp.del_flag = '0' + 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} + From 366fda79dced0d3796f36dd3f3ef8e2fbbee8782 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Fri, 28 Jun 2024 14:28:39 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E8=B4=A8=E6=A3=80=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=BB=84=EF=BC=8C=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/op/plan/domain/BaseProduct.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/BaseProduct.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/BaseProduct.java index 8c01b1f1..6059b47b 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/BaseProduct.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/BaseProduct.java @@ -1,11 +1,31 @@ package com.op.plan.domain; +import java.math.BigDecimal; + // 订单-物料实体类 public class BaseProduct { private String productId; private String productCode; private String productDescZh; private String mtart; + private BigDecimal batchQuaStandar; + private BigDecimal umrez; + + public BigDecimal getBatchQuaStandar() { + return batchQuaStandar; + } + + public void setBatchQuaStandar(BigDecimal batchQuaStandar) { + this.batchQuaStandar = batchQuaStandar; + } + + public BigDecimal getUmrez() { + return umrez; + } + + public void setUmrez(BigDecimal umrez) { + this.umrez = umrez; + } @Override public String toString() { From c3a5f588bcc13d326650293ff0764ac1ca49ea8d Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Fri, 28 Jun 2024 14:28:48 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E8=B4=A8=E6=A3=80=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=BB=84=EF=BC=8C=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/common/core/domain/WechartDTO.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java b/op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java new file mode 100644 index 00000000..03d36c3c --- /dev/null +++ b/op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java @@ -0,0 +1,97 @@ +package com.op.common.core.domain; + +import java.util.Date; + +public class WechartDTO { + private String factory; + private String ymd; + private String equCode; + private String equName; + private String productName; + private String productCode; + private String workorderCodeSap; + private Date createTime; + private String userId; + private String text; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public String getYmd() { + return ymd; + } + + public void setYmd(String ymd) { + this.ymd = ymd; + } + + public String getEquCode() { + return equCode; + } + + public void setEquCode(String equCode) { + this.equCode = equCode; + } + + public String getEquName() { + return equName; + } + + public void setEquName(String equName) { + this.equName = equName; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + +} From c3f560b11261461dbf3ca2c937b089f6070609db Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Fri, 28 Jun 2024 14:29:41 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/common/core/domain/WechartDTO.java | 97 ------------------- 1 file changed, 97 deletions(-) delete mode 100644 op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java b/op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java deleted file mode 100644 index 03d36c3c..00000000 --- a/op-common/op-common-core/src/main/java/com/op/common/core/domain/WechartDTO.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.op.common.core.domain; - -import java.util.Date; - -public class WechartDTO { - private String factory; - private String ymd; - private String equCode; - private String equName; - private String productName; - private String productCode; - private String workorderCodeSap; - private Date createTime; - private String userId; - private String text; - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public String getFactory() { - return factory; - } - - public void setFactory(String factory) { - this.factory = factory; - } - - public String getYmd() { - return ymd; - } - - public void setYmd(String ymd) { - this.ymd = ymd; - } - - public String getEquCode() { - return equCode; - } - - public void setEquCode(String equCode) { - this.equCode = equCode; - } - - public String getEquName() { - return equName; - } - - public void setEquName(String equName) { - this.equName = equName; - } - - public String getProductName() { - return productName; - } - - public void setProductName(String productName) { - this.productName = productName; - } - - public String getProductCode() { - return productCode; - } - - public void setProductCode(String productCode) { - this.productCode = productCode; - } - - public String getWorkorderCodeSap() { - return workorderCodeSap; - } - - public void setWorkorderCodeSap(String workorderCodeSap) { - this.workorderCodeSap = workorderCodeSap; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - -} From fdfbce95aea06d3975f5dcbf091563e20e67cdb8 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Sun, 30 Jun 2024 08:34:50 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E6=B5=81=E7=A8=8Bid=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/open/controller/OpenController.java | 2 +- .../impl/QcCheckUnqualifiedServiceImpl.java | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java index e10d018d..a2ac3719 100644 --- a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java +++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java @@ -145,7 +145,7 @@ public class OpenController extends BaseController { } /** - * ===============ZL0010-来料检验不合格控制流程提交 :"workflowId": 26235============= + * ===============ZL0010-来料检验不合格控制流程提交 :"workflowId": 113454============= *

*

* SQR 申请人、CQ 厂区、 OEMCM 厂名 、 LLLB 来料类别【0、1】、MATNR 物料编号、MAKTX 物料名称、suppliernum 供应商编码 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; } } From 8d926cfb7cba3a78c9826b82ca1c40f7ca667d8a Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Mon, 1 Jul 2024 11:18:55 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E6=A6=84=E8=8F=8A=E6=97=A5=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E6=8A=A5=E8=A1=A8=E5=AF=BC=E5=87=BA=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E3=80=81=E6=92=A4=E9=94=80=E6=8A=A5=E5=B7=A5=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8D=E7=AE=97=E5=85=A5=E8=AE=A1=E7=AE=97=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/mes/domain/vo/MesDailyReportVo.java | 52 +++++++++---------- .../mapper/mes/MesReportWorkMapper.xml | 2 + 2 files changed, 28 insertions(+), 26 deletions(-) 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 dde99c19..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 BigDecimal useMan; - // 标准效率 - @Excel(name = "产线标准效率") - private BigDecimal efficiency; - @Excel(name = "工单号") - private String workorderCode; + 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() { 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 86d9c912..4f523bee 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,6 +709,7 @@ 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'