1 无工单补报工JOB针对多生产版本场景,默认使用SAP 主数据0001进行补报工
2 无工单报工,根据产线物料号为一个事务去校验生产版本是否存在
dev_temp_xw_202503310000_45843
xiangwei.zhang 4 months ago
parent 282e8a6b99
commit f70b94e327

@ -818,19 +818,36 @@ public class MesWorkOrderService implements IMesWorkOrderService {
throw new ImppBusiException(String.format("班次信息未维护,产线=%s",workCenterCode));
}
List<MesShift> shifts = shiftList.stream().filter(mesShift -> Objects.equals(mesShift.getWorkCenterCode(), workCenterCode)).collect(Collectors.toList());
// 获取产品加工记录对应时间的班次
Integer hours = transfer(productionRecord.getCompleteDateTime()).getHours();
Date currentDate = TimeTool.stringParseToDate(productionRecord.getCompleteDateTime());
String lotNo = productionRecord.getLotNo();
// 基于加工时间判断具体的班次
MesShift currentShift = shiftList.stream().filter(shift -> {
String startTime = lotNo + " " + shift.getStartTime();
String endTime = lotNo + " " + shift.getEndTime();
if (Objects.equals(shift.getShiftCode(), "20")) {
endTime = getDateTime(lotNo, 2) + " " + shift.getEndTime();
}
Date startDate = DateUtil.parse(startTime);
Date endDate = DateUtil.parse(endTime);
return currentDate.getTime() > startDate.getTime() && currentDate.getTime() < endDate.getTime();
}).findFirst().orElse(null);
MesShift currentShift = shifts.stream().filter(mesShift -> Objects.equals(mesShift.getShiftCode(), shiftCode)).findFirst().orElse(null);
String orderDate = productionRecord.getLotNo();
if (currentShift.getStartTime().compareTo(currentShift.getEndTime()) > 0) {
// 如果比0点大需要找日期前一天的班次的工单号,如果是0点前date =lotNO 如果是0点后则找lot的前一天
int hours = transfer(productionRecord.getCompleteDateTime()).getHours();
if (hours < 12) {
orderDate = getDate(productionRecord.getLotNo(), 1);
} else {
orderDate = getDate(productionRecord.getLotNo(), 0);
}
}
List<MesWorkOrder> list = new ArrayList<>();
@ -856,7 +873,6 @@ public class MesWorkOrderService implements IMesWorkOrderService {
// 如果开始时间大于结束时间,说明跨天了,跨天说明是晚班,需要找, 如果是晚班, 则找早中班的工单
if (currentShift.getStartTime().compareTo(currentShift.getEndTime()) > 0) {
// 如果比0点大需要找日期前一天的班次的工单号,如果是0点前date =lotNO 如果是0点后则找lot的前一天
int hours = transfer(productionRecord.getCompleteDateTime()).getHours();
if (hours < 12) {
date = getDate(productionRecord.getLotNo(), 1);
} else {
@ -1754,4 +1770,28 @@ public class MesWorkOrderService implements IMesWorkOrderService {
move.setWorkCenter(workCenterCode);
return move;
}
/**
* flag = 1 1 = 2
*
* @param lotNo
* @param flag
* @return
*/
public String getDateTime(String lotNo, int flag) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = df.parse(lotNo);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(d);
if (flag == 1) {
cal.add(Calendar.DATE, -1); //减1天
} else if (flag == 2) {
cal.add(Calendar.DATE, 1); //加1天
}
return df.format(cal.getTime()).substring(0, 10);
}
}

Loading…
Cancel
Save