| | |
| | | // 查询相关数据 |
| | | ApsPlatePlan platePlan = new ApsPlatePlan(); |
| | | platePlan.setPlant(plant); |
| | | log.info("开始执行钣金计划大表"); |
| | | List<ApsPlatePlan> planList = apsPlatePlanMapper.selectApsPlatePlanList(platePlan); |
| | | |
| | | ApsShop apsShop = new ApsShop(); |
| | |
| | | List<ApsStandardProcess> shopProcesses = standardProcessMapper.selectApsStandardProcessList(process); |
| | | |
| | | if (!planList.isEmpty() && !shopList.isEmpty() && !shopProcesses.isEmpty()) { |
| | | // 开始之前先删除所有历史数据 |
| | | |
| | | log.info("钣金计划大表:删除所有历史数据"); |
| | | apsPlateProcessStatMapper.deleteAll(); |
| | | apsPlateProcessShopStatMapper.deleteAll(); |
| | | log.info("钣金计划大表:推算倒排钣金工序计划完工日期和计划开工时间"); |
| | | List<ApsPlateProcessStat> statList =apsPlateProcessStatService.computePlateProcessStat(); |
| | | // 构建车间名称到工序名称的映射 |
| | | Map<String, List<String>> shopToProcessNames = shopProcesses.stream().filter(x -> null!=x.getWorkShop()) |
| | |
| | | Collectors.mapping(ApsStandardProcess::getProcessName, Collectors.toList()) |
| | | )); |
| | | // 批量插入统计数据 |
| | | log.info("钣金计划大表:计算每个工单中每个车间的开始、结束时间"); |
| | | List<ApsPlateProcessShopStat> statsToInsert = new ArrayList<>(); |
| | | for (ApsPlatePlan plan : planList) { |
| | | for (ApsShop shop : shopList) { |
| | | log.info("钣金计划大表:计算工单:"+plan.getDocumentNumber()); |
| | | ApsPlateProcessShopStat stat = createShopStat(plan, shop, shopToProcessNames, statList); |
| | | statsToInsert.add(stat); |
| | | } |
| | | } |
| | | log.info("钣金计划大表:批量保存工序开工和完工时间"); |
| | | List<List<ApsPlateProcessStat>> processStatBatchList = ListUtil.split(statList, 1000); |
| | | processStatBatchList.forEach(batch -> apsPlateProcessStatMapper.batchInsertPlateStat(batch)); |
| | | |
| | | |
| | | log.info("钣金计划大表:批量保存工单-车间时间信息"); |
| | | List<List<ApsPlateProcessShopStat>> shopStatBatchList = ListUtil.split(statsToInsert, 1000); |
| | | shopStatBatchList.forEach(batch -> apsPlateProcessShopStatMapper.batchInsert(batch)); |
| | | }else { |
| | | if(shopProcesses.isEmpty()){ |
| | | log.error("钣金计划大表:未找到标准工序数据!"); |
| | | throw new RuntimeException("未找到标准工序数据!"); |
| | | } |
| | | if(shopList.isEmpty()){ |
| | | log.error("钣金计划大表:未找到车间数据!"); |
| | | throw new RuntimeException("未找到车间数据!"); |
| | | } |
| | | if(planList.isEmpty()){ |
| | | log.error("钣金计划大表:未找到工单数据!"); |
| | | throw new RuntimeException("未找到工单数据!"); |
| | | } |
| | | } |
| | | log.info("钣金计划大表:完成"); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("computer error:"+ JSONObject.toJSONString(stat)); |
| | | log.error("钣金计划大表 error:"+ JSONObject.toJSONString(stat)); |
| | | throw new RuntimeException("计算车间统计数据异常!"); |
| | | } |
| | | return stat; |