1.产能计算

master
董哲奇 1 year ago
parent ada139b164
commit 68d550450a

@ -6,7 +6,9 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; 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.SpringContextHolder;
import com.dsic.gj_erp.bean.jcsj.DmBom;
import com.dsic.gj_erp.bean.jcsj.EmGcrl; import com.dsic.gj_erp.bean.jcsj.EmGcrl;
import com.dsic.gj_erp.bean.jcsj.EmSbcnp; import com.dsic.gj_erp.bean.jcsj.EmSbcnp;
import com.dsic.gj_erp.bean.jcsj.EmSbjbb; import com.dsic.gj_erp.bean.jcsj.EmSbjbb;
@ -33,6 +35,8 @@ public class ComputePlan {
Map<String, EmSbcnp> baseCapacity; Map<String, EmSbcnp> baseCapacity;
Map<String,Integer> empSizeByDay;
List<EmGcrl> gcrlList; List<EmGcrl> gcrlList;
JSONObject realCapacityMap; JSONObject realCapacityMap;
@ -43,6 +47,8 @@ public class ComputePlan {
List<DmSygdMx> sygdMxList; List<DmSygdMx> sygdMxList;
Map<String,List<DmBom>> dmBomList;
/** /**
* , * ,
*/ */
@ -61,8 +67,11 @@ public class ComputePlan {
public static void computeRealCapacity(Date from, Date to) { public static void computeRealCapacity(Date from, Date to) {
JSONObject _realCapacity = instance().realCapacityMap = new JSONObject(); JSONObject _realCapacity = instance().realCapacityMap = new JSONObject();
//加载工厂日历
initGcrl(); initGcrl();
//加载设备信息
initDevice(); initDevice();
//计算周期内按天分解的实际可用设备产能
initRealDeviceList(from, to); initRealDeviceList(from, to);
//可用设备 //可用设备
@ -112,12 +121,23 @@ public class ComputePlan {
} }
public static void initRealDeviceList(Date from, Date to) { 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(); JSONObject realDeviceList = instance().realDeviceList = new JSONObject();
List<EmSbjbb> list = instance().deviceList; List<EmSbjbb> list = instance().deviceList;
DateRange dateRange = new DateRange(from, to, DateField.DAY_OF_YEAR); DateRange dateRange = new DateRange(from, to, DateField.DAY_OF_YEAR);
List<EmSbjbb> canUseDevice = list.stream().filter(item -> "0".equals(item.getSbyxzt())).collect(Collectors.toList()); List<EmSbjbb> canUseDevice = list.stream().filter(item -> "0".equals(item.getSbyxzt())).collect(Collectors.toList());
//计算可用设备的可用日期 //计算可用设备的可用日期
Map<String, Integer> _empSizeByDay = instance().empSizeByDay;
canUseDevice.forEach(item -> { canUseDevice.forEach(item -> {
String[] whArr = item.getWhsj().split("_"); String[] whArr = item.getWhsj().split("_");
if (whArr.length < 2) { if (whArr.length < 2) {
@ -127,6 +147,10 @@ public class ComputePlan {
List<DateTime> dateTimes = DateUtil.rangeNotContains(dateRange, tmpRange); List<DateTime> dateTimes = DateUtil.rangeNotContains(dateRange, tmpRange);
dateTimes.forEach(date -> { dateTimes.forEach(date -> {
String dateStr = date.toString("yyyy/MM/dd"); String dateStr = date.toString("yyyy/MM/dd");
//todo 根据人员请假情况,计算当前日期设备是否可用
if (_empSizeByDay.get(dateStr)<=0){
return;
}
if (realDeviceList.get(dateStr) == null) { if (realDeviceList.get(dateStr) == null) {
JSONArray arr = new JSONArray(); JSONArray arr = new JSONArray();
arr.add(item); arr.add(item);
@ -139,11 +163,15 @@ public class ComputePlan {
} }
} }
public static void initEmp(Date from,Date to){
}
/** /**
* *
*/ */
public static void initDevice() { public static void initDevice() {
instance().deviceList = getBean(EmSbjbbService.class).list(); instance().deviceList = getBean(EmSbjbbService.class).list(Wrappers.<EmSbjbb>lambdaQuery().like(EmSbjbb::getSzcs,"FP"));
} }
public synchronized static ComputePlan instance() { public synchronized static ComputePlan instance() {

@ -10,5 +10,5 @@ public class RealCapacity {
String deviceName; String deviceName;
String date; String date;
Double capacity; Double capacity;
String gx;
} }

Loading…
Cancel
Save