diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index 97ab0a3c3..0a84fae2b 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -36,7 +36,7 @@ public interface RemoteSapService { /**回传sap母工单**/ @PostMapping("/sap/sapCreateOrder") - public R>> SapCreateOrder(@RequestBody List sapCreateOrderList); + public R> SapCreateOrder(@RequestBody List sapCreateOrderList); /**关闭订单**/ @PostMapping("/sap/sapCloseOrder") diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index 1cafde652..e9709b2a3 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -35,7 +35,7 @@ public class RemoteSapFallbackFactory implements FallbackFactory>> SapCreateOrder(List sapCreateOrderList) { + public R> SapCreateOrder(List sapCreateOrderList) { return R.fail("回传sap工单失败:" + throwable.getMessage()); } 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/controller/MesReportWorksController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java index a015bce3a..3d9c82fc4 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorksController.java @@ -26,8 +26,9 @@ public class MesReportWorksController extends BaseController { @RequiresPermissions("mes:reportWork:lists") @GetMapping("/lists") public TableDataInfo lists(MesReportWork mesReportWork) { - startPage(); - List hzlist = mesReportWorksService.getReportWorksList(mesReportWork); - return getDataTable(hzlist); +// startPage(); +// List hzlist = mesReportWorksService.getReportWorksList(mesReportWork); +// return getDataTable(hzlist); + return null; } } 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/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index a5189bd3c..d4dd9335e 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 @@ -136,4 +136,6 @@ public interface MesReportWorkMapper { List getPutInOrderList(MesReportWork mesReportWorks); ProOrderWorkorder getSonWorkOrder(String workorderCode); + + public MesReportWork getReportWorkHz1(MesReportWork mesReportWork); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorksMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorksMapper.java index 0ce62aecb..e60ff0024 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorksMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorksMapper.java @@ -9,7 +9,7 @@ import java.util.List; @Mapper public interface MesReportWorksMapper { - List getReportWorkList(MesReportWork mesReportWork); + //List getReportWorkList(MesReportWork mesReportWork); } 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/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index 1f90b4aa5..34e09174f 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -287,6 +287,30 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { /**** * 报工顺序:先子单报工,然后母单报工 * 关闭母工单,关闭子工单 + * * 一层---------------------------------------- + * * 工单进行报工的时候公式调整如下(数值单位不用管): + * * 机器=开机时长 + * * 人工 = 用人数*机器(开机时长) + * * 折旧 = 机器 + * * 其它 = 人工 + * * 二层---------------------------------------- + * * 子单进行报工的时候公式调整如下(数值单位不用管): + * * 机器=sum(工时数/用人数) + * * 人工 = 用人数*机器 + * * 折旧 = 机器 + * * 其它 = 人工 + * *

+ * * 母单进行报工的时候公式调整如下: + * * 机器=子单机器 + * * 人工 = 管理系统维护的用人数*机器 + * * 折旧 = 机器 + * * 其它 = 人工 + * * 三层及其以上---------------------------------------- + * * 工单进行报工的时候公式调整如下(数值单位不用管),根据上位机用户真实填的来: + * * 机器=开机时长 + * * 人工 = 人工 + * * 折旧 = 机器 + * * 其它 = 人工 * @param mesReportWork * @return */ @@ -297,68 +321,111 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { DynamicDataSourceContextHolder.push(mesReportWork.getFactoryCode());// 这是数据源的key } - //根据belong_work_order找到sap工单 + //根据belong_work_order找到sap工单(子子母) List workOrders = mesReportWorkMapper.getSapWorkOrder(mesReportWork.getWorkorderCode()); if (CollectionUtils.isEmpty(workOrders)) { return R.fail("子母工单信息缺失"); } R sapRson = null; - /**子工单先报工,然后母工单报工:workOrders内容就是-子子母**/ - for(MesReportWork workOrder:workOrders){ + if(workOrders.size()==1){ + /**(一层报工)工单报工**/ mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 mesReportWork.setProdType("prod"); - mesReportWork.setWorkorderCode(workOrder.getWorkorderCode()); - MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); - if (sHzWorks == null) { - return R.fail(workOrder.getWorkorderCode()+"未查询到报工单"); + mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); + MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz1(mesReportWork); + if(sHzWorks==null){ + return R.fail("未查询到一层报工单"); } //子工单报工 - logger.info("==========================工单("+sHzWorks.getWorkorderCodeSap()+")报工开始"); - sapRson = this.reportHzToSap(sHzWorks); - logger.info("==========================工单("+sHzWorks.getWorkorderCodeSap()+")报工结束:" - + JSONObject.toJSONString(sapRson)); - if (sapRson.getCode() == 200) { + logger.info("==========================一层工单报工开始"); + sapRson = this.reportHzToSap(sHzWorks,1); + logger.info("==========================一层工单报工结束:"+JSONObject.toJSONString(sapRson)); + }else if(workOrders.size()==2){ + /**(两层报工)子工单先报工,然后母工单报工**/ + mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 + mesReportWork.setProdType("prod"); + mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode()); + MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); + if(sHzWorks==null){ + return R.fail("未查询到子报工单"); + } + //子工单报工 + logger.info("==========================子工单报工开始"); + sapRson = this.reportHzToSap(sHzWorks,2); + logger.info("==========================子工单报工结束:"+JSONObject.toJSONString(sapRson)); + if(sapRson.getCode()== 200){ + //一定是子单报工成功返回后,再母单报工 + mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); + MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork); + if(pHzWork==null){ + return R.fail("未查询到母报工单"); + } try { Thread.sleep(3000); - } catch (Exception e) { + }catch (Exception e){ e.printStackTrace(); } - //最终报工标识且sap报工成功:关闭子母工单 - //MesReportWork endReport = mesReportWorkMapper.getEndReport(pHzWork); - }else{ - //报工不成功跳出循环 - break; + //母工单报工 + logger.info("==========================母工单报工开始"); + pHzWork.setQuantityFeedback(sHzWorks.getQuantityFeedback()); + pHzWork.setSac1(sHzWorks.getSac1()); + R sapR = this.reportHzToSap(pHzWork,2); + logger.info("==========================母工单报工结束"+JSONObject.toJSONString(sapR)); + return sapR; + } + + }else if(workOrders.size()>=3){ + for(MesReportWork workOrder:workOrders){ + mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 + mesReportWork.setProdType("prod"); + mesReportWork.setWorkorderCode(workOrder.getWorkorderCode()); + MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz1(mesReportWork); + if (sHzWorks == null) { + return R.fail(workOrder.getWorkorderCode()+"未查询到报工单"); + } + //三层以上工单报工 + logger.info("==========================三层以上工单("+sHzWorks.getWorkorderCodeSap()+")报工开始"); + sapRson = this.reportHzToSap(sHzWorks,3); + logger.info("==========================三层以上工单("+sHzWorks.getWorkorderCodeSap()+")报工结束:" + + JSONObject.toJSONString(sapRson)); + if (sapRson.getCode() == 200) { + try { + Thread.sleep(3000); + } catch (Exception e) { + e.printStackTrace(); + } + //最终报工标识且sap报工成功:关闭子母工单 + //MesReportWork endReport = mesReportWorkMapper.getEndReport(pHzWork); + }else{ + //报工不成功跳出循环 + break; + } } } - return sapRson; } /** - * 子单进行报工的时候公式调整如下(数值单位不用管): - * 机器=sum(工时数/用人数) - * 人工 = 用人数*机器 - * 折旧 = 机器 - * 其它 = 人工 - *

- * 母单进行报工的时候公式调整如下: - * 机器=子单机器 - * 人工 = 管理系统维护的用人数*机器 - * 折旧 = 机器 - * 其它 = 人工 * * @param workOrder * @return */ - private R reportHzToSap(MesReportWork workOrder) { + private R reportHzToSap(MesReportWork workOrder,int cengji) { Date nowTime = DateUtils.getNowDate(); SapRFW sapRFW = new SapRFW(); sapRFW.setAufnr(workOrder.getWorkorderCodeSap());//虚拟工单号 sapRFW.setGamng(workOrder.getQuantityFeedback().toString());//报工数量 SapRFW.lt_gs ltgs = new SapRFW.lt_gs();//生产订单报工工时修改 ltgs.setConf_activity1(workOrder.getSac1());//机器 - BigDecimal newMan = new BigDecimal(workOrder.getSac1()) - .multiply(new BigDecimal(workOrder.getSac2())); + BigDecimal newMan = null; + if(cengji == 3){ + //订单是三层的情况 + newMan = new BigDecimal(workOrder.getSac2()); + }else{ + //订单是一层、二层的情况 + newMan = new BigDecimal(workOrder.getSac1()) + .multiply(new BigDecimal(workOrder.getSac2())); + } ltgs.setConf_activity2(newMan.toString());//人工 ltgs.setConf_activity3(workOrder.getSac1());//折旧 ltgs.setConf_activity4(newMan.toString());//其它 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/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java index 404e34c18..fac8fdc25 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java @@ -19,6 +19,6 @@ public class MesReportWorksServiceImpl implements IMesReportWorksService { @Override @DS("#header.poolName") public List getReportWorksList(MesReportWork mesReportWork) { - return mesReportWorksMapper.getReportWorkList(mesReportWork); + return null;//mesReportWorksMapper.getReportWorkList(mesReportWork); } } 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/MesRWMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesRWMapper.xml index 16dd96ce6..7f96c7c3a 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesRWMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesRWMapper.xml @@ -90,8 +90,8 @@ - + 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 + - - select work_code AS workCode, work_person AS workPerson, @@ -684,8 +682,7 @@ and del_flag = '0' - select order_code AS orderCode, CONCAT(plan_loop, plan_loop_type) AS planLoop, diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/BaseProductMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/BaseProductMapper.xml index 2b0bdf6a0..204cd45e9 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/BaseProductMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/BaseProductMapper.xml @@ -73,19 +73,13 @@ - and supplier_code like concat('%', #{supplierCode}, - '%') - + and supplier_code like concat('%', #{supplierCode},'%') and zh_desc like concat('%', #{zhDesc}, '%') and en_desc = #{enDesc} and supplier_type = #{supplierType} @@ -56,9 +54,7 @@ and address = #{address} and postcode = #{postcode} and contact like concat('%', #{contact}, '%') - and contact_phone like concat('%', #{contactPhone}, - '%') - + and contact_phone like concat('%', #{contactPhone},'%') and contact_position = #{contactPosition} and contact_email = #{contactEmail} and active_flag = #{activeFlag} @@ -67,6 +63,7 @@ and user_defined3 = #{userDefined3} and del_flag = '0' + order by supplier_code asc + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsWhiteEmbryoMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsWhiteEmbryoMapper.xml index f1e3623ba..587658c98 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsWhiteEmbryoMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsWhiteEmbryoMapper.xml @@ -12,7 +12,7 @@ - + @@ -54,7 +54,7 @@ and Material_Desc = #{materialDesc} and Plan_Date = #{planDate} and Plan_Number = #{planNumber} - and Unit = #{Unit} + and Unit = #{unit} and Reality_Number = #{realityNumber} and Order_Status = #{orderStatus} and User_Defined1 = #{userDefined1} @@ -105,7 +105,7 @@ Material_Desc, Plan_Date, Plan_Number, - Unit, + Unit, Reality_Number, Order_Status, User_Defined1, @@ -141,7 +141,7 @@ #{materialDesc}, #{planDate}, #{planNumber}, - #{Unit}, + #{unit}, #{realityNumber}, #{orderStatus}, #{userDefined1}, @@ -180,7 +180,7 @@ Material_Desc = #{materialDesc}, Plan_Date = #{planDate}, Plan_Number = #{planNumber}, - Unit = #{Unit}, + Unit = #{unit}, Reality_Number = #{realityNumber}, Order_Status = #{orderStatus}, User_Defined1 = #{userDefined1}, @@ -221,4 +221,9 @@ #{ID} + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/SysCustomerMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/SysCustomerMapper.xml index fe8b83810..ef3e37f7b 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/SysCustomerMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/SysCustomerMapper.xml @@ -45,10 +45,8 @@ and client_id = #{clientId} - and client_code like concat('%', #{clientCode}, '%') - - and client_name like concat('%', #{clientName}, '%') - + and client_code like concat('%', #{clientCode}, '%') + and client_name like concat('%', #{clientName}, '%') and client_nick = #{clientNick} and client_en = #{clientEn} and client_des = #{clientDes} @@ -72,6 +70,7 @@ and attr4 = #{attr4} and del_flag = '0' + order by client_code asc + + WHERE wl_code=#{wlCode} AND material_code=#{materialCode} AND active_flag='1' + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsSnMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsSnMapper.xml index daa01c71c..4689804ce 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsSnMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsSnMapper.xml @@ -190,4 +190,13 @@ #{emOrderInSnId} + + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml index 37ab85f9a..78d48926a 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml @@ -12,7 +12,7 @@ - + @@ -55,7 +55,7 @@ and Material_Desc = #{materialDesc} and Plan_Date = #{planDate} and Plan_Number = #{planNumber} - and Unit = #{Unit} + and Unit = #{unit} and Reality_Number = #{realityNumber} and Order_Status = #{orderStatus} and User_Defined1 = #{userDefined1} @@ -113,7 +113,7 @@ Material_Desc, Plan_Date, Plan_Number, - Unit, + Unit, Reality_Number, Order_Status, User_Defined1, @@ -149,7 +149,7 @@ #{materialDesc}, #{planDate}, #{planNumber}, - #{Unit}, + #{unit}, #{realityNumber}, #{orderStatus}, #{userDefined1}, @@ -188,7 +188,7 @@ Material_Desc = #{materialDesc}, Plan_Date = #{planDate}, Plan_Number = #{planNumber}, - Unit = #{Unit}, + Unit = #{unit}, Reality_Number = #{realityNumber}, Order_Status = #{orderStatus}, User_Defined1 = #{userDefined1}, @@ -238,4 +238,52 @@ Last_Update_Date = now() where Order_Code=#{orderCode} + + + + + +