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