From 6e83356ec408d2d7fc6fd0923beb2b09c4728b09 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 20 Dec 2024 11:38:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=8B=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/pcn/api/base/IMesReworkTaskService.java | 4 + .../mes/pcn/api/busi/IMesAssemblyExtService.java | 16 ++++ .../mes/pcn/api/busi/IMesProduceSnExtService.java | 7 ++ .../controller/busi/MesReworkTaskController.java | 16 ++++ .../serviceimpl/base/MesReworkTaskServiceImpl.java | 106 ++++++++++++++++++++- .../serviceimpl/busi/MesAssemblyExtService.java | 47 +++++++++ .../serviceimpl/busi/MesProduceSnExtService.java | 21 +++- .../ext/mes/pcn/pojo/model/MesReworkTaskModel.java | 6 ++ .../pcn/pojo/model/MesReworkTaskRequestModel.java | 3 + .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 6 ++ 10 files changed, 228 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesReworkTaskService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesReworkTaskService.java index 090521f..ef7c1f3 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesReworkTaskService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesReworkTaskService.java @@ -41,8 +41,12 @@ public interface IMesReworkTaskService { void doReworkSuccess(MesReworkTaskRequestModel requestModel); + @ApiOperation(value = "排序拆解") + void doSortOrderDismantle(MesReworkTaskRequestModel requestModel); + MesProduceSnPrintModel doPrint(MesReworkTaskRequestModel requestModel); @ApiOperation(value = "扫描条码替换装配件") void doAssemblySnRepeatByScan(MesReworkTaskRequestModel requestModel); + } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java index 8d5c3eb..086ac76 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblySortContext; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.mes.bean.*; import io.swagger.annotations.ApiOperation; @@ -29,6 +30,9 @@ public interface IMesAssemblyExtService { @ApiOperation(value = "获取装配件规则且唯一绑定记录") List getProductionAssemblyUniqueList(String organizeCode, String assemblySn); + @ApiOperation(value = "根据零件条码或者加工单获取装配件规则且唯一绑定记录") + List getProductionAssemblyUniqueListByProductSn(String organizeCode, String productSn); + @ApiOperation(value = "获取非排序装配件配置信息") List getProductionAssemblyNosortContextList(MesProdRuleContext prodRuleContext); @@ -47,4 +51,16 @@ public interface IMesAssemblyExtService { @ApiOperation(value = "【排序线】获取生产工单装配件清单") List getWorkOrderAssemblyList(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo, List productSnList); + @ApiOperation(value = "获取工单装配件记录") + List getWorkOrderAssemblyList(String organizeCode, String workOrderNo); + + @ApiOperation(value = "根据条件修改装配件绑定记录的装配状态") + void saveProductionAssemblyStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus); + + @ApiOperation(value = "根据条件修改装配件绑定唯一性记录的装配状态") + void saveProductionAssemblyUniqueStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus); + + @ApiOperation(value = "根据条件修改工单装配件记录的装配状态") + void saveWorkOrderAssemblyStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus); + } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java index 9d89691..10ad5fd 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; @@ -18,6 +19,9 @@ public interface IMesProduceSnExtService { @ApiOperation(value = "根据零件条码查询零件条码信息") List getProduceSnList(String organizeCode, String productSn); + @ApiOperation(value = "根据产品条码查询零件条码信息[非排序],创建时间最新") + MesProduceSn getProduceSnCreateDatetimeDesc(String organizeCode, String productSn); + @ApiOperation(value = "根据客户条码查询零件条码信息[排序]") MesProduceSn getProduceSnByCustSn(String organizeCode, String custSn); @@ -51,6 +55,9 @@ public interface IMesProduceSnExtService { @ApiOperation(value = "根据零件条码ID修改条码状态,工位") void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList); + @ApiOperation(value = "根据条件修改条码状态") + void saveProduceSntatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer snStatus); + MesProduceSn insert(MesProduceSn item); void update(MesProduceSn item); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesReworkTaskController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesReworkTaskController.java index 97d3b31..ac46965 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesReworkTaskController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesReworkTaskController.java @@ -161,6 +161,22 @@ public class MesReworkTaskController { } } + @PostMapping("/sort-order-dismantle/do") + @ApiOperation(value = "排序拆解") + public ResultBean doSortOrderDismantle(@RequestBody MesReworkTaskRequestModel requestModel) { + try { + ValidatorBean.checkNotNull(requestModel.getReworkOrder(), "返工单不能为空"); + ValidatorBean.checkNotNull(requestModel.getOrganizeCode(), "工厂代码不能为空"); + ValidatorBean.checkNotNull(requestModel.getUserName(), "操作人不能为空"); + mesReworkTaskService.doSortOrderDismantle(requestModel); + return ResultBean.success("排序拆解成功"); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @GetMapping("/doPrint") @ApiOperation(value = "打印") public ResultBean doPrint(MesReworkTaskRequestModel requestModel) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java index b9aa4bf..f49e33f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java @@ -47,6 +47,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -201,7 +202,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { .sn(res.getSn()) .mesPartTypePicture(mesPartTypePicture) .mesPartInspection(mesPartInspection) - .mesPartInspectionDetails(mesPartInspectionDetails).build(); + .mesPartInspectionDetails(mesPartInspectionDetails) + .centerType(StringUtils.isEmpty(requestModel.getCenterType()) ? MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() : requestModel.getCenterType()) + .build(); return mesReworkTaskModel; @@ -335,6 +338,85 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { } @Override + public void doSortOrderDismantle(MesReworkTaskRequestModel requestModel) { + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(requestModel.getReworkOrder(), MesPcnExtConstWords.REWORK_ORDER, packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue(), MesPcnExtConstWords.STATUS, packBean); + MesReworkTask reworkTask = mesReworkTaskRepository.getByProperty(packBean); + if (null == reworkTask) MesPcnException.throwBusiException(String.format("返工单[%s]信息不存在!", requestModel.getReworkOrder())); + + MesProduceSn produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), reworkTask.getSn(), false); + if (null == produceSn) MesPcnException.throwBusiException(String.format("返工单[%s]关联的条码[%s]信息不存在!", requestModel.getReworkOrder(), reworkTask.getSn())); + + MesWorkOrder workOrder = workOrderExtService.getWorkOrder(requestModel.getOrganizeCode(), produceSn.getWorkOrderNo()); + if (null == produceSn) MesPcnException.throwBusiException(String.format("返工单[%s]关联的条码[%s]对应的加工单[%s]信息不存在!", requestModel.getReworkOrder(), reworkTask.getSn(), produceSn.getWorkOrderNo())); + + if (workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue()) == 0) + MesPcnException.throwBusiException(String.format("返工单[%s]关联的条码[%s]对应的加工单[%s]信息当前状态已为[%s]!", + requestModel.getReworkOrder(), reworkTask.getSn(), produceSn.getWorkOrderNo(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()))); + + //修改返工表状态为完成 + reworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue()); + ConvertBean.serviceModelUpdate(reworkTask, requestModel.getUserName()); + reworkTask.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + mesReworkTaskRepository.updateNoSync(reworkTask); + + //修改NC-零件检测-单据表 NC状态为拆解; qmsSync状态是否变更待确认 + packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(reworkTask.getId(), MesPcnExtConstWords.REWORK_TASK_ID, packBean); + mesPartInspectionRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.NC_STATUS}, + new Object[]{requestModel.getUserName(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.PART_INSPECTION_NC_STATUS.DISASSEMBLY.getValue()}, + packBean); + + //修改工单状态为已拆解 + workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue()); + workOrder.setModifyUser(requestModel.getUserName()); + workOrder.setModifyDatetime((new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date())); + workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + workOrderRepository.updateNoSync(workOrder); + + //修改条码状态为总成拆解 + packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean); + DdlPreparedPack.getStringEqualPack(produceSn.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean); + produceSnExtService.saveProduceSntatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue()); + + //查询装配件绑定记录表 + List productionAssemblyList = mesAssemblyExtService.getProductionAssemblyList(requestModel.getOrganizeCode(), workOrder.getWorkOrderNo()); + productionAssemblyList = CollectionUtils.isEmpty(productionAssemblyList) ? null : + productionAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) != 0)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(productionAssemblyList)) return; + + //将自制件类型的装配件对应的零件条码状态改成已拆解 + for (MesProductionAssembly productionAssembly : productionAssemblyList) { + if (null == productionAssembly) continue; + if (productionAssembly.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_10.getValue()) != 0) continue; + if (StringUtils.isEmpty(productionAssembly.getProductSn()) || StringUtils.isEmpty(productionAssembly.getPartNo())) continue; + packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(productionAssembly.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean); + DdlPreparedPack.getStringEqualPack(productionAssembly.getPartNo(), MesPcnExtConstWords.PART_NO, packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), MesPcnExtConstWords.SN_STATUS, packBean); + produceSnExtService.saveProduceSntatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_BACK.getValue()); + } + + //将装配件绑定记录表的非解绑状态的记录改为解绑状态 + packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean); + DdlPreparedPack.getNumNOEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue(), MesPcnExtConstWords.ASSEMBLY_STATUS, packBean); + mesAssemblyExtService.saveProductionAssemblyStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()); + + //将装配件绑定唯一性记录表的非解绑状态的记录改为解绑状态;条件公用 + mesAssemblyExtService.saveProductionAssemblyUniqueStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()); + + //将工单装配件表的非解绑状态的记录改为解绑状态;条件公用,增加工单条件 + DdlPreparedPack.getStringEqualPack(produceSn.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean); + mesAssemblyExtService.saveWorkOrderAssemblyStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()); + + } + + @Override public MesProduceSnPrintModel doPrint(MesReworkTaskRequestModel requestModel) { String organizeCode = requestModel.getOrganizeCode(); String userName = requestModel.getUserName(); @@ -864,10 +946,15 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { } private MesReworkTask getMesReworkTask(MesReworkTaskRequestModel requestModel) { + String workCenterCode = null; DdlPackBean packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); if (!StringUtils.isEmpty(requestModel.getSn())) { - MesProduceSn produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), requestModel.getSn(), false); - if(!StringUtil.isEmpty(produceSn)){ + //根据零件条码查询 + MesProduceSn produceSn = produceSnExtService.getProduceSnCreateDatetimeDesc(requestModel.getOrganizeCode(), requestModel.getSn()); + //不存在则进行二次查询排序条码 + if (null == produceSn) produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), requestModel.getSn(), false); + if (null != produceSn) { + workCenterCode = produceSn.getWorkCenterCode(); DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), "sn", packBean); }else { DdlPreparedPack.getStringEqualPack(requestModel.getSn(), "sn", packBean); @@ -882,6 +969,19 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { if (res == null) { throw new ImppBusiException("返工单信息不存在"); } + + //选择返工工单场景下 根据返工工单信息里面的条码进行反查生产线 + if (!StringUtils.isEmpty(requestModel.getReworkOrder())) { + MesProduceSn produceSn = produceSnExtService.getProduceSnCreateDatetimeDesc(requestModel.getOrganizeCode(), res.getSn()); + if (null == produceSn) produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), res.getSn(), false); + if (null != produceSn) workCenterCode = produceSn.getWorkCenterCode(); + } + + if (!StringUtils.isEmpty(workCenterCode)) { + //获取生产线类型, 用于前端判断, 支持点击 拆解按钮 还是 排序拆解按钮, 同时 返工完成按钮 根据生产线类型调用的接口不一样 + MesWorkCenter workCenter = prodOrgExtService.getWorkCenterDb(requestModel.getOrganizeCode(), workCenterCode); + if (null != workCenter) requestModel.setCenterType(workCenter.getCenterType()); + } return res; } private List getMesReworkTaskDetail(MesReworkTask mesReworkTask) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java index 87fb10b..c1b44b6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblySortContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; @@ -165,6 +166,13 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), assemblySn}); } + @Override + public List getProductionAssemblyUniqueListByProductSn(String organizeCode, String productSn) { + return productionAssemblyUniqueRepository.findByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PRODUCT_SN}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), productSn}); + } + //获取非排序装配件配置信息 @Override public List getProductionAssemblyNosortContextList(MesProdRuleContext prodRuleContext) { @@ -247,6 +255,15 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { return workOrderAssemblyRepository.findByHqlWhere(packBean); } + //获取工单装配件记录【排序】 + @Override + public List getWorkOrderAssemblyList(String organizeCode, String workOrderNo) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + return workOrderAssemblyRepository.findByHqlWhere(packBean); + } + //搜集非排序文件ID集合 private List filterNosortFileIdList(List assemblyNosortCfgList) { if (CollectionUtils.isEmpty(assemblyNosortCfgList)) return null; @@ -299,4 +316,34 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { return CollectionUtils.isEmpty(workCellMap) ? null : workCellMap.get(workCellCode); } + //根据条件修改装配件绑定记录的装配状态 + @Override + public void saveProductionAssemblyStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus) { + if (StringUtils.isEmpty(userInfo) || StringUtils.isEmpty(assemblyStatus)) return; + productionAssemblyRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS}, + new Object[]{userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), assemblyStatus}, + packBean); + } + + //根据条件修改装配件绑定唯一性记录的装配状态 + @Override + public void saveProductionAssemblyUniqueStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus) { + if (StringUtils.isEmpty(userInfo) || StringUtils.isEmpty(assemblyStatus)) return; + productionAssemblyUniqueRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS}, + new Object[]{userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), assemblyStatus}, + packBean); + } + + //根据条件修改工单装配件记录的装配状态 + @Override + public void saveWorkOrderAssemblyStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus) { + if (StringUtils.isEmpty(userInfo) || StringUtils.isEmpty(assemblyStatus)) return; + workOrderAssemblyRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS}, + new Object[]{userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), assemblyStatus}, + packBean); + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java index 0708879..269ee3f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java @@ -60,6 +60,16 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { return produceSnRepository.findByHqlWhere(packBean); } + //根据产品条码查询零件条码信息[非排序],创建时间最新 + @Override + public MesProduceSn getProduceSnCreateDatetimeDesc(String organizeCode, String productSn) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(productSn)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(productSn, MesPcnExtConstWords.PRODUCT_SN, packBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); + return produceSnRepository.getByProperty(packBean); + } + @Override public MesProduceSn getProduceSnByCustSn(String organizeCode, String custSn) { @@ -189,7 +199,7 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.ID, packBean); else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean); - produceSnRepository.updateByProperties( + produceSnRepository.updateByPropertiesNoSync( new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.SN_STATUS}, new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), snStatus}, packBean); @@ -197,6 +207,15 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { } @Override + public void saveProduceSntatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer snStatus) { + if (StringUtils.isEmpty(userInfo) || StringUtils.isEmpty(snStatus)) return; + produceSnRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SN_STATUS}, + new Object[]{userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), snStatus}, + packBean); + } + + @Override @MonitorLog public MesProduceSn insert(MesProduceSn item) { return produceSnRepository.insert(item); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskModel.java index 94e2e09..1b32b1a 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskModel.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskModel.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartTypePicture; import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection; import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail; import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask; +import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; @@ -38,4 +39,9 @@ public class MesReworkTaskModel { */ private List mesPartInspectionDetails; + /** + * 生产线类型 + */ + private Integer centerType; + } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskRequestModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskRequestModel.java index 9757a7d..0a463c7 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskRequestModel.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesReworkTaskRequestModel.java @@ -64,4 +64,7 @@ public class MesReworkTaskRequestModel { @ApiModelProperty("装配拆解List") private List assemblyModelList; + @ApiModelProperty("生产线类型") + private Integer centerType; + } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 871df7f..c2293de 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -279,6 +279,12 @@ public class MesPcnExtConstWords { public static final String REPORT_TYPE = "reportType"; //发运时间 public static final String SHIPPING_TIME = "shippingTime"; + //返工单 + public static final String REWORK_ORDER = "reworkOrder"; + //返工单ID + public static final String REWORK_TASK_ID = "reworkTaskId"; + //nc状态 + public static final String NC_STATUS = "nc_status"; //BaseBean字段不包含工厂, 用于对象复制剔除属性BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties)