hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -43,13 +43,9 @@ @ApiOperation("报工") @PostMapping("/submitDamage") public Result submitDamage(@RequestBody Map map) { String startTime=map.get("startTime").toString(); String endTime=map.get("endTime").toString(); int type =Integer.parseInt(map.get("type").toString()); int status =Integer.parseInt(map.get("status").toString()); String workingProcedure =map.get("workingProcedure").toString(); damageService.submitDamage(startTime,endTime,type,status,workingProcedure); public Result submitDamage(@RequestBody List<Damage> damageList) { damageService.submitDamage(damageList); damageService.updateBatchById(damageList); return Result.build(200,"报工成功",1); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -19,7 +19,7 @@ List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure); void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure); void submitDamage(List<Damage> damageList); void insertDamage(Damage damage); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -19,6 +19,7 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; /** @@ -53,6 +54,11 @@ if(!"0".equals(workingProcedure)){ damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure); } List<Damage> damageList = baseMapper.selectList(damageSelectWrapper); for (Damage damage : damageList) { damage.setStatus(2); } return baseMapper.selectList(damageSelectWrapper); } @@ -60,27 +66,7 @@ * 提交报工 */ @Override public void submitDamage(String startTime, String endTime, int type, int status, String workingProcedures){ LambdaUpdateWrapper<Damage> damageUpdateWrapper=new LambdaUpdateWrapper<>(); LambdaQueryWrapper<Damage> damageLambdaQueryWrapper=new LambdaQueryWrapper<>() ; damageUpdateWrapper.between(Damage::getDamageTime,startTime,endTime); damageLambdaQueryWrapper.between(Damage::getDamageTime,startTime,endTime); if (type!=0){ damageUpdateWrapper.eq(Damage::getType,type); damageLambdaQueryWrapper.eq(Damage::getType,type); } if (status!=0){ damageUpdateWrapper.eq(Damage::getStatus,status); damageLambdaQueryWrapper.eq(Damage::getStatus,status); } if(!"0".equals(workingProcedures)){ damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedures); damageLambdaQueryWrapper.eq(Damage::getWorkingProcedure,workingProcedures); } // Damage damage=new Damage(); // damage.setStatus(2); // baseMapper.update(damage,damageUpdateWrapper); List<Damage> damageList = baseMapper.selectList(damageLambdaQueryWrapper); public void submitDamage(List<Damage> damageList){ Map<String, Map<String, Map<String, Map<String, List<Damage>>>>> resultMap = damageList.stream() .collect(Collectors.groupingBy( Damage::getProcessId, @@ -123,15 +109,23 @@ // 获取 Damage 列表 List<Damage> damageListForTeamsGroupsName = teamsGroupsNameEntry.getValue(); //报工主表数据 ReportingWork reportingWork=new ReportingWork(); reportingWork.setProcessId(processId); reportingWork.setThisProcess(workingProcedure); reportingWork.setDeviceName(deviceName); reportingWork.setTeamsGroupsName(teamsGroupsName); // 使用 stream 对 damageListForTeamsGroupsName 进行再次分组 Map<Integer, Map<Integer, Map<String, List<Damage>>>> groupedByOrderTechBreakage = damageListForTeamsGroupsName.stream() .map(damage -> Optional.ofNullable(damage)) // 使用Optional处理可能为null的元素 .filter(Optional::isPresent) // 过滤掉空的Optional .map(Optional::get) // 获取非空的Damage对象 .collect(Collectors.groupingBy( Damage::getOrderNumber, damage -> Optional.ofNullable(damage.getOrderNumber()).orElse(0), // 使用orElse设置默认值,以处理null值 Collectors.groupingBy( Damage::getTechnologyNumber, damage -> Optional.ofNullable(damage.getTechnologyNumber()).orElse(0), // 同样处理technologyNumber可能为null的情况 Collectors.groupingBy( Damage::getBreakageType, damage -> Optional.ofNullable(damage.getBreakageType()).orElse("Unknown"), // 处理breakageType可能为null的情况 Collectors.toList() ) ) @@ -158,11 +152,7 @@ String breakageType = breakageTypeEntry.getKey(); System.out.println(" BreakageType: " + breakageType); ReportingWork reportingWork=new ReportingWork(); reportingWork.setProcessId(processId); reportingWork.setThisProcess(workingProcedure); reportingWork.setDeviceName(deviceName); reportingWork.setTeamsGroupsName(teamsGroupsName); // 获取 Damage 列表 List<Damage> damageListForBreakageType = breakageTypeEntry.getValue(); int completedQuantity=0; @@ -205,7 +195,7 @@ .eq(WorkAssignment::getLine,damage.getLine()) .eq(WorkAssignment::getWorkProcesses,damage.getWorkingProcedure()); WorkAssignment workAssignment=workAssignmentMapper.selectOne(workAssignmentSelectWrapper); if(workAssignment!=null){ damage.setTeamsGroupsName(workAssignment.getTeamsGroupsName()); damage.setDeviceName(workAssignment.getDeviceName()); damage.setProcessId(glassInfo.getFlowCardId()); @@ -216,3 +206,4 @@ baseMapper.insert(damage); } } } hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; /** * <p> @@ -28,7 +29,9 @@ private WorkAssignmentService workAssignmentService; @ApiOperation("值班数据查询") @PostMapping("/selectWorkAssignment") public Result selectWorkAssignment(int line,String workingProcedure) { public Result selectWorkAssignment(@RequestBody Map map) { String line=map.get("line").toString(); String workingProcedure=map.get("workingProcedure").toString(); return Result.build(200,"查询成功",workAssignmentService.selectWorkAssignment(line,workingProcedure)); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/service/WorkAssignmentService.java
@@ -3,6 +3,8 @@ import com.mes.work_assignment.entity.WorkAssignment; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * <p> * 服务类 @@ -13,5 +15,5 @@ */ public interface WorkAssignmentService extends IService<WorkAssignment> { WorkAssignment selectWorkAssignment(int line, String workingProcedure); List<WorkAssignment> selectWorkAssignment(String line, String workingProcedure); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/service/impl/WorkAssignmentServiceImpl.java
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * 服务实现类 @@ -25,11 +27,11 @@ * @return */ @Override public WorkAssignment selectWorkAssignment(int line, String workingProcedure){ public List<WorkAssignment> selectWorkAssignment(String line, String workingProcedure){ LambdaQueryWrapper<WorkAssignment> workAssignmentSelectWrapper=new LambdaQueryWrapper<>(); workAssignmentSelectWrapper .eq(WorkAssignment::getLine,line) .eq(WorkAssignment::getWorkProcesses,workingProcedure); return baseMapper.selectOne(workAssignmentSelectWrapper); return baseMapper.selectList(workAssignmentSelectWrapper); } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -266,6 +266,7 @@ .selectAll(BigStorageCage.class) .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .eq(BigStorageCageDetails::getEngineerId,glassInfo.getEngineerId()) .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())) .last("limit 1"); @@ -287,7 +288,7 @@ .eq(BigStorageCage::getRemainWidth, slotWidth) .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state = 0") .inSql(BigStorageCage::getDeviceId, "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId()) "select distinct device_id from big_storage_cage_details where engineer_id = "+glassInfo.getEngineerId()+" and tempering_layout_id = " + glassInfo.getTemperingLayoutId()) .last("limit 1")); if (null != bigStorageCage) { bigStorageDTO = new BigStorageDTO(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -109,4 +109,25 @@ } } @Scheduled(fixedDelay = 1000) public void temperingIsRun(){ JSONObject jsonObject = new JSONObject(); //进片任务数据 List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectFeedTask(); jsonObject.append("bigStorageCageDetailsFeedTask", bigStorageCageDetailsFeedTask); //出片任务数据 List<BigStorageCageDetails> bigStorageCageDetailsOutTask=bigStorageCageDetailsService.selectOutTask(); jsonObject.append("bigStorageCageDetailsOutTask", bigStorageCageDetailsOutTask); ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("isRun"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); } else { log.info("Home is closed"); } } } } }