报工问题修改

tags/yfai-pcn-ext-v1.1
微笑着面对明天 11 months ago
parent bf2379204c
commit df8cd11e67

@ -40,5 +40,5 @@ public interface IMesProductionRecordService {
void updateProductionRecord(String organizeCode, String userName, String sn); void updateProductionRecord(String organizeCode, String userName, String sn);
void updateProductionRecord(String organizeCode, String userName, String sn, String errorMsg); void updateProductionRecord(String organizeCode, String userName, Long id, String errorMsg);
} }

@ -72,7 +72,7 @@ public class MesReportNoSortJob extends BaseMesScheduleJob {
// 处理无工单 // 处理无工单
handlerNoOrder(organizeCode, userName); handlerNoOrder(organizeCode, userName);
// 处理有工单 // 处理有工单
handlerHasOrder(organizeCode, userName); //handlerHasOrder(organizeCode, userName);
// } // }
} }
@ -83,7 +83,10 @@ public class MesReportNoSortJob extends BaseMesScheduleJob {
return; return;
} }
for (MesProductionRecord mesProductionRecord : unReportMesProduceSn) { for (MesProductionRecord mesProductionRecord : unReportMesProduceSn) {
LOGGER.info("----------报工开始-------{}", mesProductionRecord.getProductSn());
workOrderService.doProductReportByRecord(mesProductionRecord, organizeCode, userName); workOrderService.doProductReportByRecord(mesProductionRecord, organizeCode, userName);
LOGGER.info("----------报工结束-------{}", mesProductionRecord.getProductSn());
} }
} }

@ -195,10 +195,10 @@ public class MesProductionRecordService implements IMesProductionRecordService {
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue() },ddlPackBean); new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue() },ddlPackBean);
} }
@Override @Override
public void updateProductionRecord(String organizeCode, String userName, String sn, String errorMsg) { public void updateProductionRecord(String organizeCode, String userName, Long id, String errorMsg) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(id, "id", ddlPackBean);
DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean); // DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean);
productionRecordRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","reportStatus", "remark"}, productionRecordRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","reportStatus", "remark"},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue(), errorMsg },ddlPackBean); new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue(), errorMsg },ddlPackBean);
} }

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

Loading…
Cancel
Save