|
|
|
@ -113,12 +113,17 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_CENTER_ORDER_NO);
|
|
|
|
|
genSerialNoModel.setPartNo(detail.getWorkCenterCode());
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, "edi", detail.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
// GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
|
|
|
|
|
// List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel,"JOB", detail.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
mesWorkOrder.setWorkOrderNo(resultList.get(0));
|
|
|
|
|
mesWorkOrder.setWorkOrderType(MesExtEnumUtil.ORDER_TYPE.BTO.getValue());
|
|
|
|
|
mesWorkOrder.setWorkOrderSeq(createSeq.toString());
|
|
|
|
|
mesWorkOrder.setProduceSeq(createSeq);
|
|
|
|
|
//生产顺序号 【前缀(WSPS)+工厂号+产线+特殊符号#+10位流水 步长10】({prefix}{custProdLine}{prodLocation}{dynamicRule}{serialNo})
|
|
|
|
|
GenSerialNoModel proSeqGenSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_PRODUCT_SEQ);
|
|
|
|
|
proSeqGenSerialNoModel.setCustProdLineCode(detail.getOrganizeCode());
|
|
|
|
|
proSeqGenSerialNoModel.setProdLocation(detail.getWorkCenterCode());
|
|
|
|
|
proSeqGenSerialNoModel.setDynamicRule("#");
|
|
|
|
|
List<String> seqList = syncFuncService.syncSerialNo(proSeqGenSerialNoModel, "edi", detail.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
String prodSeqStr = seqList.get(0);
|
|
|
|
|
mesWorkOrder.setProduceSeq(Long.parseLong(prodSeqStr.substring(prodSeqStr.indexOf("#")+1)));
|
|
|
|
|
mesWorkOrder.setCustPartNo(sortInfos.get(0).getCustPartNo());
|
|
|
|
|
//标识 -空
|
|
|
|
|
//状态 --- 根据零件发运组看是自动发布
|
|
|
|
@ -138,6 +143,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
|
|
|
|
|
}
|
|
|
|
|
//产线
|
|
|
|
|
mesWorkOrder.setWorkCenterCode(detail.getWorkCenterCode());
|
|
|
|
|
//todo 需要校验产线和零件关系
|
|
|
|
|
//工位
|
|
|
|
|
mesWorkOrder.setWorkCellCode(detail.getWorkCellCode());
|
|
|
|
|
//生产日期,计划时间
|
|
|
|
@ -165,15 +171,19 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
|
|
|
|
|
calendar.setTime(date);
|
|
|
|
|
int hours = calendar.get(Calendar.HOUR_OF_DAY);
|
|
|
|
|
int minutes = calendar.get(Calendar.MINUTE);
|
|
|
|
|
int shiftTime = Integer.parseInt(hours + "" + minutes);
|
|
|
|
|
for (MesShift shift : shiftList) {
|
|
|
|
|
int startTime = Integer.parseInt(shift.getStartTime());
|
|
|
|
|
int endTime = Integer.parseInt(shift.getEndTime());
|
|
|
|
|
if (shiftTime >= startTime && shiftTime <= endTime) {
|
|
|
|
|
mesWorkOrder.setShiftName(shift.getShiftName());
|
|
|
|
|
mesWorkOrder.setShiftCode(shift.getShiftCode());
|
|
|
|
|
break;
|
|
|
|
|
String shiftTime = String.format("%02d:%02d", hours, minutes);
|
|
|
|
|
if (shiftList == null || shiftList.isEmpty()) {
|
|
|
|
|
for (MesShift shift : shiftList) {
|
|
|
|
|
String startTime = shift.getStartTime().replace(":", "");
|
|
|
|
|
String endTime = shift.getEndTime().replace(":", "");
|
|
|
|
|
if ((shiftTime.compareTo(startTime) >= 0) && (shiftTime.compareTo(endTime) <= 0)) {
|
|
|
|
|
mesWorkOrder.setShiftName(shift.getShiftName());
|
|
|
|
|
mesWorkOrder.setShiftCode(shift.getShiftCode());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
log.info("当前产线:{} 没有配置班次", detail.getWorkCenterCode());
|
|
|
|
|
}
|
|
|
|
|
// 12.零件相关
|
|
|
|
|
mesWorkOrder.setPartNo(mesPartSap.getPartNo());
|
|
|
|
@ -182,9 +192,10 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
|
|
|
|
|
MesProductVersion prodVersion = getProdVersion(detail.getOrganizeCode(), mesPartSap.getPartNo());
|
|
|
|
|
if (prodVersion == null) {
|
|
|
|
|
log.info("请配置工厂:{},partNo:{}的生产版本", detail.organizeCode, mesPartSap.getPartNo());
|
|
|
|
|
}else {
|
|
|
|
|
String productVersion = prodVersion.getProductVersion();
|
|
|
|
|
mesWorkOrder.setProductVersion(productVersion);
|
|
|
|
|
}
|
|
|
|
|
String productVersion = prodVersion.getProductVersion();
|
|
|
|
|
mesWorkOrder.setProductVersion(productVersion);
|
|
|
|
|
// 14.bomCode partNo + 生产版本+ organizeCode
|
|
|
|
|
// 数量
|
|
|
|
|
double realQty = roundQty * multiple;
|
|
|
|
@ -237,21 +248,20 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
calendar.setTime(now);
|
|
|
|
|
String hour = calendar.get(Calendar.HOUR_OF_DAY) + ""; // 获取小时(24小时制)
|
|
|
|
|
String minute = calendar.get(Calendar.MINUTE) + "";
|
|
|
|
|
String nowTime = hour + minute;
|
|
|
|
|
int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获取小时(24小时制)
|
|
|
|
|
int minute = calendar.get(Calendar.MINUTE);
|
|
|
|
|
String nowTime = String.format("%02d:%02d", hour, minute);
|
|
|
|
|
//遍历窗口时间获取最新的窗口时间
|
|
|
|
|
String nowTimeStr = String.format("%04d", Integer.parseInt(nowTime));
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
List<MesPartProdGroupWindowTime> sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime)).collect(Collectors.toList());
|
|
|
|
|
for (MesPartProdGroupWindowTime time : sortedTime) {
|
|
|
|
|
if (nowTimeStr.compareTo(time.getWindowTime()) < 0) {
|
|
|
|
|
if (nowTime.compareTo(time.getWindowTime()) < 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
calendar.set(Calendar.HOUR, Integer.parseInt(time.getWindowTime().substring(0, 2)));
|
|
|
|
|
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2)));
|
|
|
|
|
calendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4)));
|
|
|
|
|
Date dateCreateOrder = calendar.getTime();
|
|
|
|
|
if (Objects.isNull(time.getLastRunTime())){
|
|
|
|
|
if (Objects.isNull(time.getLastRunTime())) {
|
|
|
|
|
return time;
|
|
|
|
|
}
|
|
|
|
|
Date lastRunTime = sdf.parse(time.getLastRunTime());
|
|
|
|
|