From 28078b3a744475f76447bda862c1392c296ccba4 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 13 Feb 2025 19:05:06 +0800 Subject: [PATCH] =?UTF-8?q?45028=20=E6=89=B9=E9=87=8F=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E6=8A=A5=E5=B7=A5=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E2=80=9C?= =?UTF-8?q?=E8=BF=87=E8=B4=A6=E6=97=A5=E6=9C=9F=E2=80=9D=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=20-=20=E4=BA=8C=E6=AC=A1=E4=BF=AE=E6=94=B9,?= =?UTF-8?q?=20=E5=8F=91=E7=8E=B0=E4=BA=86=E5=85=B6=E4=BB=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81BUG:=20=E8=B6=85=E5=B7=A5=E5=8D=95=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E6=94=B9=E5=B7=A5=E5=8D=95=E7=8A=B6=E6=80=81=E5=AE=8C?= =?UTF-8?q?=E6=88=90=20=E4=B8=8D=E7=94=9F=E6=95=88;=20=E8=B6=85=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=8A=A5=E9=94=99=E6=83=85=E5=86=B5=E4=B8=8B=E4=BC=9A?= =?UTF-8?q?=E5=81=B6=E5=8F=91=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=AF=A1=E6=94=B9DB=E7=9A=84=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/pcn/api/busi/IMesWorkOrderService.java | 3 +- .../controller/busi/MesWorkOrderController.java | 5 ++- .../serviceimpl/busi/MesWorkOrderService.java | 46 +++++++++++++--------- .../mes/pcn/pojo/model/MesWorkOrderExtModel.java | 16 ++++++++ 4 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesWorkOrderExtModel.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java index 96b4e50..664facd 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderExtModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.*; @@ -56,7 +57,7 @@ public interface IMesWorkOrderService { List getUnReportHasOrderMesProduceSn(String organizeCode); @ApiOperation(value = "生产报工") - void doProductReport(MesWorkOrder mesWorkOrder,String userName); + void doProductReport(MesWorkOrderExtModel mesWorkOrder, String userName); @ApiOperation(value = "报工调整") void doProductReportReversal(MesWorkOrder mesWorkOrder,MesProductVersion mesProductVersion,String userName); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java index 22bec65..2f0311f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderExtModel; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; @@ -64,9 +65,9 @@ public class MesWorkOrderController { @PostMapping(value = "/doProductReport") @ApiOperation(value = "生产报工") - public ResultBean doProductReport(MesWorkOrder mesWorkOrder) { + public ResultBean doProductReport(MesWorkOrderExtModel mesWorkOrder) { try { - workOrderService.doProductReport(mesWorkOrder, !StringUtils.isEmpty(mesWorkOrder.getModifyUser())?mesWorkOrder.getModifyUser():AuthUtil.getSessionUser().getUserName()); + workOrderService.doProductReport(mesWorkOrder, !StringUtils.isEmpty(mesWorkOrder.getModifyUser()) ? mesWorkOrder.getModifyUser() : AuthUtil.getSessionUser().getUserName()); return ResultBean.success("报工成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 93081e8..bf33f99 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -8,6 +8,7 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesProdRuleSortCfgDao; import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesProductionRecordDao; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderExtModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderSortReportModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; @@ -1007,14 +1008,14 @@ public class MesWorkOrderService implements IMesWorkOrderService { } @Override - public void doProductReport(MesWorkOrder mesWorkOrder, String userName) { + public void doProductReport(MesWorkOrderExtModel mesWorkOrder, String userName) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(mesWorkOrder.getId(),"id",packBean); MesWorkOrder mesWorkOrderDb = mesWorkOrderRDao.getByProperty(packBean); if (Objects.isNull(mesWorkOrderDb)) { MesPcnException.throwMesBusiException("工单id为【%s】工单信息不存在", mesWorkOrder.getId()); } - mesWorkOrderDb.setDescription(mesWorkOrder.getDescription()); + //查询物料信息 MesPart mesPart = iMesPartService.getMesPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode()); //查询产线信息 @@ -1023,32 +1024,41 @@ public class MesWorkOrderService implements IMesWorkOrderService { MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion()); //物料+生产版本获取bom信息 List mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); - mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty())); - //更新工单状态 + + //汇报数量与未完成数量的修改 先给入参对象赋值, 下面没有报错的情况下再赋给工单DB对象 + mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty())); double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); - mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); - if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) { + mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); + + //更新工单状态 + if (mesWorkOrder.getReportedQty() > mesWorkOrderDb.getQty()) { // 以下则是超工单逻辑 // 如果产线中没有配置超工单,则直接阻断 if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesWorkCenter.getIsCheckOrderQty())) { - MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); + MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrderDb.getWorkOrderNo(), mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); } // 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断 - double rate = MathOperation.div((mesWorkOrderDb.getReportedQty() - mesWorkOrderDb.getQty()), mesWorkOrderDb.getQty()); + double rate = MathOperation.div((mesWorkOrder.getReportedQty() - mesWorkOrderDb.getQty()), mesWorkOrderDb.getQty()); if (rate > MathOperation.div(mesWorkCenter.getOrderRate(), 100)) { - MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), mesWorkCenter.getOrderRate()); + MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrderDb.getWorkOrderNo(), mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty(), mesWorkCenter.getOrderRate()); } - mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); - } else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) { + mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + } else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrderDb.getQty())) { mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else { mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } - mesWorkOrderDb.setCompleteQty(mesWorkOrderDb.getReportedQty()); + + mesWorkOrderDb.setDescription(mesWorkOrder.getDescription()); + mesWorkOrderDb.setReportedQty(mesWorkOrder.getReportedQty()); + mesWorkOrderDb.setUnCompleteQty(mesWorkOrder.getUnCompleteQty()); mesWorkOrderDb.setRemark(mesWorkOrder.getRemark()); + + mesWorkOrderDb.setCompleteQty(mesWorkOrderDb.getReportedQty()); + String sn = getReportSn(mesWorkOrder.getOrganizeCode(), userName, mesPart); //更新工单 - updateMesWorkOrder(mesWorkOrderDb, userName,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT,mesWorkOrder.getNum()); + updateMesWorkOrder(mesWorkOrderDb, userName, MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT, mesWorkOrder.getNum()); //记录条码表&加工记录表 //insertMesProductionRecord(insertMesProduceSn(mesPart, sn, userName, mesWorkOrder),mesWorkOrderDb); insertMesProduceSn(mesPart, sn, userName, mesWorkOrder); @@ -1056,9 +1066,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { if (Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())) { //保存数据 List mesProductOffLineList = new ArrayList<>(); - String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription(); + String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription()) ? TimeTool.getNowTime(true) : mesWorkOrder.getDescription(); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime,mesBoms.size())); + mesProductOffLineList.add(creatMesProductOffLine(userName, mesWorkOrder, mesProductVersion, sn, mesBom, nowTime, mesBoms.size())); } mesProductOffLineRDao.saveAll(mesProductOffLineList); } @@ -1085,7 +1095,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { List mesProductOffLineList = new ArrayList<>(); String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBomList) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime, mesBomList.size())); + mesProductOffLineList.add(creatMesProductOffLine(userName, mesWorkOrder, mesProductVersion, sn, mesBom, nowTime, mesBomList.size())); } mesProductOffLineRDao.saveAll(mesProductOffLineList); } @@ -1338,7 +1348,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { return syncFuncService.syncSerialNo(new GenSerialNoModel(MesCommonConstant.REPORT_SN).partSnParam(part.getPartSnParam()).organizeCode(organizeCode),userName, organizeCode, 1).getResultList().iterator().next().toString(); } - private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, + private MesProductOffLine creatMesProductOffLine(String userName, MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, String sn, MesBom mesBom, String nowTime,Integer bomTotalSize) { MesProductOffLine newMesProductOffLine; newMesProductOffLine = new MesProductOffLine(); @@ -1365,7 +1375,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { newMesProductOffLine.setDescription(nowTime); newMesProductOffLine.setBomTotalSize(bomTotalSize); newMesProductOffLine.setBomCode(mesBom.getBomCode()); - ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); + ConvertBean.serviceModelInitialize(newMesProductOffLine, userName); return newMesProductOffLine; } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesWorkOrderExtModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesWorkOrderExtModel.java new file mode 100644 index 0000000..e085211 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesWorkOrderExtModel.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import lombok.Data; + +import java.io.Serializable; + +/** + * 继承工单表,工单MODEL + */ +@Data +public class MesWorkOrderExtModel extends MesWorkOrder implements Serializable { + + private static final long serialVersionUID = 610097769881711086L; + +}