From 088e145409aa4f3a4e4fb355843d2e6a6c02f8cb Mon Sep 17 00:00:00 2001 From: Houjie <714924425@qq.com> Date: 星期五, 12 九月 2025 18:03:06 +0800 Subject: [PATCH] 保养标准 --- src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java | 203 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 186 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java b/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java index b0321ff..3f248b6 100644 --- a/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java +++ b/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java @@ -9,23 +9,38 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.base.entity.Factory; +import org.jeecg.modules.base.enums.ProductionTypeEnum; +import org.jeecg.modules.base.service.IFactoryService; +import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; +import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; +import org.jeecg.modules.eam.entity.EamEquipment; +import org.jeecg.modules.eam.entity.EamInspectionOrder; +import org.jeecg.modules.eam.entity.EamInspectionOrderDetail; +import org.jeecg.modules.eam.entity.EamProcessCheck; +import org.jeecg.modules.eam.service.*; import org.jeecg.modules.mes.dto.MesProductionWorkOrderRepublishRequest; import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest; +import org.jeecg.modules.mes.entity.MesKittingCompletenessCheck; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import org.jeecg.modules.mes.enums.ProductionWorkOrderStatus; +import org.jeecg.modules.mes.service.IMesKittingCompletenessCheckService; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; +import org.jeecg.modules.mes.utils.CommonUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -37,11 +52,25 @@ */ @Api(tags = "鎺掍骇宸ュ崟") @RestController -@RequestMapping("/mesproductionworkorder/mesProductionWorkOrder") +@RequestMapping("/mes/mesProductionWorkOrder") @Slf4j public class MesProductionWorkOrderController extends JeecgController<MesProductionWorkOrder, IMesProductionWorkOrderService> { @Autowired private IMesProductionWorkOrderService mesProductionWorkOrderService; + @Autowired + private IMesKittingCompletenessCheckService mesKittingCompletenessCheckService; + @Autowired + private IEamInspectionOrderService eamInspectionOrderService; + @Autowired + private IEamInspectionOrderDetailService eamInspectionOrderDetailService; + @Autowired + private IEamProcessCheckService eamProcessCheckService; + @Autowired + private IEamProcessCheckDetailService eamProcessCheckDetailService; + @Autowired + private IEamEquipmentService eamEquipmentService; + @Autowired + private IFactoryService factoryService; /** * 鍒嗛〉鍒楄〃鏌ヨ @@ -92,6 +121,11 @@ mesProductionWorkOrderList.forEach(item -> { if (Objects.isNull(item.getId())) { item.setWorkOrderStatus(ProductionWorkOrderStatus.NEW.name()); + item.setCompletenessCheckFlag(CommonConstant.DEFAULT_0); + item.setEquipmentInspectionFlag(CommonConstant.DEFAULT_0); + item.setProcessInspectionFlag(CommonConstant.DEFAULT_0); + item.setActualQuantity(BigDecimal.ZERO); + item.setFinishedPallets(0); } }); mesProductionWorkOrderService.saveOrUpdateBatch(mesProductionWorkOrderList); @@ -136,13 +170,13 @@ @AutoLog(value = "鎺掍骇宸ュ崟-鍙戝竷鎺掍骇璁″垝") @ApiOperation(value = "鎺掍骇宸ュ崟-鍙戝竷鎺掍骇璁″垝", notes = "鎺掍骇宸ュ崟-鍙戝竷鎺掍骇璁″垝") - //@RequiresPermissions("mes:production:work:order:publish") + //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:publish") @RequestMapping(value = "/publish", method = {RequestMethod.POST, RequestMethod.PUT}) public Result<String> publish(@RequestParam("ids") String ids) { List<String> idList = Arrays.asList(ids.split(",")); List<MesProductionWorkOrder> list = mesProductionWorkOrderService.list(new LambdaQueryWrapper<MesProductionWorkOrder>() - .in(MesProductionWorkOrder::getId, idList) - .eq(MesProductionWorkOrder::getDelFlag, CommonConstant.DEL_FLAG_0)).stream() + .in(MesProductionWorkOrder::getId, idList) + .eq(MesProductionWorkOrder::getDelFlag, CommonConstant.DEL_FLAG_0)).stream() .filter(i -> !ProductionWorkOrderStatus.NEW.name().equals(i.getWorkOrderStatus())) .collect(Collectors.toList()); if (!list.isEmpty()) { @@ -153,7 +187,7 @@ MesProductionWorkOrder publish = new MesProductionWorkOrder() .setId(id) .setPublishTime(new Date()) - .setPublisher(Objects.requireNonNull(getCurrentUser()).getUsername()) + .setPublisher(Objects.requireNonNull(CommonUtils.getCurrentUser()).getUsername()) .setWorkOrderStatus(ProductionWorkOrderStatus.PUBLISHED.name()); publishList.add(publish); }); @@ -162,8 +196,8 @@ } @AutoLog(value = "鎺掍骇宸ュ崟-閲嶅彂甯冩帓浜ц鍒�") - @ApiOperation(value="鎺掍骇宸ュ崟-閲嶅彂甯冩帓浜ц鍒�", notes="閲嶅彂甯冩帓浜ц鍒�") - //@RequiresPermissions("mes:production:work:order:republish") + @ApiOperation(value = "鎺掍骇宸ュ崟-閲嶅彂甯冩帓浜ц鍒�", notes = "閲嶅彂甯冩帓浜ц鍒�") + //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:republish") @PostMapping(value = "/republish") public Result<String> republish(@RequestBody MesProductionWorkOrderRepublishRequest request) { MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(request.getId()); @@ -174,27 +208,153 @@ MesProductionWorkOrder republish = new MesProductionWorkOrder() .setId(request.getId()) .setPlanQuantity(request.getPlanQuantity()) - .setRepublisher(Objects.requireNonNull(getCurrentUser()).getUsername()) + .setRepublisher(Objects.requireNonNull(Objects.requireNonNull(CommonUtils.getCurrentUser()).getUsername())) .setRepublishTime(new Date()) .setRepublishReason(request.getRepublishReason()); mesProductionWorkOrderService.updateById(republish); return Result.ok("閲嶅彂甯冩垚鍔燂紒"); } + @AutoLog(value = "鎺掍骇宸ュ崟-榻愬鎬ф鏌�") + @ApiOperation(value = "鎺掍骇宸ュ崟-榻愬鎬ф鏌�", notes = "榻愬鎬ф鏌�") + //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:workOrderCompletenessCheck") + @GetMapping(value = "/workOrderCompletenessCheck") + public Result<List<MesKittingCompletenessCheck>> workOrderCompletenessCheck(@RequestParam("id") String id) { + MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(id); + if (workOrder == null) { + return Result.error("宸ュ崟涓嶅瓨鍦紒"); + } + if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus())) { + return Result.error("褰撳墠宸ュ崟鐘舵�佷笉鑳借繘琛岄綈濂楁�ф鏌ワ紒"); + } + Factory factory = factoryService.getById(workOrder.getFactoryId()); + String productionType = factory.getProductionType(); + if (ProductionTypeEnum.HEATTREATMENT.name().equals(productionType)) { + //鐑鐞嗕骇绾� + List<MesKittingCompletenessCheck> list = mesProductionWorkOrderService.workOrderCompletenessCheckOnHeatTreatment(workOrder); + return Result.ok(list); + } + //鍏朵綑浜х嚎 + List<MesKittingCompletenessCheck> list = mesProductionWorkOrderService.workOrderCompletenessCheck(workOrder); + return Result.ok(list); + } + @AutoLog(value = "鎺掍骇宸ュ崟-鎵ц鎺掍骇宸ュ崟璁″垝") @ApiOperation(value = "鎺掍骇宸ュ崟-鎵ц鎺掍骇宸ュ崟璁″垝", notes = "鎺掍骇宸ュ崟-鎵ц鎺掍骇宸ュ崟璁″垝") + //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:execute") @GetMapping(value = "/execute") public Result<?> execute(@RequestParam("id") String id) { MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(id); if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus())) { return Result.error("褰撳墠宸ュ崟鐘舵�佷笉鑳芥墽琛岋紒"); } - //todo 榻愬鎬ф鏌ャ�佸伐鑹虹偣妫�銆佽澶囩偣妫� 鐨勬牎楠岄�昏緫 + //妫�鏌ユ槸鍚﹀仛杩囬綈濂楁�ф鏌ャ�佸伐鑹虹偣妫�銆佽澶囩偣妫� + if (!completeCheck(workOrder)) { + return Result.error("璇峰厛瀹屾垚榻愬鎬ф鏌ャ�佸伐鑹虹偣妫�銆佽澶囩偣妫�锛�"); + } MesProductionWorkOrder executeOrder = new MesProductionWorkOrder() .setId(id) .setWorkOrderStatus(ProductionWorkOrderStatus.EXECUTING.name()); mesProductionWorkOrderService.updateById(executeOrder); return Result.ok("鎵ц鎴愬姛锛�"); + } + + private boolean completeCheck(MesProductionWorkOrder workOrder) { + List<MesKittingCompletenessCheck> completenessCheckList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>() + .eq(MesKittingCompletenessCheck::getWorkOrderId, workOrder.getId())); + if (completenessCheckList.isEmpty()) { + return false; + } + List<EamInspectionOrder> inspectionOrderList = eamInspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() + .eq(EamInspectionOrder::getWorkOrderId, workOrder.getId())); + if (inspectionOrderList.isEmpty()) { + return false; + } + List<EamProcessCheck> processCheckList = eamProcessCheckService.list(new LambdaQueryWrapper<EamProcessCheck>() + .eq(EamProcessCheck::getWorkOrderId, workOrder.getId())); + if (processCheckList.isEmpty()) { + return false; + } + return true; + } + + @AutoLog(value = "鎺掍骇宸ュ崟-宸ュ崟鎵ц鍓嶆鏌�") + @ApiOperation(value = "鎺掍骇宸ュ崟-宸ュ崟鎵ц鍓嶆鏌�", notes = "鎺掍骇宸ュ崟-宸ュ崟鎵ц鍓嶆鏌�") + //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:execute") + @GetMapping(value = "/checkBeforeExecute") + public Result<?> checkBeforeExecute(@RequestParam("id") String id) { + MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(id); + if (workOrder == null) { + throw new JeecgBootException("宸ュ崟涓嶅瓨鍦紒"); + } + Map<String, Object> resMap = new HashMap<>(); + //榻愬鎬ф鏌� + List<MesKittingCompletenessCheck> completenessCheckList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>() + .eq(MesKittingCompletenessCheck::getWorkOrderId, id)); + if (completenessCheckList.isEmpty()) { + //鏈墽琛岃繃榻愬鎬ф鏌� + resMap.put("completenessCheckFlag", false); + } else { + List<MesKittingCompletenessCheck> unCompletenessList = completenessCheckList.stream().filter(i -> !CommonConstant.DEFAULT_1.equals(i.getCheckFlag())) + .collect(Collectors.toList()); + if (unCompletenessList.isEmpty()) { + //榻愬鎬ф鏌ュ叏閮ㄩ�氳繃 + resMap.put("completenessCheckFlag", true); + } else { + List<String> unCompletenessListMaterial = unCompletenessList.stream() + .map(i -> i.getMaterialNumber() + "[" + i.getMaterialName() + "]").collect(Collectors.toList()); + //瀛樺湪鏈�氳繃 + resMap.put("completenessCheckFlag", false); + resMap.put("unCompletenessCheckList", unCompletenessListMaterial); + } + } + //璁惧鐐规 + List<EamInspectionOrder> inspectionOrderList = eamInspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() + .eq(EamInspectionOrder::getWorkOrderId, workOrder.getId())); + if (inspectionOrderList.isEmpty()) { + //鏈墽琛岃繃璁惧鐐规 + resMap.put("inspectionFlag", false); + } else { + List<String> unInspectEquipmentList = eamEquipmentService.list(new LambdaQueryWrapper<EamEquipment>() + .eq(EamEquipment::getOrgId, workOrder.getFactoryId()) + .eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0) + .apply("NOT EXISTS (SELECT 1 FROM eam_inspection_order t WHERE t.equipment_id = eam_equipment.id AND t.work_order_id = {0})", workOrder.getId()) + .apply("EXISTS (SELECT 1 FROM eam_maintenance_standard t WHERE t.equipment_id = eam_equipment.id AND t.del_flag = {0} " + + "AND t.standard_status = {1} AND t.maintenance_category = {2})", + CommonConstant.DEL_FLAG_0, MaintenanceStandardStatusEnum.NORMAL.name(), MaintenanceCategoryEnum.POINT_INSPECTION.name())) + .stream().map(e -> e.getEquipmentCode() + "[" + e.getEquipmentName() + "]").collect(Collectors.toList()); + if (unInspectEquipmentList.isEmpty()) { + //鍏ㄩ儴璁惧閮藉凡鐐规 + resMap.put("equipmentInspectFlag", true); + } else { + //瀛樺湪鏈偣妫�鐨勮澶� + resMap.put("equipmentInspectFlag", false); + resMap.put("unInspectEquipmentList", unInspectEquipmentList); + } + } + //宸ヨ壓鐐规 + List<EamProcessCheck> processCheckList = eamProcessCheckService.list(new LambdaQueryWrapper<EamProcessCheck>() + .eq(EamProcessCheck::getWorkOrderId, workOrder.getId())); + if (processCheckList.isEmpty()) { + //鏈墽琛岃繃宸ヨ壓鐐规 + resMap.put("processCheckFlag", false); + } else { + List<String> unCheckEquipmentList = eamEquipmentService.list(new LambdaQueryWrapper<EamEquipment>() + .eq(EamEquipment::getOrgId, workOrder.getFactoryId()) + .eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0) + .apply("EXISTS (SELECT 1 FROM eam_equipment_process_parameters t WHERE t.equipment_id = eam_equipment.id)") + .apply("NOT EXISTS (SELECT 1 FROM eam_process_check t WHERE t.equipment_id = eam_equipment.id AND t.work_order_id = {0})", workOrder.getId())) + .stream().map(e -> e.getEquipmentCode() + "[" + e.getEquipmentName() + "]").collect(Collectors.toList()); + if (unCheckEquipmentList.isEmpty()) { + //鍏ㄩ儴璁惧閮藉凡鐐规 + resMap.put("processCheckFlag", true); + } else { + //瀛樺湪鏈偣妫�鐨勮澶� + resMap.put("processCheckFlag", false); + resMap.put("unCheckEquipmentList", unCheckEquipmentList); + } + } + return Result.ok(resMap); } /** @@ -284,11 +444,20 @@ return super.importExcel(request, response, MesProductionWorkOrder.class); } - private LoginUser getCurrentUser() { - try { - return (LoginUser) SecurityUtils.getSubject().getPrincipal(); - } catch (Exception e) { - return null; - } + /** + * 鐗╂枡鎷夊姩閫夋嫨鎺掍骇宸ュ崟鍒楄〃鏌ヨ + * + * @param pageNo + * @param pageSize + * @return + */ + @ApiOperation(value = "鎺掍骇宸ュ崟-鐗╂枡鎷夊姩宸ュ崟鍒楄〃", notes = "鎺掍骇宸ュ崟-鐗╂枡鎷夊姩宸ュ崟鍒楄〃") + @GetMapping(value = "/queryWorkOrderByTransfer") + public Result<IPage<MesProductionWorkOrder>> queryWorkOrderByTransfer(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page<MesProductionWorkOrder> page = new Page<>(pageNo, pageSize); + IPage<MesProductionWorkOrder> pageList = mesProductionWorkOrderService.queryWorkOrderByTransfer(page); + return Result.OK(pageList); } + } -- Gitblit v1.9.3