diff --git a/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java b/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java index 6b1a048..e0459e2 100644 --- a/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java +++ b/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java @@ -6,7 +6,9 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.dsic.gj_erp.bean.SpringContextHolder; +import com.dsic.gj_erp.bean.jcsj.DmBom; import com.dsic.gj_erp.bean.jcsj.EmGcrl; import com.dsic.gj_erp.bean.jcsj.EmSbcnp; import com.dsic.gj_erp.bean.jcsj.EmSbjbb; @@ -33,6 +35,8 @@ public class ComputePlan { Map baseCapacity; + Map empSizeByDay; + List gcrlList; JSONObject realCapacityMap; @@ -43,6 +47,8 @@ public class ComputePlan { List sygdMxList; + Map> dmBomList; + /** * 计算实际产能,默认未来三个月 */ @@ -61,8 +67,11 @@ public class ComputePlan { public static void computeRealCapacity(Date from, Date to) { JSONObject _realCapacity = instance().realCapacityMap = new JSONObject(); + //加载工厂日历 initGcrl(); + //加载设备信息 initDevice(); + //计算周期内按天分解的实际可用设备产能 initRealDeviceList(from, to); //可用设备 @@ -112,12 +121,23 @@ public class ComputePlan { } public static void initRealDeviceList(Date from, Date to) { - if (instance().realDeviceList == null) { + initRealDeviceList(from,to,false); + } + + /** + * 按日期分解可用设备 + * @param from 开始日期 + * @param to 结束日期 + * @param flag 强制重置 + */ + public static void initRealDeviceList(Date from, Date to,boolean flag) { + if (instance().realDeviceList == null||flag) { JSONObject realDeviceList = instance().realDeviceList = new JSONObject(); List list = instance().deviceList; DateRange dateRange = new DateRange(from, to, DateField.DAY_OF_YEAR); List canUseDevice = list.stream().filter(item -> "0".equals(item.getSbyxzt())).collect(Collectors.toList()); //计算可用设备的可用日期 + Map _empSizeByDay = instance().empSizeByDay; canUseDevice.forEach(item -> { String[] whArr = item.getWhsj().split("_"); if (whArr.length < 2) { @@ -127,6 +147,10 @@ public class ComputePlan { List dateTimes = DateUtil.rangeNotContains(dateRange, tmpRange); dateTimes.forEach(date -> { String dateStr = date.toString("yyyy/MM/dd"); + //todo 根据人员请假情况,计算当前日期设备是否可用 + if (_empSizeByDay.get(dateStr)<=0){ + return; + } if (realDeviceList.get(dateStr) == null) { JSONArray arr = new JSONArray(); arr.add(item); @@ -139,11 +163,15 @@ public class ComputePlan { } } + public static void initEmp(Date from,Date to){ + + } + /** * 加载设备信息表 */ public static void initDevice() { - instance().deviceList = getBean(EmSbjbbService.class).list(); + instance().deviceList = getBean(EmSbjbbService.class).list(Wrappers.lambdaQuery().like(EmSbjbb::getSzcs,"FP")); } public synchronized static ComputePlan instance() { diff --git a/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java b/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java index 7fe5410..8274398 100644 --- a/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java +++ b/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java @@ -10,5 +10,5 @@ public class RealCapacity { String deviceName; String date; Double capacity; - + String gx; }