diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java index 90e34b885..63237d5f7 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkConsumeController.java @@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse; import com.op.common.core.utils.uuid.IdUtils; import com.op.mes.domain.MesReportWork; +import com.op.mes.domain.MesReportWorkConsumeTabs; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseTeamTDTO; @@ -148,6 +149,16 @@ public class MesReportWorkConsumeController extends BaseController { return rlist; } + /** + * 获取母子报工物料损耗记录 + **/ + @RequiresPermissions("mes:reportWork:report") + @GetMapping("/getAllLevelConsumeList") + public List getAllLevelConsumeList(MesReportWorkConsume mesReportWorkConsume) { + List rlist = mesReportWorkConsumeService.getAllLevelConsumeList(mesReportWorkConsume); + return rlist; + } + @PostMapping("/submitConsumePS") public AjaxResult submitConsumePS(@RequestBody List mesReportWorkConsume) { return toAjax(mesReportWorkConsumeService.submitConsumePS(mesReportWorkConsume)); diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index 2fbba6f87..37521890e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -13,15 +13,21 @@ import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.poi.ExcelMapUtil; import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.security.utils.SecurityUtils; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.SysFactoryDto; +import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; +import com.op.system.api.domain.dto.MesPrepareDTO; +import com.op.system.api.domain.dto.MesPrepareDetailDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; +import com.op.system.api.domain.sap.SapMaterialPreparation; import org.apache.commons.lang.StringUtils; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -46,10 +52,11 @@ import com.op.common.core.utils.poi.ExcelUtilDailyReport; * @date 2023-08-24 */ @RestController -@RequestMapping("/reportWork") +@RequestMapping("./reportWork") public class MesReportWorkController extends BaseController { @Autowired private IMesReportWorkService mesReportWorkService; + /** * 查询报工报表列表 */ @@ -444,7 +451,11 @@ public class MesReportWorkController extends BaseController { e.printStackTrace(); } } - /**获取母子报工记录**/ + /**获取最新领料单**/ + @PostMapping("/getNewPrepareData") + public List getNewPrepareData(@RequestBody MesPrepareDetail mesPrepareDetail) { + return mesReportWorkService.getNewPrepareData(mesPrepareDetail); + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsumeTabs.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsumeTabs.java new file mode 100644 index 000000000..1d4861b2b --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsumeTabs.java @@ -0,0 +1,46 @@ +package com.op.mes.domain; + +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 生产报工物料消耗对象 mes_report_work_consume + * + * @author Open Platform + * @date 2023-08-24 + */ +public class MesReportWorkConsumeTabs extends BaseEntity { + private static final long serialVersionUID = 1L; + private String libId; + private String title; + private List libList; + + public String getLibId() { + return libId; + } + + public void setLibId(String libId) { + this.libId = libId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getLibList() { + return libList; + } + + public void setLibList(List libList) { + this.libList = libList; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java index a4b7b42ff..b27272cb0 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java @@ -28,7 +28,7 @@ public class ProOrderWorkorder extends TreeEntity { */ @Excel(name = "工单编码") private String workorderCode; - + private String workorderCodeSap; /** * 工单名称 */ @@ -209,6 +209,14 @@ public class ProOrderWorkorder extends TreeEntity { private String batchCode; private String batchId; + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + public String getBatchCode() { return batchCode; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java index 44e3eb04f..7f4fb12ad 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkConsumeService.java @@ -4,6 +4,7 @@ import java.util.List; import com.op.mes.domain.MesReportWork; import com.op.mes.domain.MesReportWorkConsume; +import com.op.mes.domain.MesReportWorkConsumeTabs; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseTeamTDTO; @@ -84,4 +85,6 @@ public interface IMesReportWorkConsumeService { int submitReportInfo(MesReportWork mesReportWork); List getBomList(MesReportWorkConsume mesReportWorkConsume); + + List getAllLevelConsumeList(MesReportWorkConsume mesReportWorkConsume); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java index dcfd6d138..3063faf24 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java @@ -10,6 +10,7 @@ import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; +import com.op.system.api.domain.dto.MesPrepareDetailDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; /** @@ -108,4 +109,6 @@ public interface IMesReportWorkService { List getPutInOrderList(MesReportWork mesReportWorks); List getAllLevelReportList(MesReportWork mesReportWork); + + List getNewPrepareData(MesPrepareDetail mesPrepareDetail); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java index 67e531da3..1d6fe2d68 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java @@ -11,7 +11,7 @@ import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.security.utils.SecurityUtils; -import com.op.mes.domain.MesReportWork; +import com.op.mes.domain.*; import com.op.mes.mapper.MesReportWorkMapper; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; @@ -21,7 +21,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.mes.mapper.MesReportWorkConsumeMapper; -import com.op.mes.domain.MesReportWorkConsume; import com.op.mes.service.IMesReportWorkConsumeService; import org.springframework.util.CollectionUtils; @@ -260,4 +259,34 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer List dtos = mesReportWorkConsumeMapper.getBomList(mesReportWorkConsume); return dtos; } + + @Override + @DS("#header.poolName") + public List getAllLevelConsumeList(MesReportWorkConsume mesReportWorkConsume) { + List tabs = new ArrayList<>(); + MesReportWorkConsumeTabs pTabs = new MesReportWorkConsumeTabs(); + int i = 1; + pTabs.setLibId("consume"+i); + pTabs.setTitle("第"+i+"层工单物料损耗"); + mesReportWorkConsume.setParentOrder("0"); + List liblist0 = mesReportWorkConsumeMapper.getConsumeList(mesReportWorkConsume); + pTabs.setLibList(liblist0); + tabs.add(pTabs); + + ProOrderWorkorder sonWorkOrder = mesReportWorkMapper.getSonWorkOrder(mesReportWorkConsume.getWorkorderCode()); + while(sonWorkOrder!=null){ + int xh = ++i; + MesReportWorkConsumeTabs sTabs = new MesReportWorkConsumeTabs(); + sTabs.setLibId("consume"+xh); + sTabs.setTitle("第"+xh+"层工单物料损耗"); + mesReportWorkConsume.setWorkorderCode(sonWorkOrder.getWorkorderCode()); + List liblist = mesReportWorkConsumeMapper.getConsumeList(mesReportWorkConsume); + sTabs.setLibList(liblist); + tabs.add(sTabs); + + sonWorkOrder = mesReportWorkMapper.getSonWorkOrder(sonWorkOrder.getWorkorderCode()); + } + + return tabs; + } } 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 be5ac1cbd..b2f0a60a7 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 @@ -18,10 +18,15 @@ import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.service.IWCSInterfaceService; +import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; +import com.op.system.api.domain.dto.MesPrepareDetailDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; +import com.op.system.api.domain.sap.SapMaterialPreparation; import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.mes.mapper.MesReportWorkMapper; @@ -36,6 +41,12 @@ import org.springframework.util.CollectionUtils; */ @Service public class MesReportWorkServiceImpl implements IMesReportWorkService { + + protected Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private RemoteSapService remoteSapService; + @Autowired private MesReportWorkMapper mesReportWorkMapper; @@ -182,6 +193,50 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { return tabs; } + @Override + @DS("#header.poolName") + public List getNewPrepareData(MesPrepareDetail mesPrepareDetail) { + Date createDate = DateUtils.getNowDate(); + String workorderCodeSap = mesReportWorkMapper.getOrderByCode(mesPrepareDetail.getWorkorderCode()).getWorkorderCodeSap(); + logger.info("获取sap最新领料单:" + mesPrepareDetail.getWorkorderCode() +"["+workorderCodeSap+"]"+ "开始"); + + List sapMaterialPreparationList = remoteSapService.materialPreparation(workorderCodeSap).getData(); + if (CollectionUtils.isEmpty(sapMaterialPreparationList)) { + logger.info("sap无领料单数据:"+mesPrepareDetail.getWorkorderCode()); + } + + /**mes_prepare_detail**/ + List details = new ArrayList<>(); + + MesPrepareDetailDTO detail = null; + for (SapMaterialPreparation sap : sapMaterialPreparationList) { + detail = new MesPrepareDetailDTO(); + detail.setAttr1(sap.getRSPOS());//预留/相关需求的项目编号 + detail.setMaterialCode(sap.getMATNR());//物料号 + detail.setMaterailName(sap.getMAKTX());//物料描述(短文本) + detail.setFactoryCode(sap.getWERKS());//工厂 + detail.setLocator(sap.getLGORT());//库存地点 + detail.setNeedDate(sap.getBDTER());//组件的需求日期 + detail.setQuantity(sap.getBDMNG());////需求量 + detail.setFundQuanlity(sap.getZQLSL());//欠料数量 + detail.setUnit(sap.getMEINS());//基本计量单位 + detail.setRecoil(sap.getRGEKZ());//反冲标识 + detail.setBuyFlag(sap.getDBSKZ());//直接采购标识 + detail.setCreateBy(SecurityUtils.getUsername()); + detail.setCreateTime(createDate); + details.add(detail); + logger.info("获取sap最新领料单:" + mesPrepareDetail.getWorkorderCode() +"["+workorderCodeSap+"]" + + sap.getRSPOS() + "," + sap.getMATNR() + "," + + sap.getMAKTX() + "," + sap.getWERKS() + "," + sap.getLGORT() + "," + + sap.getBDTER() + "," + sap.getBDMNG() + "," + sap.getZQLSL() + "," + + sap.getMEINS() + "," + sap.getRGEKZ() + "," + sap.getDBSKZ() + ); + } + + logger.info("获取sap最新领料单:" + mesPrepareDetail.getWorkorderCode() +"["+workorderCodeSap+"]" + "结束"); + return details; + } + @Override @DS("#header.poolName") public int submitReportPS(List mesReportWorks) { diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml index cbdbcf8e8..b451787bb 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml @@ -81,7 +81,7 @@ left join mes_prepare mp on ow.workorder_code = mp.workorder_code left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id where ow.belong_work_order = #{workorderCode} - order by mp.workorder_name desc + order by mpd.recoil diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml index 4ad92d762..42429401e 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml @@ -106,6 +106,7 @@ from mes_report_work_consume mrwc where mrwc.del_flag = '0' and mrwc.workorder_code = #{workorderCode} + order by mrwc.recoil + select qct.record_id, qct.check_no, qct.income_batch_no, + qct.order_no, qct.material_code, qct.material_name, qct.quality, qct.unit, + qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_loc, qct.check_status, + qct.check_man_code, qct.check_man_name,qct.check_time, qct.check_result, qct.status, + qct.create_by,qct.create_time, qct.update_by, qct.update_time, + qct.check_type,qct.sample_quality,qct.noOk_quality, + q.type_code + from qc_check_task qct + left join qc_check_type q on q.id = qct.check_type + + and qct.check_no = #{checkNo} + and qct.income_batch_no = #{incomeBatchNo} + and qct.order_no = #{orderNo} + and qct.material_code = #{materialCode} + and qct.material_name like concat('%', + #{materialName}, '%') + + and qct.supplier_code = #{supplierCode} + and qct.supplier_name like concat('%', + #{supplierName}, '%') + + and qct.income_time = #{incomeTime} + and qct.check_loc = #{checkLoc} + and qct.check_status = #{checkStatus} + and qct.check_man_code = #{checkManCode} + and qct.check_man_name like concat('%', + #{checkManName}, '%') + + and qct.check_result = #{checkResult} + and qct.status = #{status} + and qct.del_flag = #{delFlag} + and qct.factory_code = #{factoryCode} + and CONVERT(varchar(30),qct.income_time, 120) >= #{incomeTimeStart} + and #{incomeTimeEnd} > CONVERT(varchar(30),qct.income_time, 120) + and CONVERT(varchar(30),qct.check_time, 120) >= #{checkTimeStart} + and #{checkTimeEnd} > CONVERT(varchar(30),qct.check_time, 120) + and qct.check_type = #{checkType} + and q.type_code = #{typeCode} + + + + + + + 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, + check_loc, + check_status, + check_man_code, + check_man_name, + check_time, + check_result, + status, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + factory_code, + del_flag, + check_type, + noOk_quality, + sample_quality, + aNoOkquality, + bNoOkquality, + cNoOkquality, + type_code, + order_type, + + + #{recordId}, + #{checkNo}, + #{incomeBatchNo}, + #{orderNo}, + #{materialCode}, + #{materialName}, + #{quality}, + #{unit}, + #{supplierCode}, + #{supplierName}, + #{incomeTime}, + #{checkLoc}, + #{checkStatus}, + #{checkManCode}, + #{checkManName}, + #{checkTime}, + #{checkResult}, + #{status}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{factoryCode}, + #{delFlag}, + #{checkType}, + #{noOkQuality}, + #{sampleQuality}, + #{aNoOkquality}, + #{bNoOkquality}, + #{cNoOkquality}, + #{typeCode}, + #{orderType}, + + + + + update qc_check_task + + check_no = #{checkNo}, + income_batch_no = #{incomeBatchNo}, + order_no = #{orderNo}, + material_code = #{materialCode}, + material_name = #{materialName}, + quality = #{quality}, + unit = #{unit}, + supplier_code = #{supplierCode}, + supplier_name = #{supplierName}, + income_time = #{incomeTime}, + check_loc = #{checkLoc}, + check_status = #{checkStatus}, + check_man_code = #{checkManCode}, + check_man_name = #{checkManName}, + check_time = #{checkTime}, + check_result = #{checkResult}, + status = #{status}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + factory_code = #{factoryCode}, + del_flag = #{delFlag}, + check_type = #{checkType}, + noOk_quality = #{noOkQuality}, + sample_quality = #{sampleQuality}, + aNoOkquality = #{aNoOkquality}, + bNoOkquality = #{bNoOkquality}, + cNoOkquality = #{cNoOkquality}, + type_code = #{typeCode}, + order_type = #{orderType}, + + where record_id = #{recordId} + + + + delete from qc_check_task where record_id = #{recordId} + + + + delete from qc_check_task where record_id in + + #{recordId} + + + + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml index e82284584..0a130ef10 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml @@ -34,7 +34,7 @@ and attr1 = #{attr1} and del_flag = '0' - order by create_time + order by type_code