Bto增加produceSeq规则

tags/yfai-mes-ext-v1.0
administrator 10 months ago
parent 2d9e5bd025
commit cd28b340aa

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

@ -29,6 +29,8 @@ public class MesCommonConstant {
public static final String MES_WORK_ORDER_NO = "MES_WORK_ORDER_NO";
//产线代码独立排序单号规则
public static final String MES_WORK_CENTER_ORDER_NO = "MES_WORK_CENTER_ORDER_NO";
//工单的生产顺序号
public static final String MES_WORK_ORDER_PRODUCT_SEQ = "MES_WORK_ORDER_PRODUCT_SEQ";
//报工条码规则
public static final String REPORT_SN = "REPORT_SN";
//装车单号

Loading…
Cancel
Save