|
|
@ -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() {
|
|
|
|