|
|
|
@ -436,13 +436,15 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
return mesProductVersion;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateProductionRecord(String organizeCode, String userName, String sn) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(sn, "custSn", ddlPackBean);
|
|
|
|
|
private void updateProductionRecord(String organizeCode, String userName, Long id) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(id, "id", ddlPackBean);
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(sn, "custSn", ddlPackBean);
|
|
|
|
|
productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime"},
|
|
|
|
|
new Object[]{userName, TimeTool.getNowTime(true)},ddlPackBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(propagation= Propagation.REQUIRES_NEW,isolation= Isolation.READ_COMMITTED,readOnly = false,rollbackFor = Exception.class)
|
|
|
|
|
public void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName) {
|
|
|
|
@ -452,7 +454,8 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
try {
|
|
|
|
|
List<MesWorkOrder> oldMesWorkOrderList = getMesWorkOrder(productionRecord, organizeCode);
|
|
|
|
|
if (CollectionUtils.isEmpty(oldMesWorkOrderList)) {
|
|
|
|
|
updateProductionRecord(organizeCode, userName, productionRecord.getProductSn());
|
|
|
|
|
LOGGER.error("报工条码:{}找不到加工单", productionRecord.getProductSn());
|
|
|
|
|
updateProductionRecord(organizeCode, userName, productionRecord.getId());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -465,7 +468,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e);
|
|
|
|
|
productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getProductSn(), msg);
|
|
|
|
|
productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
@ -478,7 +481,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
LOGGER.info("此次报工的条码【{}】,工单【{}】", productionRecord.getProductSn(), productionRecord.getWorkOrderNo());
|
|
|
|
|
List<MesWorkOrder> oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode);
|
|
|
|
|
if (CollectionUtils.isEmpty(oldMesWorkOrders)) {
|
|
|
|
|
updateProductionRecord(organizeCode, userName, productionRecord.getProductSn());
|
|
|
|
|
updateProductionRecord(organizeCode, userName, productionRecord.getId());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
report(productionRecord, organizeCode, userName, oldMesWorkOrders);
|
|
|
|
@ -489,7 +492,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e);
|
|
|
|
|
productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getProductSn(), msg);
|
|
|
|
|
productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -586,6 +589,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
LOGGER.info("工单报工后数量【{}】", oldMesWorkOrder.getReportedQty());
|
|
|
|
|
ConvertBean.serviceModelUpdate(oldMesWorkOrder, userName);
|
|
|
|
|
workOrderExtService.update(oldMesWorkOrder);
|
|
|
|
|
|
|
|
|
|
//保存数据
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
@ -623,16 +627,20 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
mesProductOffLineList.add(newMesProductOffLine);
|
|
|
|
|
}
|
|
|
|
|
mesProductOffLineRDao.saveAll(mesProductOffLineList);
|
|
|
|
|
|
|
|
|
|
// 同步工单信息给加工记录、条码信息
|
|
|
|
|
DdlPackBean snDdlPackBean = DdlPackBean.getDdlPackBean();
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productionRecord.getProductSn(), "productSn", snDdlPackBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", snDdlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(organizeCode, "organizeCode", snDdlPackBean);
|
|
|
|
|
|
|
|
|
|
mesProduceSnRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo"},
|
|
|
|
|
new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo()},snDdlPackBean);
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", packBean);
|
|
|
|
|
productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo", "reportStatus"},
|
|
|
|
|
new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()},snDdlPackBean);
|
|
|
|
|
new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()},packBean);
|
|
|
|
|
|
|
|
|
|
LOGGER.info("条码【{}】报工成功,报工工单【{}】",productionRecord.getProductSn(), oldMesWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -693,6 +701,14 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
list.add(oldMesWorkOrder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 如果找不到则再根据计划开始时间找
|
|
|
|
|
if (CollectionUtils.isEmpty(list)) {
|
|
|
|
|
String beginTime =productionRecord.getLotNo() + " " + currentShift.getStartTime();
|
|
|
|
|
Date beginDate = transfer(beginTime);
|
|
|
|
|
list = oldMesWorkOrders.stream().filter(workOrder ->!StringUtils.isEmpty(workOrder.getPlanStartTime()) && !StringUtils.isEmpty(workOrder.getPlanEndTime()) &&
|
|
|
|
|
beginDate.getTime() >= transfer(workOrder.getPlanStartTime()).getTime() && beginDate.getTime() <= transfer(workOrder.getPlanEndTime()).getTime()).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
workOrders = list;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -713,7 +729,8 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
String endTime = date + " " +currentShift.getStartTime();
|
|
|
|
|
String startTime = date + " " +currentShift.getEndTime();
|
|
|
|
|
|
|
|
|
|
workOrders = oldMesWorkOrders.stream().filter(workOrder -> transfer(startTime).getTime() > transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() < transfer(workOrder.getPlanEndTime()).getTime()).collect(Collectors.toList());
|
|
|
|
|
workOrders = oldMesWorkOrders.stream().filter(workOrder -> !StringUtils.isEmpty(workOrder.getPlanStartTime()) && !StringUtils.isEmpty(workOrder.getPlanEndTime()) &&
|
|
|
|
|
transfer(startTime).getTime() > transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() < transfer(workOrder.getPlanEndTime()).getTime()).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
// 早班或者中班 则找当天非当前班次的最早单号
|
|
|
|
|