From 56a4f65267e1b47599db4f1892f8f652c0ddcad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=93=B2=E5=A5=87?= <13840175730@139.com> Date: Wed, 4 Sep 2024 16:57:43 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dsic/gj_erp/pc/DataFactory.java | 101 ------------------ 1 file changed, 101 deletions(-) diff --git a/src/main/java/com/dsic/gj_erp/pc/DataFactory.java b/src/main/java/com/dsic/gj_erp/pc/DataFactory.java index d6bdf7a..c3f8427 100644 --- a/src/main/java/com/dsic/gj_erp/pc/DataFactory.java +++ b/src/main/java/com/dsic/gj_erp/pc/DataFactory.java @@ -412,107 +412,6 @@ public class DataFactory { return map.get(dcch); } - public static void 排产() { - 套料图所占工序的资源.clear(); - List<排产结果> list = 排产.list; - List 强占记录 = new ArrayList<>(); - list.clear(); - List 按需求日期排序的钢料需求 = getBean(DmSygdxqService.class).getXqWithBom(from, to); - - 按需求日期排序的钢料需求.forEach(钢料需求 -> { - 钢料需求.getBomList().forEach(bom -> { - Arrays.stream(Constant.工序.values()).forEach(gx -> { - if (StrUtil.isEmpty(gx.getCode())) return; - //todo 由于工序code存在多个值的情况,这里需要抽象套料图工序,修改后同时可支持多线程运算 - Optional first = 套料图工序对应关系.keySet().stream() - .filter(it -> it.startsWith(bom.getKw() + bom.getZl())) - .filter(it -> gx.getCode().contains(it.split("_")[1])).findFirst(); - first.ifPresent(_code -> { - if (ObjUtil.isNotEmpty(套料图工序对应关系.get(_code))) { - Integer cd = Constant.工序CD.get(gx); - DateTime parse = DateUtil.parse(钢料需求.getXzglxq(), "yyyy/MM/dd"); - DateTime dateTime = DateUtil.offsetDay(parse, cd); - 资源 _资源 = 提取资源(dateTime); - //除切割工序外默认需求数量都是1 - //todo 如果是切割工序需要获取切割长度 - double 需求数量 = bom.getTlsl().doubleValue(); - Optional.of(_资源).ifPresent(it -> { - 工序产能 工序产能 = null; - 资源 资源 = 套料图所占工序的资源.get(bom.getTzbh()); - if (资源 != null) { - 工序产能 = 资源.get工序产能MAP().get(gx); - } - if (工序产能 != null && 工序产能.get资源占用图纸表().contains(bom.getTzbh())) { - bom.set所在资源(it); - Optional<设备> _设备 = 工序产能.获取已占用设备(bom.getTzbh()); - _设备.ifPresent(bom::set所在设备); - } else { - 工序产能 = it.get工序产能MAP().get(gx); - Optional<设备> _设备 = 工序产能.获取可占用设备(需求数量); - 工序产能 final工序产能 = 工序产能; - _设备.ifPresent(tmp -> { - bom.set所在设备(tmp); - tmp.占用设备(bom.getTzbh(), 需求数量); - bom.set所在资源(it); - final工序产能.占用资源(bom.getTzbh(), 需求数量); - 套料图所占工序的资源.put(bom.getTzbh(), it); - }); - } - }); - - //没有可用资源是全局搜索可用资源,进行排产 - if (bom.get所在设备() == null) { - Optional<资源> 可用资源 = 搜索可用资源(gx, DateUtil.parse(from, "yyyy/MM/dd"), parse, 需求数量); - 可用资源.ifPresent(tmp资源 -> { - 工序产能 _工序产能 = tmp资源.get工序产能MAP().get(gx); - Optional<设备> _设备 = _工序产能.获取可占用设备(0); - _设备.ifPresent(tmp -> { - tmp.占用设备(bom.getTzbh(), 需求数量); - bom.set所在设备(tmp); - _工序产能.占用资源(bom.getTzbh(), 需求数量); - bom.set所在资源(tmp资源); - 套料图所占工序的资源.put(bom.getTzbh(), tmp资源); - }); - }); - } - - //没有可用资源放入月末(强占),待手工调整 - if (bom.get所在设备() == null) { - 强占记录.add(bom); - 资源 tmp资源 = 提取资源(DateUtil.endOfMonth(DateUtil.parse(钢料需求.getXzglxq(), "yyyy/MM/dd"))); - 工序产能 _工序产能 = tmp资源.get工序产能MAP().get(gx); - Optional<设备> _设备 = _工序产能.get设备().values().stream().findAny(); - bom.set所在设备(_设备.orElse(null)); - bom.set所在资源(tmp资源); - _工序产能.占用资源(bom.getTzbh(), 0); - 套料图所占工序的资源.put(bom.getTzbh(), tmp资源); - } - } - }); - }); - }); - }); -// Manager.排产结果=按需求日期排序的钢料需求; - //========调试打印=========== - 资源池.forEach((day,item)->{ - System.out.println("====打印资源==="); - System.out.println(day); - Map 工序产能MAP = item.get工序产能MAP(); - 工序产能MAP.forEach((工序,工序产能)->{ - if (工序产能.get资源占用图纸表().size()>0){ - System.out.println("工序:"+工序); - if ("2024/06/03".equals(day)){ - System.out.println(工序产能.get资源占用图纸表()); - } - System.out.println("工序产能:"+工序产能.get资源占用图纸表().size()); - } - }); - System.out.println("====打印资源完成==="); - }); - System.out.println(强占记录.size()); - //========调试打印结束=========== - } - public static Optional<资源> 搜索可用资源(Constant.工序 工序,Date 搜索起始日期,Date 搜索截止日期, double 需求数量){ return 资源池.values().stream().filter(资源->{ 工序产能 工序产能 = 资源.get工序产能MAP().get(工序);