From 0c67b0f7aedc2b47540221e74d2778fa9c8be7fe Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Fri, 13 Mar 2026 10:16:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E6=A3=80=E9=AA=8C,=E4=B8=BE=E6=89=8B=E5=85=8D=E8=B4=A3?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/request/ReviewSheetErpSearch.java | 2 + .../pojo/vo/ReviewSheetRedoScrapVO.java | 2 + .../controller/InspectionTaskController.java | 22 +- .../controller/RaiseHandController.java | 28 ++ .../controller/ReviewSheetController.java | 3 + .../quality/mapper/InspectionTaskMapper.xml | 4 +- .../desk/quality/mapper/ReviewSheetMapper.xml | 10 +- .../impl/InspectionTaskServiceImpl.java | 4 +- .../service/impl/ReviewSheetServiceImpl.java | 13 +- .../desk/quality/util/FullMergeExcelUtil.java | 245 ++++++++++++++++++ 10 files changed, 315 insertions(+), 18 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java index 9249d360b..aa5bd9cec 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/ReviewSheetErpSearch.java @@ -16,6 +16,8 @@ public class ReviewSheetErpSearch extends ReviewSheet { @Schema(description = "责任零件") private String dutyPart; + @Schema(description = "责任批号") + private String dutyBatNo; private String createTimeStart; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java index 9a9c18e05..9b0b52851 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRedoScrapVO.java @@ -26,4 +26,6 @@ public class ReviewSheetRedoScrapVO extends ReviewSheet { private String priceBeforePlate; @Schema(description = "物料名称") private String partName; + @Schema(description = "物料号") + private String partCode; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java index 80c049e07..8c4fe7670 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java @@ -265,17 +265,19 @@ public class InspectionTaskController extends BladeController { inspectionTask.setId(id); InspectionTask detail = service.getOne(Condition.getQueryWrapper(inspectionTask)); WorkPlan workPlan = workPlanService.getOne(new QueryWrapper().lambda().eq(WorkPlan::getId, detail.getWpId())); - List list = macToolUseService.listSlotInfo(workPlan); - if(null != listSheet && listSheet.size() > 0){ - list.forEach(one -> { - one.setIsShow("1"); - }); - }else{ - list.forEach(one -> { - one.setIsShow("0"); - }); + List list = new ArrayList<>(); + if(null != workPlan){ + list = macToolUseService.listSlotInfo(workPlan); + if(null != listSheet && listSheet.size() > 0){ + list.forEach(one -> { + one.setIsShow("1"); + }); + }else{ + list.forEach(one -> { + one.setIsShow("0"); + }); + } } - return R.data(list); // return service.getSamePlace(id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java index b12ebe464..630258310 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/RaiseHandController.java @@ -23,6 +23,7 @@ import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.PreAuth; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; @@ -41,6 +42,7 @@ import org.springblade.desk.quality.service.ILiquidTankTaskCopyService; import org.springblade.desk.quality.service.ILiquidTankWaveService; import org.springblade.desk.quality.service.IRaiseHandService; import org.springblade.desk.quality.service.IRelTankWaveItemService; +import org.springblade.desk.quality.util.FullMergeExcelUtil; import org.springblade.desk.quality.wrapper.LiquidTankTaskCopyWrapper; import org.springblade.desk.quality.wrapper.LiquidTankWaveWrapper; import org.springblade.desk.quality.wrapper.RaiseHandWrapper; @@ -239,4 +241,30 @@ public class RaiseHandController extends BladeController { ); return R.status(service.saveBatch(importList)); } + + @GetMapping("/exportData") + @ApiOperationSupport(order = 70) + @Operation(summary = "导出Excel", description = "传入LiquidTankTaskCopy") + @PreAuth + public void exportData(Long id, + HttpServletResponse response) { + List list = new ArrayList<>(); + String name = "举手免责信息收藏"; + String tableTtile ="bbb"; + try { + FullMergeExcelUtil.exportHandExcel( + response, + "举手免责", + name, + tableTtile, + new String[]{"", "", "填写具体班组或个人", "岗位", "发生时间", "免责问题描述", "处理人", + "是否涉及免除金额", "免除金额(元)","处理时间","纠正措施","固化文件","是否闭环", + "闭环日期","问题是否需要在公司范围内举一反三","问题是否涉及用户"}, + list, + new int[]{0} + ); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java index a1e26c312..d03724cf2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java @@ -215,6 +215,9 @@ public class ReviewSheetController extends BladeController { // .peek(service::setErpVOValue) // .collect(Collectors.toList()); // return R.data(pagesVO); + if(null == search.getRsCode() && null == search.getDutyPart() && null == search.getDutyBatNo()){ + search.setRsCode("########################"); + } IPage pagesVO = service.listErp(Condition.getPage(query), search); return R.data(pagesVO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml index 61d5be226..1408a1d9e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml @@ -93,7 +93,9 @@ wo.TEST_QTY as orderCheckQty, wo.LOSS_QTY as orderLossQty, wo.SCRAP_QTY as orderScrapQty, - wo.CARD_NO AS cardNo + wo.CARD_NO AS cardNo, + dp.KEY_INFO as keyInfo, + dp.REMARKS as remark FROM QA_INSPECTION_TASK t -- 车间作业计划 wp LEFT JOIN MES_WORK_PLAN wp ON t.WP_ID = wp.ID diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml index 7c5a7b1ae..abdc9a6e0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml @@ -211,7 +211,7 @@ -- 车间作业计划 wp LEFT JOIN MES_WORK_PLAN wp ON rs.WP_ID = wp.ID -- 车间订单 wo - LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID + LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID -- 生产订单 yo LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID -- 外协厂商 oem @@ -266,12 +266,16 @@ + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml index 91aca3f81..44bf291ab 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml @@ -29,10 +29,60 @@ + - select * from MES_MAKE_REC where is_deleted = 0 + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index c4cb058ce..b9f6ffd4c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -50,4 +50,6 @@ public interface IMacToolUseService extends BaseService { MacToolUse getDataByWpIdAndIndex(Long id, String number); MacToolUse getHangNumIsNull(Long id); + + MacToolUse queryByParams(Long id, Integer rsBool, Integer fsBool, Integer ecBool); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java index 43288a91f..4d2cefce9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java @@ -26,7 +26,7 @@ public interface IMakeRecService extends BaseService { * 增加工序记录 * @param makeRecDTO */ - void saveMakeRec(MakeRecDTO makeRecDTO); + boolean saveMakeRec(MakeRecDTO makeRecDTO); IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index 0a2580c5c..d6abb2f4f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -2,10 +2,7 @@ package org.springblade.desk.produce.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; -import org.springblade.desk.produce.pojo.dto.InBatchesDTO; -import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; -import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; -import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; +import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; import org.springblade.desk.produce.pojo.entity.WorkPlan; @@ -190,4 +187,6 @@ public interface IWorkOrderService extends BaseService { * @param workOrder 订单 */ void updateHostWorkUnit(WorkOrder workOrder); + + boolean updatePriority(UpdatePriorityDTO updatePriorityDTO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index cddcf93be..df8098384 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -127,6 +127,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl private final IMesEquipmentCardService mesEquipmentCardService; + private final IUserRightService userRightService; + + private final IMesRbFilePreserveSlotService mesRbFilePreserveSlotService; + + private final IMesRbFilePreserveDetailService mesRbFilePreserveDetailService; + @Override public WorkPlanDto loadCurrentWp(String cardNo) { WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0); @@ -95,7 +104,7 @@ public class MakeRecServiceImpl extends BaseServiceImpl if (!WorkPlan.STATUS_START.equals(wp.getStatus())) { throw new ServiceException("当前工序已报工完成!"); } -// this.checkTeamWorkPlan(wp, prWorkPlanService.getTeamId(userInfo.getUserId())); + this.checkTeamWorkPlan(wp, this.getTeamId(AuthUtil.getUserId())); boolean isBinging = false; // 查询当前工序是否绑定了挂次号 long count = macToolUseService.count(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).isNotNull(MacToolUse::getHangNum)); @@ -103,89 +112,105 @@ public class MakeRecServiceImpl extends BaseServiceImpl isBinging = true; } YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId()); - return WorkPlanDto.builder().workPlan(wp).workOrder(wo).yieldOrder(yieldOrder).isBinging(isBinging).build(); + WorkPlanDto workPlanDto = new WorkPlanDto(yieldOrder, wo, wp, isBinging); + workPlanDto.setCurrentWpTitle(""); + workPlanDto.setCurrentMakeTeam(""); + workPlanDto.setFrontWpTitle(""); + workPlanDto.setFrontMakeTeam(""); + workPlanDto.setNextWpTitle(""); + workPlanDto.setNextMakeTeam(""); + return workPlanDto; + } + + private void checkTeamWorkPlan(WorkPlan wp, List teamId) { + Long tsId; + //判断是否特殊工序,如果是特殊工序验证附属班组,反之则为分派班组 + //20260304 逻辑更改,若存在附属班组,则验证附属班组,不存在附属班组,验证加工班组 + if (wp.getSubsidiaryTeam() != null) { + tsId = wp.getSubsidiaryTeam(); + } else { + tsId = wp.getMakeTeam(); + } + + if (teamId == null) { + throw new ServiceException("当前登录人无对应班组!"); + } + if (!teamId.contains(tsId)) { + throw new ServiceException("当前工序不是登录人所在班组工序,不能操作!"); + } + } + + private List getTeamId(Long userId) { + List bsTeamSet = userRightService.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, "bs_team_set")); + if (CollectionUtils.isEmpty(bsTeamSet)) { + return null; + } + return bsTeamSet.stream().map(UserRight::getTheId).toList(); } @Override - public void saveMakeRec(MakeRecDTO makeRecDTO) { + public boolean saveMakeRec(MakeRecDTO makeRecDTO) { WorkPlan wp = workPlanMapper.selectById(makeRecDTO.getWpId()); if (!WorkPlan.STATUS_START.equals(wp.getStatus())) { - throw new ServiceException("product.prWorkPlan.workOk"); + throw new ServiceException("当前工序已报工完成!"); } - MacToolUse mtu = null; + MacToolUse mtu; DsProcessEntity dsProcess = dsProcessService.getById(wp.getPpsId()); + DsProcessEntity frontProcess = dsProcessService.getById(wp.getFrontWpId()); //如果是上挂工序,需判定是否绑定挂具 - if (dsProcess.getProcessName().equals("上挂")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet)); + if ("上挂".equals(dsProcess.getProcessName())) { + mtu = macToolUseService.queryByParams(wp.getId(), 1, 0, 0); if (mtu == null) { - throw new ServiceException("product.prWorkPlan.not.bing.bsRackSet"); + throw new ServiceException("上挂工序未绑定挂具!"); } // 如果上序是上挂工序、并且本序是主工序,则代表本序是 需要绑定飞靶及设备的工序 或者手动维护生产追溯信息 - } else if (wp.getFrontWpId() != null && dsProcess.getProcessName().equals("上挂") && wp.getCruxProcess().equals("是")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard)); + } else if (wp.getFrontWpId() != null && "上挂".equals(frontProcess.getProcessName()) && "1".equals(wp.getCruxProcess())) { + mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1); if (mtu == null) { // 验证是否维护了生产追溯信息 - List mtnCodeList = macToolUseService.listObjs(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode)); - List qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList)); - if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) { - throw new ServiceException("product.prWorkPlan.not.bing"); + List qcProduceRunList = mesQcProduceRunService.listPrByWpId(wp.getId()); + if (!(qcProduceRunList != null && !qcProduceRunList.isEmpty())) { + throw new ServiceException("此工序卡未绑定飞靶或设备!"); } } } else if (dsProcess.getProcessName().contains("镀金")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsFeiBaSet)); + mtu = macToolUseService.queryByParams(wp.getId(), 0, 1, 0); if (mtu == null) { throw new ServiceException("此工序未绑定飞跋,请绑定飞跋!!!"); } //验证是否绑定设备 - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard)); + mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1); if (mtu == null) { List produceRunList = null; - List mtnCodeList = macToolUseService.listObjs(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex, 1).select(MacToolUse::getMtnCode)); - produceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱")); - if (produceRunList == null || produceRunList.size() == 0) { - List mtnCodeList2 = macToolUseService.listObjs(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex, 2).select(MacToolUse::getMtnCode)); - produceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList2).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱")); + produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wp.getId(), 1, Boolean.FALSE); + if (produceRunList == null || produceRunList.isEmpty()) { + produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wp.getId(), 2, Boolean.FALSE); } - if (!(produceRunList != null && produceRunList.size() > 0)) { + if (!(produceRunList != null && !produceRunList.isEmpty())) { throw new ServiceException("未绑定飞跋和设备或未维护生产追溯信息!!!"); } } - } else if (dsProcess.getProcessName().equals("玻璃封接清洗") || dsProcess.getProcessName().equals("玻璃封接退火") || - dsProcess.getProcessName().equals("玻璃封接预氧化(箱式炉)") || dsProcess.getProcessName().equals("玻璃封接预氧化(链式炉)") || - dsProcess.getProcessName().equals("玻璃封接(链式炉)") || dsProcess.getProcessName().equals("玻璃封接(真空炉)") || - dsProcess.getProcessName().equals("玻璃封接灌胶") || dsProcess.getProcessName().equals("玻璃饼压制") || - dsProcess.getProcessName().equals("玻璃饼排蜡玻化") || dsProcess.getProcessName().equals("玻璃饼振光") || - dsProcess.getProcessName().equals("石墨模烘干") || dsProcess.getProcessName().equals("石墨模焙烧") || - dsProcess.getProcessName().equals("真空炉灌胶") || dsProcess.getProcessName().equals("玻璃封接电镀去氧化皮") || - dsProcess.getProcessName().equals("玻璃封接电化学抛光") || dsProcess.getProcessName().equals("玻璃封接湿喷砂") || - dsProcess.getProcessName().equals("玻璃封接电镀") || dsProcess.getProcessName().equals("玻璃封接插针电镀") || - dsProcess.getProcessName().equals("玻璃封接壳体电镀") || dsProcess.getProcessName().equals("玻璃封接电镀下挂") || - dsProcess.getProcessName().equals("烧结浸保护剂")) { - mtu = macToolUseService.getOne(Wrappers.lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) - .isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard)); + } else if ("玻璃封接清洗".equals(dsProcess.getProcessName()) || "玻璃封接退火".equals(dsProcess.getProcessName()) || + "玻璃封接预氧化(箱式炉)".equals(dsProcess.getProcessName()) || "玻璃封接预氧化(链式炉)".equals(dsProcess.getProcessName()) || + "玻璃封接(链式炉)".equals(dsProcess.getProcessName()) || "玻璃封接(真空炉)".equals(dsProcess.getProcessName()) || + "玻璃封接灌胶".equals(dsProcess.getProcessName()) || "玻璃饼压制".equals(dsProcess.getProcessName()) || + "玻璃饼排蜡玻化".equals(dsProcess.getProcessName()) || "玻璃饼振光".equals(dsProcess.getProcessName()) || + "石墨模烘干".equals(dsProcess.getProcessName()) || "石墨模焙烧".equals(dsProcess.getProcessName()) || + "真空炉灌胶".equals(dsProcess.getProcessName()) || "玻璃封接电镀去氧化皮".equals(dsProcess.getProcessName()) || + "玻璃封接电化学抛光".equals(dsProcess.getProcessName()) || "玻璃封接湿喷砂".equals(dsProcess.getProcessName()) || + "玻璃封接电镀".equals(dsProcess.getProcessName()) || "玻璃封接插针电镀".equals(dsProcess.getProcessName()) || + "玻璃封接壳体电镀".equals(dsProcess.getProcessName()) || "玻璃封接电镀下挂".equals(dsProcess.getProcessName()) || + "烧结浸保护剂".equals(dsProcess.getProcessName())) { + mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1); if (mtu == null) { // 验证是否维护了生产追溯信息 - List qcProduceRunList = null; - List mtnCodeList = macToolUseService.listObjs(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode)); - qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery() - .in(MesQcProduceRunEntity::getMtnCode, mtnCodeList)); - if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) { - throw new ServiceException("product.prWorkPlan.not.bing"); + List qcProduceRunList = mesQcProduceRunService.listPrByWpId(wp.getId()); + if (!(qcProduceRunList != null && !qcProduceRunList.isEmpty())) { + throw new ServiceException("此工序卡未绑定飞靶或设备!"); } } } - //周新昊 20241114 验证手动维护设备使用记录的工序电子档案数据是否维护完备 - Boolean aBoolean = true; //this.chkRfpDetail(wp); + boolean aBoolean = this.chkRfpDetail(wp.getId()); if (!aBoolean) { throw new ServiceException("生产记录未填写完整,不允许报工!!!!"); } @@ -197,8 +222,9 @@ public class MakeRecServiceImpl extends BaseServiceImpl baseMapper.insertOrUpdate(mr); if (mr.getScrapQty() > 0) { wp.setScrapQty(wp.getScrapQty() + mr.getScrapQty()); - WorkOrder wo = null;//workOrderService.getById(wp.getWoId()); + WorkOrder wo = workOrderMapper.selectById(wp.getWoId()); wo.setMakeQty(wo.getMakeQty() - mr.getScrapQty()); + workOrderMapper.updateById(wo); } wp.setWorkQty(wp.getWorkQty() + mr.getWorkQty()); if (wp.getQualifiedQty().equals(wp.getScrapQty() + wp.getWorkQty())) { @@ -206,7 +232,6 @@ public class MakeRecServiceImpl extends BaseServiceImpl } if ("热处理".equals(dsProcess.getProcessName())) { wp.setPrintType((short) 1); - //workPlanService.saveOrUpdate(wp); String code = macToolUseService.nextCode(2); MacToolUse prMacToolUse = new MacToolUse(); prMacToolUse.setWpId(wp.getId()); @@ -232,61 +257,230 @@ public class MakeRecServiceImpl extends BaseServiceImpl qcProduceRun.setDataSeven(makeRecDTO.getShape()); mesQcProduceRunService.save(qcProduceRun); } - // 保存引用文件或版本号 - WorkOrder prWorkOrder = null; //workOrderService.getById(wp.getWoId()); - if (prWorkOrder != null && prWorkOrder.getId() != null) { - YieldOrder pjYieldOrder = yieldOrderService.getById(prWorkOrder.getYoId()); - if (pjYieldOrder != null && pjYieldOrder.getId() != null) { - BsProcessSetEntity procedureSet = bsProcessSetService.getById(wp.getPpsId()); - AuditFile dsAuditFile = null; - // 如果本序是涂色标或喷砂,直接查维护的数据 - if ("涂色标".equals(procedureSet.getName()) || "喷砂".equals(procedureSet.getName())) { - dsAuditFile = auditFileService.getOne(Wrappers.lambdaQuery() - .eq(AuditFile::getPpsId, procedureSet.getId())); - } else { - // 如果不是优先判断是否有生产标识 - String prodIdent = pjYieldOrder.getProductIdent(); - BsTeamSetEntity bsTeamSet = teamSetService.getOne(Wrappers.lambdaQuery() - .eq(BsTeamSetEntity::getId, wp.getMakeTeam())); - if (!"AH".equals(prodIdent)) { - prodIdent = null; - } - if (bsTeamSet != null && bsTeamSet.getId() != null) { - // BsCenterTeamEntity bsCenterTeam = bsCenterTeamService.getByTsId(bsTeamSet.getTsId()); - DsPartEntity dsPart = partService.getOne(Wrappers.lambdaQuery().eq(DsPartEntity::getPartCode, pjYieldOrder.getPartCode())); - String productApparea = null; - if (dsPart != null && dsPart.getId() != null) { - productApparea = dsPart.getProductSeries(); + workPlanMapper.updateById(wp); + // 2025-07-23 线上迁移修改 + MacToolUse macToolUse = macToolUseService.getDataByWpIdAndIndex(wp.getId(), "2"); + if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) { + macToolUse.setFinished(1); + String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : ""; + log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished()); + macToolUseService.updateById(macToolUse); + } + return true; + } + + private boolean chkRfpDetail(Long wpId) { + List macToolUses = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class).isNotNull(MacToolUse::getRfpId).ne(MacToolUse::getMtuIndex, "2").eq(MacToolUse::getWpId, wpId)); + if (CollectionUtils.isNotEmpty(macToolUses)) { + for (MacToolUse macToolUs : macToolUses) { + List qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class).eq(MesQcProduceRunEntity::getMtnCode, macToolUs.getMtnCode()) + .and(wrapper -> wrapper.isNull(MesQcProduceRunEntity::getWorkSlot).or().notLike(MesQcProduceRunEntity::getWorkSlot, "入料区")).orderByAsc(MesQcProduceRunEntity::getId)); + Map qcProduceRunMap = qcProduceRunList.stream().collect(Collectors.toMap(MesQcProduceRunEntity::getWorkSlot, Function.identity())); + List dsRbFilePreserveSlots = mesRbFilePreserveSlotService.list(Wrappers.lambdaQuery(MesRbFilePreserveSlotEntity.class).eq(MesRbFilePreserveSlotEntity::getRfpId, macToolUs.getRfpId()).orderByAsc(MesRbFilePreserveSlotEntity::getSlotIndex)); + if (CollectionUtils.isNotEmpty(dsRbFilePreserveSlots)) { + for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : dsRbFilePreserveSlots) { + MesQcProduceRunEntity qcProduceRun = qcProduceRunMap.get(dsRbFilePreserveSlot.getSlotName()); + if (qcProduceRun != null) { + List dsRbFilePreserveDetails = mesRbFilePreserveDetailService.getByRfpsId(dsRbFilePreserveSlot.getId()); + if (CollectionUtils.isNotEmpty(dsRbFilePreserveDetails)) { + if (dsRbFilePreserveSlot.getRfpsType() == 1) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 2) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 3 || dsRbFilePreserveSlot.getRfpsType() == 11) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 4 || dsRbFilePreserveSlot.getRfpsType() == 12) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 5 || dsRbFilePreserveSlot.getRfpsType() == 22) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 6) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 7 || dsRbFilePreserveSlot.getRfpsType() == 18) { + if (StringUtils.isBlank(qcProduceRun.getDataOne())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 8) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 9) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 13) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 14) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 15) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen()) + || StringUtils.isBlank(qcProduceRun.getDataEleven()) + || StringUtils.isBlank(qcProduceRun.getDataTwelve())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 16) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine()) + || StringUtils.isBlank(qcProduceRun.getDataTen()) + || StringUtils.isBlank(qcProduceRun.getDataEleven()) + || StringUtils.isBlank(qcProduceRun.getDataTwelve()) + || StringUtils.isBlank(qcProduceRun.getDataThirteen()) + || StringUtils.isBlank(qcProduceRun.getDataFourteen())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 17) { + if (StringUtils.isBlank(qcProduceRun.getInDate()) + || StringUtils.isBlank(qcProduceRun.getOutDate()) + || StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix())) { + return false; + } + } else if (dsRbFilePreserveSlot.getRfpsType() == 21) { + if (StringUtils.isBlank(qcProduceRun.getDataOne()) + || StringUtils.isBlank(qcProduceRun.getDataTwo()) + || StringUtils.isBlank(qcProduceRun.getDataThree()) + || StringUtils.isBlank(qcProduceRun.getDataFour()) + || StringUtils.isBlank(qcProduceRun.getDataFive()) + || StringUtils.isBlank(qcProduceRun.getDataSix()) + || StringUtils.isBlank(qcProduceRun.getDataSeven()) + || StringUtils.isBlank(qcProduceRun.getDataEight()) + || StringUtils.isBlank(qcProduceRun.getDataNine())) { + return false; + } + } + } } -// if (productApparea!=null){ -// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndApparea(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(),productApparea); -// } -// if (bsCenterTeam != null && bsCenterTeam.getCtId() != null && dsAuditFile == null) { -// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndPqName(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(), prodIdent); -// } } } - if (dsAuditFile != null && dsAuditFile.getId() != null) { - wp.setPapers(dsAuditFile.getPapers()); - wp.setReferenceFile(dsAuditFile.getReferenceFile()); - //workPlanService.updateById(wp); - } - // 2025-07-23 线上迁移修改 - MacToolUse macToolUse = macToolUseService.getOne(Wrappers.lambdaQuery() - .eq(MacToolUse::getWpId, wp.getId())); - if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) { - macToolUse.setFinished(1); - String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : ""; - log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished()); - macToolUseService.updateById(macToolUse); - } } } + return true; } @Override public IPage selectMesMakeRecPage(IPage page, MesMakeRecVO mesMakeRec) { - return page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); + IPage mesMakeRecVOIPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); + List records = mesMakeRecVOIPage.getRecords(); + if (CollectionUtils.isNotEmpty(records)) { + List ppsIds = new ArrayList<>(); + List makeTeams = new ArrayList<>(); + for (MesMakeRecVO record : records) { + ppsIds.add(record.getPpsId()); + if (record.getFrontPpsId() != null) { + ppsIds.add(record.getFrontPpsId()); + } + if (record.getNextPpsId() != null) { + ppsIds.add(record.getNextPpsId()); + } + if (record.getMakeTeam() != null) { + makeTeams.add(record.getMakeTeam()); + } + if (record.getFrontMakeTeam() != null) { + makeTeams.add(record.getFrontMakeTeam()); + } + if (record.getNextMakeTeam() != null) { + makeTeams.add(record.getNextMakeTeam()); + } + } + List processSets = bsProcessSetService.list(Wrappers.lambdaQuery(BsProcessSetEntity.class).in(BsProcessSetEntity::getId, ppsIds)); + Map processSetMap = processSets.stream().collect(Collectors.toMap(BsProcessSetEntity::getId, BsProcessSetEntity::getName)); + + List teams = teamSetService.list(Wrappers.lambdaQuery(BsTeamSetEntity.class).in(BsTeamSetEntity::getId, makeTeams)); + Map teamMap = teams.stream().collect(Collectors.toMap(BsTeamSetEntity::getId, BsTeamSetEntity::getTsName)); + for (MesMakeRecVO record : records) { + User user = UserCache.getUser(record.getWorker()); + record.setWorkerName(user != null ? user.getRealName() : ""); + record.setPpsName(processSetMap.get(record.getPpsId())); + record.setMakeTeamName(teamMap.get(record.getMakeTeam())); + record.setFrontPpsName(processSetMap.get(record.getFrontPpsId())); + record.setFrontMakeTeamName(teamMap.get(record.getFrontMakeTeam())); + record.setNextPpsName(processSetMap.get(record.getNextPpsId())); + record.setNextMakeTeamName(teamMap.get(record.getNextMakeTeam())); + } + mesMakeRecVOIPage.setRecords(records); + } + return mesMakeRecVOIPage; } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 631a2ff54..e8d434c12 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -43,10 +43,7 @@ import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.PlateAroundMapper; import org.springblade.desk.produce.mapper.WorkOrderMapper; -import org.springblade.desk.produce.pojo.dto.InBatchesDTO; -import org.springblade.desk.produce.pojo.dto.ListProProcessDTO; -import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; -import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; +import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.enums.WorkOrderEnum; import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum; @@ -1635,6 +1632,26 @@ public class WorkOrderServiceImpl extends BaseServiceImpl