From 56fc72ff0da4b85c46e6d7721fadb674b3fab63e Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Sat, 2 Dec 2023 00:11:06 +0800 Subject: [PATCH] =?UTF-8?q?sap=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/mes/ProOrderWorkorderDTO.java | 47 +++++ .../com/op/system/api/domain/sap/SapRFW.java | 2 +- .../MesReportWorkConsumeController.java | 18 ++ .../controller/MesReportWorkController.java | 25 ++- .../com/op/mes/domain/MesPrepareDetail.java | 32 +++- .../java/com/op/mes/domain/MesReportWork.java | 128 ++++++++++++++ .../op/mes/domain/MesReportWorkConsume.java | 43 ++++- .../mapper/MesReportWorkConsumeMapper.java | 6 + .../op/mes/mapper/MesReportWorkMapper.java | 17 +- .../service/IMesReportWorkConsumeService.java | 8 + .../op/mes/service/IMesReportWorkService.java | 8 + .../service/impl/IWCInterfaceServiceImpl.java | 141 ++++++++------- .../impl/MesReportWorkConsumeServiceImpl.java | 109 ++++++++++++ .../impl/MesReportWorkServiceImpl.java | 34 ++++ .../mapper/mes/MesReportWorkConsumeMapper.xml | 46 ++++- .../mapper/mes/MesReportWorkMapper.xml | 159 +++++++++++++++-- .../op/open/controller/OpenController.java | 24 +-- .../java/com/op/open/service/OpenService.java | 2 +- .../op/open/service/impl/OpenServiceImpl.java | 160 +++++++++--------- .../service/impl/ProOrderServiceImpl.java | 38 +++-- .../impl/ProOrderWorkorderServiceImpl.java | 33 ++-- .../mapper/plan/ProOrderWorkorderMapper.xml | 6 +- .../op/quality/controller/QuaController.java | 14 ++ .../mapper/QcCheckUnqualifiedMapper.java | 8 + .../quality/QcCheckUnqualifiedMapper.xml | 12 ++ 25 files changed, 888 insertions(+), 232 deletions(-) diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java index 3652eb5a..9499fabf 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java @@ -6,6 +6,7 @@ import com.op.common.core.web.domain.TreeEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -185,6 +186,52 @@ public class ProOrderWorkorderDTO extends TreeEntity { // 供湿料计划使用 private String bucketName1; + private String workorderCodes; + private String productCodes; + private String productNames; + private BigDecimal quantitySplits; + private String units; + + public String getWorkorderCodes() { + return workorderCodes; + } + + public void setWorkorderCodes(String workorderCodes) { + this.workorderCodes = workorderCodes; + } + + public String getProductCodes() { + return productCodes; + } + + public void setProductCodes(String productCodes) { + this.productCodes = productCodes; + } + + public String getProductNames() { + return productNames; + } + + public void setProductNames(String productNames) { + this.productNames = productNames; + } + + public BigDecimal getQuantitySplits() { + return quantitySplits; + } + + public void setQuantitySplits(BigDecimal quantitySplits) { + this.quantitySplits = quantitySplits; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + public String getMaterialName1() { return materialName1; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java index 19a581c8..534fd004 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java @@ -114,7 +114,7 @@ public class SapRFW { } } - public class lt_hw{ + public static class lt_hw{ String material; String entry_qnt; 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 fc68b8da..c67141d8 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 @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.op.common.core.utils.uuid.IdUtils; +import com.op.mes.domain.MesReportWork; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseTeamTDTO; @@ -135,4 +136,21 @@ public class MesReportWorkConsumeController extends BaseController { List list = mesReportWorkConsumeService.getTeamList(dto); return list; } + + /**获取母子报工物料损耗记录**/ + @RequiresPermissions("mes:reportWork:report") + @GetMapping("/getConsumeList") + public List getConsumeList(MesReportWorkConsume mesReportWorkConsume) { + List rlist = mesReportWorkConsumeService.getConsumeList(mesReportWorkConsume); + return rlist; + } + @PostMapping("/submitConsumePS") + public AjaxResult submitConsumePS(@RequestBody List mesReportWorkConsume) { + return toAjax(mesReportWorkConsumeService.submitConsumePS(mesReportWorkConsume)); + } + /**填写报工**/ + @PostMapping("/submitReportInfo") + public AjaxResult submitReportInfo(@RequestBody MesReportWork mesReportWork) { + return toAjax(mesReportWorkConsumeService.submitReportInfo(mesReportWork)); + } } 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 bdd116a7..d70885d4 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 @@ -66,8 +66,9 @@ public class MesReportWorkController extends BaseController { // String dateEndStr = dtf.format(dateEnd)+" 00:00:00"; // mesReportWork.setCreateTimeEnd(dateEndStr);//end // } - List list = mesReportWorkService.selectMesReportWorkList(mesReportWork); - return getDataTable(list); +// List list = mesReportWorkService.selectMesReportWorkList(mesReportWork); + List hzlist = mesReportWorkService.getReportWorkHzList(mesReportWork); + return getDataTable(hzlist); } /** @@ -369,6 +370,26 @@ public class MesReportWorkController extends BaseController { return mesReportWorkService.getBatchList(ProOrderWorkorder); } + /**获取母子报工记录**/ + @RequiresPermissions("mes:reportWork:report") + @GetMapping("/getReportList") + public List getReportList(MesReportWork mesReportWork) { + List rlist = mesReportWorkService.getReportList(mesReportWork); + return rlist; + } + + @PostMapping("/submitReportPS") + public AjaxResult submitReportPS(@RequestBody List mesReportWorks) { + return toAjax(mesReportWorkService.submitReportPS(mesReportWorks)); + } + + @GetMapping("/getPrepareList") + public List getPrepareList(MesPrepareDetail mesPrepareDetail) { + List rlist = mesReportWorkService.getPrepareList(mesPrepareDetail); + return rlist; + } + + public static void main(String args[]){ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); try { diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java index 9550e625..3778a9c9 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java @@ -29,7 +29,7 @@ public class MesPrepareDetail extends BaseEntity { /** 物料名称 */ @Excel(name = "物料名称") - private String materailName; + private String materialName; /** 规格型号 */ @Excel(name = "规格型号") @@ -83,6 +83,24 @@ public class MesPrepareDetail extends BaseEntity { private String needDate; private String recoil; private String buyFlag; + private String workorderCode; + private String parentOrder; + + public String getParentOrder() { + return parentOrder; + } + + public void setParentOrder(String parentOrder) { + this.parentOrder = parentOrder; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } public String getBuyFlag() { return buyFlag; @@ -149,13 +167,15 @@ public class MesPrepareDetail extends BaseEntity { public String getMaterialCode() { return materialCode; } - public void setMaterailName(String materailName) { - this.materailName = materailName; + + public String getMaterialName() { + return materialName; } - public String getMaterailName() { - return materailName; + public void setMaterialName(String materialName) { + this.materialName = materialName; } + public void setMaterailSpc(String materailSpc) { this.materailSpc = materailSpc; } @@ -247,7 +267,7 @@ public class MesPrepareDetail extends BaseEntity { .append("recordId", getRecordId()) .append("prepareId", getPrepareId()) .append("materialCode", getMaterialCode()) - .append("materailName", getMaterailName()) + .append("materialName", getMaterialName()) .append("materailSpc", getMaterailSpc()) .append("unit", getUnit()) .append("quantity", getQuantity()) diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWork.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWork.java index 430c2bbc..df2eda83 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWork.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWork.java @@ -2,6 +2,8 @@ package com.op.mes.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; import org.apache.commons.lang3.builder.ToStringStyle; @@ -80,6 +82,7 @@ public class MesReportWork extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "报工时间", width = 30, dateFormat = "yyyy-MM-dd") private Date feedbackTime; + private String feedbackTimeStr; /** 录入人员 */ @Excel(name = "录入人员") @@ -165,6 +168,131 @@ public class MesReportWork extends BaseEntity { private String feedbackTimeEnd; private String batch; private String endReport; + private String parentOrder; + private String workorderCodes; + private String productCodes; + private String productNames; + private BigDecimal quantitys; + private BigDecimal quantitySplits; + private String units; + private BigDecimal quantityFeedbacks; + private Long useMans; + private Long workTimes; + private String workCenter; + private String shiftId; + private List consumesInfos; + + public String getShiftId() { + return shiftId; + } + + public void setShiftId(String shiftId) { + this.shiftId = shiftId; + } + + public String getWorkCenter() { + return workCenter; + } + + public void setWorkCenter(String workCenter) { + this.workCenter = workCenter; + } + + public Long getUseMans() { + return useMans; + } + + public void setUseMans(Long useMans) { + this.useMans = useMans; + } + + public Long getWorkTimes() { + return workTimes; + } + + public void setWorkTimes(Long workTimes) { + this.workTimes = workTimes; + } + + public BigDecimal getQuantityFeedbacks() { + return quantityFeedbacks; + } + + public void setQuantityFeedbacks(BigDecimal quantityFeedbacks) { + this.quantityFeedbacks = quantityFeedbacks; + } + + public BigDecimal getQuantitys() { + return quantitys; + } + + public void setQuantitys(BigDecimal quantitys) { + this.quantitys = quantitys; + } + + public String getWorkorderCodes() { + return workorderCodes; + } + + public void setWorkorderCodes(String workorderCodes) { + this.workorderCodes = workorderCodes; + } + + public String getProductCodes() { + return productCodes; + } + + public void setProductCodes(String productCodes) { + this.productCodes = productCodes; + } + + public String getProductNames() { + return productNames; + } + + public void setProductNames(String productNames) { + this.productNames = productNames; + } + + public BigDecimal getQuantitySplits() { + return quantitySplits; + } + + public void setQuantitySplits(BigDecimal quantitySplits) { + this.quantitySplits = quantitySplits; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + + public List getConsumesInfos() { + return consumesInfos; + } + + public void setConsumesInfos(List consumesInfos) { + this.consumesInfos = consumesInfos; + } + + public String getParentOrder() { + return parentOrder; + } + + public void setParentOrder(String parentOrder) { + this.parentOrder = parentOrder; + } + + public String getFeedbackTimeStr() { + return feedbackTimeStr; + } + + public void setFeedbackTimeStr(String feedbackTimeStr) { + this.feedbackTimeStr = feedbackTimeStr; + } public String getEndReport() { return endReport; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java index f2f1616f..d1a1d7fb 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java @@ -5,9 +5,11 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.op.common.core.annotation.Excel; import com.op.common.core.web.domain.BaseEntity; +import java.math.BigDecimal; + /** * 生产报工物料消耗对象 mes_report_work_consume - * + * * @author Open Platform * @date 2023-08-24 */ @@ -35,7 +37,7 @@ public class MesReportWorkConsume extends BaseEntity { /** 数量 */ @Excel(name = "数量") - private Long quantity; + private BigDecimal quantity; /** 单位 */ @Excel(name = "单位") @@ -67,6 +69,33 @@ public class MesReportWorkConsume extends BaseEntity { //虚拟字段 private String id; + private String parentOrder; + private String batch; + private String recoil; + + public String getRecoil() { + return recoil; + } + + public void setRecoil(String recoil) { + this.recoil = recoil; + } + + public String getBatch() { + return batch; + } + + public void setBatch(String batch) { + this.batch = batch; + } + + public String getParentOrder() { + return parentOrder; + } + + public void setParentOrder(String parentOrder) { + this.parentOrder = parentOrder; + } public void setRecordId(String recordId) { this.recordId = recordId; @@ -111,13 +140,15 @@ public class MesReportWorkConsume extends BaseEntity { public String getMaterialSpc() { return materialSpc; } - public void setQuantity(Long quantity) { - this.quantity = quantity; - } - public Long getQuantity() { + public BigDecimal getQuantity() { return quantity; } + + public void setQuantity(BigDecimal quantity) { + this.quantity = quantity; + } + public void setUnit(String unit) { this.unit = unit; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java index 4a8e3e98..92f41acd 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkConsumeMapper.java @@ -69,4 +69,10 @@ public interface MesReportWorkConsumeMapper { List getTeamList(BaseTeamTDTO dto); int insertMesReportWorkConsumes(@Param("list") List mesReportWorkConsumes); + + List getConsumeList(MesReportWorkConsume mesReportWorkConsume); + + int submitConsumePS(@Param("list")List mesReportWorkConsumes); + + int addConsumePS(@Param("list")List rconsumes); } 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 00ef2696..f0de465f 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 @@ -10,6 +10,7 @@ import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 报工报表Mapper接口 @@ -71,7 +72,7 @@ public interface MesReportWorkMapper { public List getProductionList(MesReportProduction mesReportProduction); - public List getReportWorkList(MesReportWork mesReportWork); + public List getReportWork(MesReportWork mesReportWork); public void updateSyncSapStatus(MesReportWork work); @@ -81,7 +82,7 @@ public interface MesReportWorkMapper { List getWorkcenterList(MesDailyReport mesDailyReport); - public void updateWorkOrderStatus(MesReportWork work); + public void updateOrderWorkStatus(MesReportWork work); @MapKey("nameDate") Map getLineChartsDatas(MesReportProduction mesReportProduction); @@ -109,5 +110,15 @@ public interface MesReportWorkMapper { List getBatchList(ProOrderWorkorder proOrderWorkorder); - List getSapWorkOrder(String workorderCode); + List getSapWorkOrder(String workorderCode); + + List getReportWorkHzList(MesReportWork mesReportWork); + + List getReportList(MesReportWork mesReportWork); + + int submitReportPS(@Param("list") List mesReportWorks); + + List getPrepareList(MesPrepareDetail mesPrepareDetail); + + int addReportPS(@Param("list") List rworks); } 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 adcf46e4..b3c49ded 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 @@ -1,6 +1,8 @@ package com.op.mes.service; import java.util.List; + +import com.op.mes.domain.MesReportWork; import com.op.mes.domain.MesReportWorkConsume; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; @@ -74,4 +76,10 @@ public interface IMesReportWorkConsumeService { public List getTeamList(BaseTeamTDTO dto); int insertMesReportWorkConsumes(List mesReportWorkConsumes); + + List getConsumeList(MesReportWorkConsume mesReportWorkConsume); + + int submitConsumePS(List mesReportWorkConsume); + + int submitReportInfo(MesReportWork mesReportWork); } 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 34112f93..6f89c239 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 @@ -90,4 +90,12 @@ public interface IMesReportWorkService { R reportSap(MesReportWork mesReportWork); List getBatchList(ProOrderWorkorder proOrderWorkorder); + + List getReportWorkHzList(MesReportWork mesReportWork); + + List getReportList(MesReportWork mesReportWork); + + int submitReportPS(List mesReportWorks); + + List getPrepareList(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 435f3d3a..4858cb07 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 @@ -9,6 +9,7 @@ import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.utils.http.HttpUtils; 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.buffer.JsonRootBean; import com.op.mes.domain.dto.LGInfoDto; @@ -281,103 +282,117 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { return R.ok(true); } + /**** + * 报工顺序:先子单报工,然后母单报工 + * 关闭母工单,关闭子工单 + * @param mesReportWork + * @return + */ @Override public R reportWork(MesReportWork mesReportWork) { + String belongWorkOrder = mesReportWork.getWorkorderCode(); if(StringUtils.isNotBlank(mesReportWork.getFactoryCode())){//已经加上ds_ DynamicDataSourceContextHolder.push(mesReportWork.getFactoryCode());// 这是数据源的key } + //根据belong_work_order找到sap工单 + List sapWorkOrders = mesReportWorkMapper.getSapWorkOrder(mesReportWork.getWorkorderCode()); + if(CollectionUtils.isEmpty(sapWorkOrders)||sapWorkOrders.size()<2){ + return R.fail("子母工单信息缺失"); + } + /**子工单先报工,然后母工单报工**/ mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 mesReportWork.setProdType("prod"); - List reportWorks = mesReportWorkMapper.getReportWorkList(mesReportWork); + mesReportWork.setWorkorderCode(sapWorkOrders.get(1).getWorkorderCode()); + List reportWorks = mesReportWorkMapper.getReportWork(mesReportWork); if(CollectionUtils.isEmpty(reportWorks)){ - return R.fail("未查询到报工单"); + return R.fail("未查询到报工单"); + } + MesReportWork sWork = reportWorks.get(0); + //子工单报工 + logger.info("==========================子工单报工开始"); + this.reportToSap(sWork); + logger.info("==========================子工单报工结束"); + mesReportWork.setWorkorderCode(sapWorkOrders.get(0).getWorkorderCode()); + List reportWorks2 = mesReportWorkMapper.getReportWork(mesReportWork); + if(CollectionUtils.isEmpty(reportWorks2)){ + return R.fail("未查询到报工单"); } + MesReportWork pWork = reportWorks2.get(0); + + //母工单报工 + logger.info("==========================母工单报工开始"); + this.reportToSap(pWork); + logger.info("==========================母工单报工结束"); + //最终报工标识:关闭子母工单 + if("1".equals(pWork.getEndReport())){ + logger.info("报工======母sap工单编码:"+sapWorkOrders.get(0).getWorkorderCodeSap()+ + "子sap工单编码:"+sapWorkOrders.get(1).getWorkorderCodeSap() + ); + //关闭母子订单//订单的订单编码 + SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); + sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0).getWorkorderCodeSap()); + sapCloseOrderQuery.setOrder(sapWorkOrders.get(1).getWorkorderCodeSap()); + R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); + logger.info("报工======关闭母子sap工单"+sapCloseOrderQuery.getLeadOrder()+":"+ + sapCloseOrderQuery.getOrder()+":"+ + closeR.getCode()+","+ + closeR.getMsg()+","+ + closeR.getData()); + MesReportWork rworkVo = new MesReportWork(); + rworkVo.setStatus("w3"); + rworkVo.setUpdateTime(DateUtils.getNowDate()); + rworkVo.setUpdateBy(SecurityUtils.getUsername()); + rworkVo.setWorkorderCode(belongWorkOrder); + //pro_work_order status->w3报工--belong_work_order + mesReportWorkMapper.updateOrderWorkStatus(rworkVo); + } + return R.ok(); + } - MesReportWork work = reportWorks.get(0); + private R reportToSap(MesReportWork workOrder){ SapRFW sapRFW = new SapRFW(); - sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号 - sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量 - SapRFW.lt_gs ltgs = sapRFW.getLt_gs();//生产订单报工工时修改 - ltgs.setConf_activity1(work.getSac1());//人工 - ltgs.setConf_activity2(work.getSac2()); - ltgs.setConf_activity3(work.getSac3());//机器 - ltgs.setConf_activity4(work.getSac4()); - ltgs.setConf_activity5(work.getSac5());//折旧 - ltgs.setConf_activity6(work.getSac6()); + sapRFW.setAufnr(workOrder.getWorkorderCodeSap());//虚拟工单号 + sapRFW.setGamng(workOrder.getQuantityFeedback().toString());//报工数量 + SapRFW.lt_gs ltgs = new SapRFW.lt_gs();//生产订单报工工时修改 + ltgs.setConf_activity1(workOrder.getSac1());//人工 + ltgs.setConf_activity2(workOrder.getSac2()); + ltgs.setConf_activity3(workOrder.getSac3());//机器 + ltgs.setConf_activity4(workOrder.getSac4()); + ltgs.setConf_activity5(workOrder.getSac5());//折旧 + ltgs.setConf_activity6(workOrder.getSac6()); sapRFW.setLt_gs(ltgs); List lt_hwList =new ArrayList<>(); - logger.info(work.getWorkorderCodeSap()+"母sap工单报工:报工数量"+sapRFW.getGamng()); MesReportWorkConsume consumeqo = new MesReportWorkConsume(); - consumeqo.setWorkorderCode(work.getWorkorderCode()); + consumeqo.setWorkorderCode(workOrder.getWorkorderCode()); List consumes = mesReportWorkConsumeMapper.selectMesReportWorkConsumeList(consumeqo); if(!CollectionUtils.isEmpty(consumes)){ for(MesReportWorkConsume consume:consumes){ - logger.info(work.getWorkorderCodeSap()+"母sap工单报工:【原料损耗】"+ - consume.getMaterialCode()+"|"+consume.getQuantity()); - SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 + SapRFW.lt_hw lthw = new SapRFW.lt_hw();//MES生产订单报工货物移动修改 lthw.setEntry_qnt(consume.getQuantity()+"");//数量 lthw.setMaterial(consume.getMaterialCode());//物料编码 lt_hwList.add(lthw); } }else{ - logger.info(work.getWorkorderCodeSap()+"母sap工单报工:工单"+work.getWorkorderCode()+"mes_report_work_consume没有数据"); + logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工:工单"+workOrder.getWorkorderCode()+"mes_report_work_consume没有数据"); return R.fail("mes_report_work_consume没有数据"); } sapRFW.setLt_hwList(lt_hwList); - + logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工请求:"+JSONObject.toJSONString(sapRFW)); R r = remoteSapService.sapRFWOrder(sapRFW); - logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果:"+r.getCode()+","+r.getData()+","+r.getMsg()); + logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工结果:"+r.getCode()+","+r.getData()+","+r.getMsg()); //上传成功,更改mes_report_work状态 if (r.getCode() == 200) { - work.setUploadStatus("1"); + workOrder.setUploadStatus("1"); } else { - work.setUploadStatus("2"); - work.setUploadMsg(r.getMsg()); - } - work.setUploadTime(DateUtils.getNowDate()); - mesReportWorkMapper.updateSyncSapStatus(work); - //工单完成数量>工单数量:关闭订单 - MesReportWork proResult = mesReportWorkMapper.getProdResult(work); - //ProOrderWorkorder topOrder = this.getTopOrder(work.getWorkorderCode()); - if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0 - || - "1".equals(work.getEndReport())//最终报工标识 - ){ - logger.info("工单请求关闭:调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap()); - //工单完成,关闭工单 - List sapWorkOrders = mesReportWorkMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单 - //关闭母子订单//订单的订单编码 - SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); - sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0)); - sapCloseOrderQuery.setOrder(sapWorkOrders.get(1)); - R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); - logger.info(work.getWorkorderCodeSap()+"报工后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+ - sapCloseOrderQuery.getOrder()+":"+ - closeR.getCode()+","+ - closeR.getMsg()+","+ - closeR.getData()); - - work.setStatus("w3"); - work.setUpdateTime(DateUtils.getNowDate()); - //pro_work_order status->w3报工--belong_work_order - mesReportWorkMapper.updateWorkOrderStatus(work); - logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功"); + workOrder.setUploadStatus("2"); + workOrder.setUploadMsg(r.getMsg()); } + workOrder.setUploadTime(DateUtils.getNowDate()); + mesReportWorkMapper.updateSyncSapStatus(workOrder); return R.ok(); } -// //根据工单子单编码获取最顶级订单的母单 -// private ProOrderWorkorder getTopOrder(String workorderCode) { -// //pro_order_workorder -// ProOrderWorkorder topOrder = mesReportWorkMapper.getOrderByCode(workorderCode); -// while (!"0".equals(topOrder.getParentOrder()) && StringUtils.isNotEmpty(topOrder.getParentOrder())) { -// //pro_order_workorder -// topOrder = mesReportWorkMapper.getOrderByCode(topOrder.getParentOrder()); -// } -// return topOrder; -// } - public void dateBKFunc(String poolName,List tables){ DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key 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 9549454e..8972f8a8 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 @@ -1,18 +1,28 @@ package com.op.mes.service.impl; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; 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.mapper.MesReportWorkMapper; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseTeamTDTO; +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.MesReportWorkConsumeMapper; import com.op.mes.domain.MesReportWorkConsume; import com.op.mes.service.IMesReportWorkConsumeService; +import org.springframework.util.CollectionUtils; /** * 生产报工物料消耗Service业务层处理 @@ -22,9 +32,13 @@ import com.op.mes.service.IMesReportWorkConsumeService; */ @Service public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeService { + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private MesReportWorkConsumeMapper mesReportWorkConsumeMapper; + @Autowired + private MesReportWorkMapper mesReportWorkMapper; + /** * 查询生产报工物料消耗 * @@ -135,4 +149,99 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer return mesReportWorkConsumeMapper.getTeamList(dto); } + @Override + @DS("#header.poolName") + public List getConsumeList(MesReportWorkConsume mesReportWorkConsume) { + return mesReportWorkConsumeMapper.getConsumeList(mesReportWorkConsume); + } + + @Override + @DS("#header.poolName") + public int submitConsumePS(List mesReportWorkConsumes) { + Date nowTime = DateUtils.getNowDate(); + String updateBy = SecurityUtils.getUsername(); + for(MesReportWorkConsume mesReportWorkConsume:mesReportWorkConsumes){ + mesReportWorkConsume.setUpdateTime(nowTime); + mesReportWorkConsume.setUpdateBy(updateBy); + } + return mesReportWorkConsumeMapper.submitConsumePS(mesReportWorkConsumes); + } + + @Override + @DS("#header.poolName") + public int submitReportInfo(MesReportWork mesReportWork) { + Date nowTime = DateUtils.getNowDate(); + String createBy = SecurityUtils.getUsername(); + mesReportWork.setCreateBy(createBy); + mesReportWork.setCreateTime(nowTime); + //mes_report_work 母子 + List rworks = this.getAddMesReportWorks(mesReportWork); + if(!CollectionUtils.isEmpty(rworks)){ + int rps = mesReportWorkMapper.addReportPS(rworks); + System.out.println("rps添加成功:"+rps); + } + + //mes_report_work_consume 母子 + List rconsumes = this.getAddWorkConsumes(mesReportWork, + rworks.get(0).getReportCode(), + rworks.get(1).getReportCode()); + if(!CollectionUtils.isEmpty(rconsumes)) { + int rcs = mesReportWorkConsumeMapper.addConsumePS(rconsumes); + System.out.println("rcs添加成功:" + rcs); + } + return 1; + } + + private List getAddMesReportWorks(MesReportWork mesReportWork){ + List rworks = new ArrayList<>(); + //母 + String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, mesReportWork.getFeedbackTime()); + int liushuiNum = mesReportWorkMapper.getTodayMaxNum(mesReportWork); + String liushuiStr = String.format("%04d", liushuiNum); + String pReportCode = bpDD+liushuiStr; + MesReportWork prwork = new MesReportWork(); + BeanUtils.copyProperties(mesReportWork,prwork); + prwork.setId(IdUtils.fastSimpleUUID()); + prwork.setReportCode(pReportCode); + prwork.setParentOrder("0"); + prwork.setProdType("prod"); + rworks.add(prwork); + //子 + String bpDD2 = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, mesReportWork.getFeedbackTime()); + int liushuiNum2 = mesReportWorkMapper.getTodayMaxNum(mesReportWork); + String liushuiStr2 = String.format("%04d", liushuiNum2); + String pReportCode2 = bpDD2+liushuiStr2; + MesReportWork srwork = new MesReportWork(); + BeanUtils.copyProperties(mesReportWork,srwork); + srwork.setId(IdUtils.fastSimpleUUID()); + srwork.setReportCode(pReportCode2); + srwork.setWorkorderCode(mesReportWork.getWorkorderCodes()); + srwork.setParentOrder(mesReportWork.getWorkorderCode()); + srwork.setProductCode(mesReportWork.getProductCodes()); + srwork.setProductName(mesReportWork.getProductNames()); + srwork.setUnit(mesReportWork.getUnits()); + srwork.setQuantity(mesReportWork.getQuantitys()); + srwork.setQuantityFeedback(mesReportWork.getQuantityFeedbacks()); + srwork.setUseMan(mesReportWork.getUseMans()); + srwork.setWorkTime(mesReportWork.getWorkTimes()); + srwork.setUseMan(mesReportWork.getUseMans()); + srwork.setProdType("prod"); + rworks.add(srwork); + + return rworks; + } + private List getAddWorkConsumes(MesReportWork mesReportWork,String pReportCode,String sReportCode) { + List rconsumes = mesReportWork.getConsumesInfos(); + for(MesReportWorkConsume consume:rconsumes){ + consume.setRecordId(IdUtils.fastSimpleUUID()); + consume.setCreateBy(mesReportWork.getCreateBy()); + consume.setCreateTime(mesReportWork.getCreateTime()); + if("0".equals(consume.getParentOrder())){ + consume.setReportCode(pReportCode); + }else{ + consume.setReportCode(sReportCode); + } + } + return rconsumes; + } } 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 4f8b0ef4..2d450bb0 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 @@ -12,6 +12,7 @@ import com.op.common.core.constant.SecurityConstants; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.ServletUtils; +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.LineChartSeriesDto; @@ -128,6 +129,37 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { return mesReportWorkMapper.getBatchList(proOrderWorkorder); } + @Override + @DS("#header.poolName") + public List getReportWorkHzList(MesReportWork mesReportWork) { + List dtos = mesReportWorkMapper.getReportWorkHzList(mesReportWork); + return dtos; + } + + @Override + @DS("#header.poolName") + public List getReportList(MesReportWork mesReportWork) { + return mesReportWorkMapper.getReportList(mesReportWork); + } + + @Override + @DS("#header.poolName") + public int submitReportPS(List mesReportWorks) { + Date nowTime = DateUtils.getNowDate(); + String updateBy = SecurityUtils.getUsername(); + for(MesReportWork mesReportWork:mesReportWorks){ + mesReportWork.setUpdateTime(nowTime); + mesReportWork.setUpdateBy(updateBy); + } + return mesReportWorkMapper.submitReportPS(mesReportWorks); + } + + @Override + @DS("#header.poolName") + public List getPrepareList(MesPrepareDetail mesPrepareDetail) { + return mesReportWorkMapper.getPrepareList(mesPrepareDetail); + } + /** * 修改报工报表 * @@ -402,6 +434,8 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { return dtos; } + + public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); 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 2d3b3e14..9faba0e3 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 @@ -82,8 +82,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from base_team_t where del_flag = '0' + - + insert into mes_report_work_consume record_id, @@ -137,6 +155,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into mes_report_work_consume + ( + record_id,report_code,workorder_code, + material_code,material_name,quantity,unit, + create_by,create_time,parent_order,recoil + )values + + ( + #{item.recordId},#{item.reportCode},#{item.workorderCode}, + #{item.materialCode},#{item.materialName},#{item.quantity},#{item.unit}, + #{item.createBy},#{item.createTime},#{item.parentOrder},#{item.recoil} + ) + + update mes_report_work_consume @@ -161,6 +194,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where record_id = #{recordId} + + + update mes_report_work_consume + set + quantity = #{item.quantity}, + update_by = #{item.updateBy}, + update_time = #{item.updateTime} + where + record_id = #{item.recordId} + + update mes_report_work_consume diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index f6ae8139..737e9b7a 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 @@ -78,6 +78,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + select id, report_type, report_code, workorder_code, product_code, @@ -213,7 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and CONVERT(varchar(10),mrw.feedback_time, 120) >= #{productDateStart} and #{productDateEnd} >= CONVERT(varchar(10),mrw.feedback_time, 120) - select ow.order_code orderCode, ow.workorder_code workorderCode, @@ -235,8 +242,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code left join pro_route rte on rte.route_code = ow.route_code where mrw.upload_status != #{uploadStatus} and mrw.prod_type = #{prodType} - - and mrw.report_code = #{reportCode} + + and mrw.workorder_code = #{workorderCode} order by mrw.create_time @@ -421,14 +428,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pow.product_spc, pow.unit, pow.quantity_split, pow.route_code, pow.prod_line_code, pow.product_date, pow.shift_id, pow.parent_order, pow.status, pow.remark, - s.Shift_Desc shiftName + s.Shift_Desc shiftName, + pows.workorder_code workorderCodes,pows.product_code productCodes, pows.product_name productNames, + pows.quantity_split quantitySplits,pows.unit units from pro_order_workorder pow left join base_shifts_t s on pow.shift_id = s.Shift_Id + left join pro_order_workorder pows on pows.parent_order = pow.workorder_code where pow.del_flag = '0' and pow.status = 'w2' and pow.parent_order ='0' - order by pow.product_date desc + and pow.workorder_code like concat('%', #{workorderCode}, '%') + order by pow.product_date desc - + select workorder_code_sap workorderCodeSap, + workorder_code workorderCode + from pro_order_workorder where belong_work_order = #{workorderCode} and del_flag = '0' + order by parent_order + + + + @@ -533,6 +622,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{endReport}, + + insert into mes_report_work + ( + id,report_type,report_code, + workorder_code,parent_order, + product_code,product_name, + unit,quantity,quantity_feedback, + user_name,nick_name,feedback_channel, + feedback_time,remark, + work_time,use_man,batch, + machine_code,machine_name,shift_code,work_center, + create_by,create_time,del_flag,end_report + )values + + ( + #{item.id},'UNI',#{item.reportCode}, + #{item.workorderCode},#{item.parentOrder}, + #{item.productCode},#{item.productName}, + #{item.unit},#{item.quantity},#{item.quantityFeedback}, + #{item.userName},#{item.nickName},#{item.feedbackChannel}, + #{item.feedbackTime},#{item.remark}, + #{item.workTime},#{item.useMan},#{item.batch}, + #{item.machineCode},#{item.machineName},#{item.shiftId},#{item.workCenter}, + #{item.createBy},#{item.createTime},'0',#{item.endReport} + ) + + update mes_report_work @@ -582,15 +698,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" upload_msg = #{uploadMsg}, where 1=1 - - and id = #{id} - - - and report_code = #{reportCode} - + and id = #{id} + and workorder_code = #{workorderCode} + + + update pro_order_workorder + set status = #{status}, + update_by = #{updateBy}, + update_time = #{updateTime} + where belong_work_order = #{workorderCode} - - update pro_order_workorder set status = #{status} where workorder_code = #{workorderCode} + + + + update mes_report_work + set quantity_feedback = #{item.quantityFeedback}, + work_time = #{item.workTime}, + use_man = #{item.useMan}, + update_by = #{item.updateBy}, + update_time = #{item.updateTime} + where + id = #{item.id} + 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 ca6c18b4..74c13d74 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 @@ -44,18 +44,18 @@ public class OpenController extends BaseController { } return openService.requestDestinationStations(wcsdto); } - /**上位机报工**/ - @PostMapping("/reportWork") - public AjaxResult reportWork(@RequestBody MesReportWorkDTO mesReportWork) { - if(StringUtils.isBlank(mesReportWork.getFactoryCode())){ - return error("[factoryCode] is null"); - } - if(StringUtils.isBlank(mesReportWork.getReportCode())){ - return error("[reportCode] is null"); - } - - return success(openService.reportWork(mesReportWork)); - } +// /**上位机报工**/ +// @PostMapping("/reportWork") +// public AjaxResult reportWork(@RequestBody MesReportWorkDTO mesReportWork) { +// if(StringUtils.isBlank(mesReportWork.getFactoryCode())){ +// return error("[factoryCode] is null"); +// } +// if(StringUtils.isBlank(mesReportWork.getReportCode())){ +// return error("[reportCode] is null"); +// } +// +// return success(openService.reportWork(mesReportWork)); +// } /**获取料罐信息**/ @PostMapping("/getLGInfo") diff --git a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java index 10ce38f5..c2a7d3f2 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java @@ -16,7 +16,7 @@ public interface OpenService { WCSDTO requestDestinationStations(WCSDTO wcsdto); - R reportWork(MesReportWorkDTO mesReportWork); +// R reportWork(MesReportWorkDTO mesReportWork); List getLGInfo(WCSDTO wcsDTO); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index 2bd5a1aa..c97ac09d 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -153,86 +153,86 @@ public class OpenServiceImpl implements OpenService { return dto; } - @Override - public R reportWork(MesReportWorkDTO mesReportWork) { - DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key - - mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 - mesReportWork.setProdType("prod"); - List reportWorks = openMapper.getReportWorkList(mesReportWork); - if(CollectionUtils.isEmpty(reportWorks)){ - return R.fail("未查询到报工单"); - } - - MesReportWorkDTO work = reportWorks.get(0); - SapRFW sapRFW = new SapRFW(); - sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号 - sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量 - SapRFW.lt_gs ltgs = sapRFW.getLt_gs();//生产订单报工工时修改 - ltgs.setConf_activity1(work.getSac1());//人工 - ltgs.setConf_activity2(work.getSac2()); - ltgs.setConf_activity3(work.getSac3());//机器 - ltgs.setConf_activity4(work.getSac4()); - ltgs.setConf_activity5(work.getSac5());//折旧 - ltgs.setConf_activity6(work.getSac6()); - sapRFW.setLt_gs(ltgs); - List lt_hwList =new ArrayList<>(); - logger.info(work.getWorkorderCodeSap()+"母sap工单报工:报工数量"+sapRFW.getGamng()); - MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO(); - consumeqo.setWorkorderCode(work.getWorkorderCode()); - List consumes = openMapper.selectMesReportWorkConsumeList(consumeqo); - if(!CollectionUtils.isEmpty(consumes)){ - for(MesReportWorkConsumeDTO consume:consumes){ - logger.info(work.getWorkorderCodeSap()+"母sap工单报工:【原料损耗】"+ - consume.getMaterialCode()+"|"+consume.getQuantity()); - SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 - lthw.setEntry_qnt(consume.getQuantity()+"");//数量 - lthw.setMaterial(consume.getMaterialCode());//物料编码 - lt_hwList.add(lthw); - } - }else{ - logger.info(work.getWorkorderCodeSap()+"母sap工单报工:工单"+work.getWorkorderCode()+"==mes_report_work_consume没有数据"); - //return R.fail("mes_report_work_consume没有数据"); - } - sapRFW.setLt_hwList(lt_hwList); - logger.info(work.getWorkorderCodeSap()+"母sap工单报工请求:"+ JSONObject.toJSONString(sapRFW)); - R r = remoteSapService.sapRFWOrder(sapRFW); - logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果:"+r.getCode()+","+r.getData()+","+r.getMsg()); - //上传成功,更改mes_report_work状态 - if (r.getCode() == 200) { - work.setUploadStatus("1"); - } else { - work.setUploadStatus("2"); - work.setUploadMsg(r.getMsg()); - } - work.setUploadTime(DateUtils.getNowDate()); - openMapper.updateSyncSapStatus(work); - //工单完成数量>工单数量:关闭订单 - MesReportWorkDTO proResult = openMapper.getProdResult(work); - //ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode()); - if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0||"1".equals(work.getEndReport())//最终报工标识 - ){ - logger.info("工单请求关闭:调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap()); - //工单完成,关闭母工单 - List sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单 - //关闭母子订单//订单的订单编码 - SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); - sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0)); - sapCloseOrderQuery.setOrder(sapWorkOrders.get(1)); - R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); - logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+ - sapCloseOrderQuery.getOrder()+":"+ - closeR.getCode()+","+ - closeR.getMsg()+","+ - closeR.getData()); - work.setStatus("w3"); - work.setUpdateTime(DateUtils.getNowDate()); - //pro_work_order status->w3报工--belong_work_order - openMapper.updateWorkOrderStatus(work); - logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功"); - } - return R.ok(); - } +// @Override +// public R reportWork(MesReportWorkDTO mesReportWork) { +// DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key +// logger.info("上位机开始报工:报工单"+mesReportWork.getReportCode()); +// mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 +// mesReportWork.setProdType("prod"); +// List reportWorks = openMapper.getReportWorkList(mesReportWork); +// if(CollectionUtils.isEmpty(reportWorks)){ +// return R.fail("未查询到报工单"); +// } +// +// MesReportWorkDTO work = reportWorks.get(0); +// SapRFW sapRFW = new SapRFW(); +// sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号 +// sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量 +// SapRFW.lt_gs ltgs = sapRFW.new lt_gs();//生产订单报工工时修改 +// ltgs.setConf_activity1(work.getSac1());//人工 +// ltgs.setConf_activity2(work.getSac2()); +// ltgs.setConf_activity3(work.getSac3());//机器 +// ltgs.setConf_activity4(work.getSac4()); +// ltgs.setConf_activity5(work.getSac5());//折旧 +// ltgs.setConf_activity6(work.getSac6()); +// sapRFW.setLt_gs(ltgs); +// List lt_hwList =new ArrayList<>(); +// //logger.info(work.getWorkorderCodeSap()+"母sap工单报工:报工数量"+sapRFW.getGamng()); +// MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO(); +// consumeqo.setWorkorderCode(work.getWorkorderCode()); +// List consumes = openMapper.selectMesReportWorkConsumeList(consumeqo); +// if(!CollectionUtils.isEmpty(consumes)){ +// for(MesReportWorkConsumeDTO consume:consumes){ +// logger.info(work.getWorkorderCodeSap()+"母sap工单报工:【原料损耗】"+ +// consume.getMaterialCode()+"|"+consume.getQuantity()); +// SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 +// lthw.setEntry_qnt(consume.getQuantity()+"");//数量 +// lthw.setMaterial(consume.getMaterialCode());//物料编码 +// lt_hwList.add(lthw); +// } +// }else{ +// logger.info(work.getWorkorderCodeSap()+"母sap工单报工:工单"+work.getWorkorderCode()+"==mes_report_work_consume没有数据"); +// //return R.fail("mes_report_work_consume没有数据"); +// } +// sapRFW.setLt_hwList(lt_hwList); +// logger.info(work.getWorkorderCodeSap()+"母sap工单报工请求参数:"+ JSONObject.toJSONString(sapRFW)); +// R r = remoteSapService.sapRFWOrder(sapRFW); +// logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果:"+r.getCode()+","+r.getData()+","+r.getMsg()); +// //上传成功,更改mes_report_work状态 +// if (r.getCode() == 200) { +// work.setUploadStatus("1"); +// } else { +// work.setUploadStatus("2"); +// work.setUploadMsg(r.getMsg()); +// } +// work.setUploadTime(DateUtils.getNowDate()); +// openMapper.updateSyncSapStatus(work); +// //工单完成数量>工单数量:关闭订单 +// MesReportWorkDTO proResult = openMapper.getProdResult(work); +// //ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode()); +// if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0||"1".equals(work.getEndReport())//最终报工标识 +// ){ +// logger.info("工单请求关闭:调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap()); +// //工单完成,关闭母工单 +// List sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单 +// //关闭母子订单//订单的订单编码 +// SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); +// sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0)); +// sapCloseOrderQuery.setOrder(sapWorkOrders.get(1)); +// R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); +// logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+ +// sapCloseOrderQuery.getOrder()+":"+ +// closeR.getCode()+","+ +// closeR.getMsg()+","+ +// closeR.getData()); +// work.setStatus("w3"); +// work.setUpdateTime(DateUtils.getNowDate()); +// //pro_work_order status->w3报工--belong_work_order +// openMapper.updateWorkOrderStatus(work); +// logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功"); +// } +// return R.ok(); +// } @Override public List getLGInfo(WCSDTO wcsDTO) { 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 fc41f382..3b665909 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 @@ -11,6 +11,7 @@ import java.util.stream.Collectors; import com.alibaba.csp.sentinel.util.StringUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.op.common.core.utils.ServletUtils; import com.op.plan.domain.vo.CascaderDTO; import com.baomidou.dynamic.datasource.annotation.DS; @@ -93,7 +94,6 @@ public class ProOrderServiceImpl implements IProOrderService { * @return */ @Override - @Transactional @DS("#header.poolName") public AjaxResult subSplitOrder(SplitOrderDTO splitOrderDTO) { boolean checkout = true; @@ -294,8 +294,12 @@ public class ProOrderServiceImpl implements IProOrderService { R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据 logger.info("母订单"+proOrder.getOrderCode()+ "订单数量变更结果:"+rSapChange.getCode()+","+rSapChange.getMsg()); + }else{ + workOrder.setProductCode(splitOrderDTO.getProduct().getChildren().get(0).getProdCode()); + workOrder.setProductName(splitOrderDTO.getProduct().getChildren().get(0).getProdDesc()); } workOrder.setBelongWorkOrder(belongWorkOrder); + workOrder.setProdType("LJ01"); // 将工单信息更新至数据库 proOrderWorkorderMapper.insertProOrderWorkorder(workOrder); @@ -437,15 +441,15 @@ public class ProOrderServiceImpl implements IProOrderService { sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如:20230923 } - //添加调用sap日志 - SysSapLog sysSapLog = new SysSapLog(); - sysSapLog.setId(IdUtils.fastSimpleUUID()); - sysSapLog.setMesssge(sapqo.toString()); - sysSapLog.setMethod("syncSAP"); - sysSapLog.setReqcode("请求"); - sysSapLog.setCreateTime(DateUtils.getNowDate()); - proOrderMapper.addSapLog(sysSapLog); - +// //添加调用sap日志 +// SysSapLog sysSapLog = new SysSapLog(); +// sysSapLog.setId(IdUtils.fastSimpleUUID()); +// sysSapLog.setMesssge(sapqo.toString()); +// sysSapLog.setMethod("syncSAP"); +// sysSapLog.setReqcode("请求"); +// sysSapLog.setCreateTime(DateUtils.getNowDate()); +// proOrderMapper.addSapLog(sysSapLog); + logger.info("手动订单同步:【参数】"+ JSONObject.toJSONString(sapqo)); //取>=20230923的sap数据 R> rSapProOrder = remoteSapService.shopOrderSync(sapqo);//sap只能同步指定日期的数据 @@ -461,12 +465,14 @@ public class ProOrderServiceImpl implements IProOrderService { String failOrder = ""; ProOrder proOrder = null; for (SapProOrder sapProOrder:newOrders) { - //工单生产后整个订单就被锁定//订单存在就更新,不存在就插入 - proOrder = new ProOrder(); - BeanUtils.copyProperties(sapProOrder, proOrder); - proOrder.setSyncUser(syncUser); - proOrder.setProdType("prod");//只有白坯有导入 - failOrder += syncFunc(proOrder); + if("LJ88".equals(sapProOrder.getOrderType())){ + //工单生产后整个订单就被锁定//订单存在就更新,不存在就插入 + proOrder = new ProOrder(); + BeanUtils.copyProperties(sapProOrder, proOrder); + proOrder.setSyncUser(syncUser); + proOrder.setProdType("prod");//只有白坯有导入 + failOrder += syncFunc(proOrder); + } } return failOrder; } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 9a00d021..e2731a48 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -1,6 +1,7 @@ package com.op.plan.service.impl; import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.context.SecurityContextHolder; @@ -224,7 +225,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { */ @Override @DS("#header.poolName") - @Transactional(rollbackFor = Exception.class) + //@Transactional(rollbackFor = Exception.class) public int downProOrderWorkorderByWorkorderIds(String[] workorderIds) { List sapList = null;//回传给sap的工单 //如果是白坯生成备料单 @@ -299,22 +300,14 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { sapList = new ArrayList<>(); SapCreateOrder sap = new SapCreateOrder(); sap.setWerks(whiteOrder.getFactoryCode());//工厂编码 - sap.setAufpar(whiteOrder.getProdType());//订单类型 + sap.setAufpar("LJ01");//订单类型 sap.setMatnr(whiteOrder.getProductCode());//物料编号 sap.setQuantity(whiteOrder.getQuantitySplit() + "");//数量 sap.setDates(DateUtils.parseDateToStr("yyyy-MM-dd", whiteOrder.getProductDate()));//开始时间 sap.setDatee(DateUtils.parseDateToStr("yyyy-MM-dd", whiteOrder.getProductDate()));//完成时间 sapList.add(sap); - //添加调用sap日志 -// SysSapLog sysSapLog = new SysSapLog(); -// sysSapLog.setId(IdUtils.fastSimpleUUID()); -// sysSapLog.setMesssge(Arrays.asList(sapList).toString()); -// sysSapLog.setMethod("downProOrderWorkorderByWorkorderIds"); -// sysSapLog.setReqcode("请求"); -// sysSapLog.setCreateTime(DateUtils.getNowDate()); -// proOrderMapper.addSapLog(sysSapLog); - logger.info(whiteOrder.getWorkorderCode()+"sap工单回传sap虚拟工单号开始:"+Arrays.asList(sapList).toString()); + logger.info(whiteOrder.getWorkorderCode()+"sap工单回传sap工单号开始:"+ JSONObject.toJSONString(sapList)); R>> r = remoteSapService.SapCreateOrder(sapList); logger.info("sap工单回传:" + r.getMsg()); if (500 == r.getCode()) { @@ -329,7 +322,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { } Date updateTime = DateUtils.getNowDate(); if (!CollectionUtils.isEmpty(returnCodes)) { - logger.info("sap工单回传sap虚拟工单号结束:" + StringUtils.join(returnCodes, ",")); + logger.info("sap工单回传sap工单号结束:" + StringUtils.join(returnCodes, ",")); //按照母子顺序进行更新 for (int m=0;m sapMaterialPreparationList = remoteSapService.materialPreparation(sapWorkOrders.get(m)).getData(); if (CollectionUtils.isEmpty(sapMaterialPreparationList)) { System.out.println("sap无领料单数据"); } //取出各领料单 String orderCode = sapWorkOrders.get(m); - logger.info("sap虚拟工单码:"+orderCode); + logger.info("sap工单码:"+orderCode); /**mes_prepare**/ String mesPrepareId = IdUtils.fastSimpleUUID(); MesPrepareDTO mesPrepare0 = new MesPrepareDTO(); @@ -436,7 +420,10 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { sap.getMEINS()+","+sap.getRGEKZ()+","+sap.getDBSKZ() ); } - proOrderWorkorderMapper.insertMesPrepareDetails(details); + if(!CollectionUtils.isEmpty(details)){ + proOrderWorkorderMapper.insertMesPrepareDetails(details); + } + logger.info("获取sap领料单:" + sapWorkOrders.get(m)+"结束"); } } 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 e49372ef..88fe27ae 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 @@ -457,9 +457,9 @@ INSERT INTO mes_prepare_detail ( - record_id,prepare_id,material_code,material_name,unit, - quantity,create_by,create_time,factory_code,status, - locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order + record_id,prepare_id,material_code,material_name,unit, + quantity,create_by,create_time,factory_code,status, + locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order )VALUES ( diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java index d63fb830..44711b5a 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java @@ -18,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -46,6 +48,9 @@ public class QuaController extends BaseController { @Autowired private IQcCheckTaskIncomeService qcCheckTaskIncomeService; + @Autowired + private IQcCheckUnqualifiedService qcCheckUnqualifiedService; + @PostMapping("/saveQcProCheck") public R saveQcProCheck(@RequestBody QcProCheck qcProCheck) { DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode()); @@ -244,4 +249,13 @@ public class QuaController extends BaseController { List list = qcMaterialGroupService.getCheckTypeProjectList(qcCheckTypeProject); return getDataTable(list); } + + @GetMapping("/getUnqualifiedList") + public TableDataInfo getUnqualifiedList(QcCheckUnqualified qcCheckUnqualified) { + DynamicDataSourceContextHolder.push("ds_"+qcCheckUnqualified.getFactoryCode()); + startPage(); + qcCheckUnqualified.setDelFlag("0"); + List list = qcCheckUnqualifiedService.selectQcCheckUnqualifiedList(qcCheckUnqualified); + return getDataTable(list); + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java index 09a48349..0b053a0c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java @@ -63,4 +63,12 @@ public interface QcCheckUnqualifiedMapper { public int deleteQcCheckUnqualifiedByIds(String[] ids); public List getDefectList(QcDefectType qcDefectType); + + /** + * 查询手持不合格处理列表 + * + * @param qcCheckUnqualified 不合格处理 + * @return 不合格处理集合 + */ + public List getUnqualifiedList(QcCheckUnqualified qcCheckUnqualified); } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml index 193c42aa..82588aa6 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml @@ -73,6 +73,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from qc_defect_type where defect_type = #{defectType} and del_flag='0' + insert into qc_check_unqualified