根据前一天待报工记录数插入工单并报工job修改

tags/yfai-pcn-ext-v1.0
gsz 11 months ago
parent 1e0e4a94d1
commit 04e5bed576

@ -43,9 +43,9 @@ public interface IMesWorkOrderService {
List<MesProduceSn> getPreDayReportMesProduceSn(String organizeCode ,List<MesProductionRecord> mesProductionRecordList ); List<MesProduceSn> getPreDayReportMesProduceSn(String organizeCode ,List<MesProductionRecord> mesProductionRecordList );
public List<MesWorkOrder> insertMesWorkOrder(List<MesProduceSn> mesProduceSns,List<MesShift> mesShiftList,String organizeCode, String userName ); List<MesWorkOrder> insertMesWorkOrder(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList,String organizeCode, String userName );
void doPcnJobProductReport(List<MesProduceSn> mesProduceSns,List<MesShift> mesShiftList,String organizeCode, String userName, MesWorkOrder mesWorkOrder); void doPcnJobProductReport(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList,String organizeCode, String userName, MesWorkOrder mesWorkOrder);
void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName); void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName);

@ -49,6 +49,7 @@ public class TestController {
private MesShiftRepository mesShiftRepository; private MesShiftRepository mesShiftRepository;
@Autowired @Autowired
private IMesConfigService configService; private IMesConfigService configService;
@GetMapping("/equipment/log/query") @GetMapping("/equipment/log/query")
@ApiOperation(value = "查询设备交互") @ApiOperation(value = "查询设备交互")
public ResultBean queryReworkTaskByPager(String organizeCode, Integer equipId) { public ResultBean queryReworkTaskByPager(String organizeCode, Integer equipId) {
@ -61,6 +62,7 @@ public class TestController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
@GetMapping("/reportWorkByPreDayJob") @GetMapping("/reportWorkByPreDayJob")
@ApiOperation(value = "查询设备交互") @ApiOperation(value = "查询设备交互")
public ResultBean queryReworkTaskByPager(String organizeCode) { public ResultBean queryReworkTaskByPager(String organizeCode) {
@ -74,29 +76,31 @@ public class TestController {
for (String workCenterCode : workCenterCodeList) { for (String workCenterCode : workCenterCodeList) {
List<MesShift> mesShiftList = mesShiftListAll.stream().filter(s -> s.getWorkCenterCode().equalsIgnoreCase(workCenterCode)).collect(Collectors.toList()); List<MesShift> mesShiftList = mesShiftListAll.stream().filter(s -> s.getWorkCenterCode().equalsIgnoreCase(workCenterCode)).collect(Collectors.toList());
//1.获取生产加工记录production_record表中report_status为待汇报状态的工单 //1.获取生产加工记录production_record表中report_status为待汇报状态的工单
List<MesProductionRecord> mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode,mesShiftList,workCenterCode); List<MesProductionRecord> mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode, mesShiftList, workCenterCode);
if(CollectionUtils.isEmpty(mesProductionRecordList)){ if (CollectionUtils.isEmpty(mesProductionRecordList)) {
continue;
}
//2. 查询 mesProduceSn
List<MesProduceSn> unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode,mesProductionRecordList);
if(CollectionUtils.isEmpty(unReportMesProduceSn)){
continue; continue;
} }
List<MesWorkOrder> mesWorkOrders = workOrderService.insertMesWorkOrder(unReportMesProduceSn, mesShiftList,organizeCode, userName);
if(CollectionUtils.isEmpty(mesWorkOrders)){ //3.插入生产工单表
List<MesWorkOrder> mesWorkOrders = workOrderService.insertMesWorkOrder(mesProductionRecordList, mesShiftList, organizeCode, userName);
if (CollectionUtils.isEmpty(mesWorkOrders)) {
continue; continue;
} }
//根据产线+物料产生的工单报工 //4.根据产线+物料产生的工单报工
for (MesWorkOrder mesWorkOrder : mesWorkOrders) { for (MesWorkOrder mesWorkOrder : mesWorkOrders) {
List<MesProduceSn> mesProduceSnList = unReportMesProduceSn.stream().filter(w -> w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList()); List<MesProductionRecord> mesProductionRecords = mesProductionRecordList.stream().filter(
workOrderService.doPcnJobProductReport(mesProduceSnList,mesShiftList,organizeCode,userName, mesWorkOrder); w -> w.getWorkCenterCode().equalsIgnoreCase(mesWorkOrder.getWorkCenterCode())
&& w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList());
workOrderService.doPcnJobProductReport(mesProductionRecords, mesShiftList, organizeCode, userName, mesWorkOrder);
} }
for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { for (MesProductionRecord mesProductionRecord : mesProductionRecordList) {
mesProductionRecord.setReportStatus(20); mesProductionRecord.setReportStatus(20);
ConvertBean.serviceModelUpdate(mesProductionRecord, userName); ConvertBean.serviceModelUpdate(mesProductionRecord, userName);
} }
productionRecordRao.saveAll(mesProductionRecordList); productionRecordRao.saveAll(mesProductionRecordList);
} }
return ResultBean.success("查询成功").setResultList(null); return ResultBean.success("查询成功").setResultList(null);
} catch (ImppBusiException imppException) { } catch (ImppBusiException imppException) {

@ -78,13 +78,13 @@ public class MesReportWorkByPreDayJob extends BaseMesScheduleJob {
continue; continue;
} }
//2. 查询 mesProduceSn //2. 查询 mesProduceSn
List<MesProduceSn> unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode, mesProductionRecordList); // List<MesProduceSn> unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode, mesProductionRecordList);
if (CollectionUtils.isEmpty(unReportMesProduceSn)) { // if (CollectionUtils.isEmpty(unReportMesProduceSn)) {
continue; // continue;
} // }
LOGGER.info("产线:{}报工mesWorkOrders:{}", workCenterCode, unReportMesProduceSn); LOGGER.info("产线:{}报工mesProductionRecordList:{}", workCenterCode, mesProductionRecordList);
//3.插入生产工单表 //3.插入生产工单表
List<MesWorkOrder> mesWorkOrders = workOrderService.insertMesWorkOrder(unReportMesProduceSn, mesShiftList, organizeCode, userName); List<MesWorkOrder> mesWorkOrders = workOrderService.insertMesWorkOrder(mesProductionRecordList, mesShiftList, organizeCode, userName);
if (CollectionUtils.isEmpty(mesWorkOrders)) { if (CollectionUtils.isEmpty(mesWorkOrders)) {
continue; continue;
@ -93,14 +93,16 @@ public class MesReportWorkByPreDayJob extends BaseMesScheduleJob {
//4.根据产线+物料产生的工单报工 //4.根据产线+物料产生的工单报工
try { try {
for (MesWorkOrder mesWorkOrder : mesWorkOrders) { for (MesWorkOrder mesWorkOrder : mesWorkOrders) {
List<MesProduceSn> mesProduceSnList = unReportMesProduceSn.stream().filter(w -> w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList()); List<MesProductionRecord> mesProductionRecords = mesProductionRecordList.stream().filter(
workOrderService.doPcnJobProductReport(mesProduceSnList, mesShiftList, organizeCode, userName, mesWorkOrder); w -> w.getWorkCenterCode().equalsIgnoreCase(mesWorkOrder.getWorkCenterCode())
&& w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList());
workOrderService.doPcnJobProductReport(mesProductionRecords, mesShiftList, organizeCode, userName, mesWorkOrder);
}
for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { for (MesProductionRecord mesProductionRecord : mesProductionRecordList) {
mesProductionRecord.setReportStatus(20); mesProductionRecord.setReportStatus(20);
ConvertBean.serviceModelUpdate(mesProductionRecord, userName); ConvertBean.serviceModelUpdate(mesProductionRecord, userName);
} }
productionRecordRao.saveAll(mesProductionRecordList); productionRecordRao.saveAll(mesProductionRecordList);
}
} catch (ImppBusiException e) { } catch (ImppBusiException e) {
LOGGER.error("产线:{}报工失败:{}", workCenterCode, e.getErrorDetail()); LOGGER.error("产线:{}报工失败:{}", workCenterCode, e.getErrorDetail());
// for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { // for (MesProductionRecord mesProductionRecord : mesProductionRecordList) {

@ -253,7 +253,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
mesProductOffLineRDao.saveAll(mesProductOffLineList); mesProductOffLineRDao.saveAll(mesProductOffLineList);
} }
} }
public void doPcnJobProductReport(List<MesProduceSn> mesProduceSns,List<MesShift> mesShiftList,String organizeCode, String userName ,MesWorkOrder mesWorkOrderDb) { public void doPcnJobProductReport(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList,String organizeCode, String userName ,MesWorkOrder mesWorkOrderDb) {
//查询物料信息 //查询物料信息
DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
@ -279,8 +279,6 @@ public class MesWorkOrderService implements IMesWorkOrderService {
//更新工单 //更新工单
// updateMesWorkOrder(mesWorkOrderDb, userName ); // updateMesWorkOrder(mesWorkOrderDb, userName );
//生成条码 todo 有条码 不生成
//保存数据 //保存数据
// List<MesProductOffLine> mesProductOffLineList = new ArrayList<>(); // List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
// for (MesBom mesBom : mesBoms) { // for (MesBom mesBom : mesBoms) {
@ -288,11 +286,11 @@ public class MesWorkOrderService implements IMesWorkOrderService {
// } // }
// mesProductOffLineService.insertBatch(mesProductOffLineList); // mesProductOffLineService.insertBatch(mesProductOffLineList);
LOGGER.info("产线:{} 零件:{}更新工单mesProduceSns:{}", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo(),mesProduceSns.size()); LOGGER.info("产线:{} 零件:{}更新工单mesProduceSns:{}", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo(),mesProductionRecordList.size());
//保存数据 //保存数据
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>(); List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
MesProductOffLine newMesProductOffLine; MesProductOffLine newMesProductOffLine;
for (MesProduceSn produceSn : mesProduceSns) { for (MesProductionRecord mesProductionRecord : mesProductionRecordList) {
for (MesBom mesBom : mesBoms) { for (MesBom mesBom : mesBoms) {
newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine = new MesProductOffLine();
newMesProductOffLine.setReportPartNo(mesWorkOrderDb.getPartNo()); newMesProductOffLine.setReportPartNo(mesWorkOrderDb.getPartNo());
@ -303,9 +301,9 @@ public class MesWorkOrderService implements IMesWorkOrderService {
newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
newMesProductOffLine.setQty(1d); newMesProductOffLine.setQty(1d);
newMesProductOffLine.setReportSn(produceSn.getProductSn()); newMesProductOffLine.setReportSn(mesProductionRecord.getProductSn());
newMesProductOffLine.setBomVersion(mesWorkOrderDb.getProductVersion()); newMesProductOffLine.setBomVersion(mesWorkOrderDb.getProductVersion());
newMesProductOffLine.setSerialNumber(produceSn.getProductSn()); newMesProductOffLine.setSerialNumber(mesProductionRecord.getProductSn());
newMesProductOffLine.setUnit(mesBom.getUnit()); newMesProductOffLine.setUnit(mesBom.getUnit());
newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); newMesProductOffLine.setItemUnit(mesBom.getItemUnit());
newMesProductOffLine.setWorkOrderNo(mesWorkOrderDb.getWorkOrderNo()); newMesProductOffLine.setWorkOrderNo(mesWorkOrderDb.getWorkOrderNo());
@ -809,12 +807,12 @@ public class MesWorkOrderService implements IMesWorkOrderService {
} }
@Override @Override
public List<MesWorkOrder> insertMesWorkOrder(List<MesProduceSn> mesProduceSns,List<MesShift> mesShiftList, String organizeCode, String userName) { public List<MesWorkOrder> insertMesWorkOrder(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList, String organizeCode, String userName) {
List<MesWorkOrder> mesWorkOrderList=new ArrayList<>(); List<MesWorkOrder> mesWorkOrderList=new ArrayList<>();
Map<String, List<MesProduceSn>> snListMap = mesProduceSns.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo())); Map<String, List<MesProductionRecord>> mesProductionRecordListMap = mesProductionRecordList.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo()));
for (Map.Entry<String, List<MesProduceSn>> stringListEntry : snListMap.entrySet()) { for (Map.Entry<String, List<MesProductionRecord>> stringListEntry : mesProductionRecordListMap.entrySet()) {
List<MesProduceSn> value = stringListEntry.getValue(); List<MesProductionRecord> value = stringListEntry.getValue();
MesProduceSn mesProduceSn = value.get(0); MesProductionRecord mesProductionRecord = value.get(0);
String[] split = stringListEntry.getKey().split("="); String[] split = stringListEntry.getKey().split("=");
String workCenterCode = split[0]; String workCenterCode = split[0];
String partNo = split[1]; String partNo = split[1];
@ -853,11 +851,11 @@ public class MesWorkOrderService implements IMesWorkOrderService {
MesPcnException.throwMesBusiException("单号流水码生成重复"); MesPcnException.throwMesBusiException("单号流水码生成重复");
} }
item.setWorkOrderNo(orderNo); item.setWorkOrderNo(orderNo);
item.setPartName(mesProduceSn.getPartName()); item.setPartName(mesProductionRecord.getPartName());
//生产时间新增取当天 //生产时间新增取当天
item.setProduceTime(TimeTool.getToday()); item.setProduceTime(TimeTool.getToday());
item.setUnCompleteQty(0d); item.setUnCompleteQty(0d);
item.setQty(value.stream().mapToDouble(MesProduceSn::getQty).sum()); item.setQty(value.stream().mapToDouble(MesProductionRecord::getQty).sum());
item.setReportedQty(item.getQty()); item.setReportedQty(item.getQty());
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
@ -877,17 +875,11 @@ public class MesWorkOrderService implements IMesWorkOrderService {
item.setProductVersion(mesProductVersion.getProductVersion()); item.setProductVersion(mesProductVersion.getProductVersion());
//获取bom信息 //获取bom信息
List<MesBom> bomList = findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); List<MesBom> bomList = findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
//item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
//发送工单信息给WMS //发送工单信息给WMS
saveMesWorkOrderToWms.addAll(saveMesWorkOrderToWms(item, bomList)); saveMesWorkOrderToWms.addAll(saveMesWorkOrderToWms(item, bomList));
} }
// if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()){
// //生产工单-非排序手工插单,关闭该零件当天之前日期非排序工单
// List<String> partNoList = Collections.singletonList(item.getPartNo());
// deleteUnSortOrder(orderNo,partNoList);
// }
item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelInitialize(item, userName); ConvertBean.serviceModelInitialize(item, userName);
MesWorkOrder mesWorkOrder = workOrderRepository.insert(item); MesWorkOrder mesWorkOrder = workOrderRepository.insert(item);

Loading…
Cancel
Save