主子关系ExtendType修改

tags/yfai-mes-ext-v1.0
gsz 1 year ago
parent d84a7a61e5
commit ea2b735694

@ -40,10 +40,10 @@ public interface IMesWorkOrderService extends IBaseMesService<MesWorkOrder> {
List<MesProductionRecord> getPreDayReportMesProductionRecord(String organizeCode , List<MesShift> mesShiftList, String workCenterCode);
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);
}

@ -53,6 +53,7 @@ public class MesWhiteListController extends MesBaseController {
private MesShiftRepository mesShiftRepository;
@Autowired
private IMesConfigService configService;
@PostMapping(value = "/meter/main-data")
@ApiOperation(value = "Maximo仪表主数据", notes = "Maximo仪表主数据")
public Map doMeterMainData(@RequestBody MaximoParamModel paramModel) {
@ -61,7 +62,7 @@ public class MesWhiteListController extends MesBaseController {
ValidatorBean.checkNotNull(paramModel.getAssetNum(), "assetNum不能为空");
ValidatorBean.checkNotNull(paramModel.getBaseMeasureUnitId(), "baseMeasureUnitId不能为空");
ValidatorBean.checkNotNull(paramModel.getSiteId(), "siteId不能为空");
Map resultMap = maximoService.doMeterMainData(paramModel);
Map resultMap = maximoService.doMeterMainData(paramModel);
LOGGER.info("Maximo仪表主数据 返回 resultMap:{}", resultMap);
@ -78,7 +79,7 @@ public class MesWhiteListController extends MesBaseController {
ValidatorBean.checkNotNull(paramModel.getSiteId(), "siteId不能为空");
ValidatorBean.checkNotNull(paramModel.getStatus(), "status不能为空");
ValidatorBean.checkNotNull(paramModel.getFailureCode(), "failureCode不能为空");
Map resultMap = maximoService.doAssetMainData(paramModel);
Map resultMap = maximoService.doAssetMainData(paramModel);
LOGGER.info("Maximo设备主数据 返回 resultMap:{}", resultMap);
@ -86,19 +87,21 @@ public class MesWhiteListController extends MesBaseController {
// return ResultBean.success().setResultMap(resultMap).setSuccess((Boolean) resultMap.get("success"));
}
@GetMapping(value = "/ccscTest")
@ApiOperation(value = "ccsc", notes = " ")
public ResultBean doCcscTest(String organizeCode) {
List<MesWorkOrder> mesWorkOrderList = mesWorkOrderService.queryMesWorkOrderProcessToSap(organizeCode);
if (!CollectionUtils.isEmpty(mesWorkOrderList)){
mesCcscTaskService.doCcscTaskByMesWorkOrder(organizeCode,mesWorkOrderList);
if (!CollectionUtils.isEmpty(mesWorkOrderList)) {
mesCcscTaskService.doCcscTaskByMesWorkOrder(organizeCode, mesWorkOrderList);
}
return ResultBean.success().setSuccess(true);
return ResultBean.success().setSuccess(true);
}
@GetMapping("/reportWorkByPreDayJob")
@ApiOperation(value = "job测试")
public ResultBean queryReworkTaskByPager(String organizeCode) {
try {
//遍历系统参数指定的产线获取对应班次,找到早班的开始时间,
String workCenterCodes = configService.getCfgValue(organizeCode, "MES_PCN_WORK_CENTER_NO");
List<String> workCenterCodeList = Arrays.asList(workCenterCodes.split(","));
@ -108,36 +111,37 @@ public class MesWhiteListController extends MesBaseController {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", packBean);
List<MesShift> mesShiftList = mesShiftRepository.findByHqlWhere(packBean);
//1.获取生产加工记录production_record表中report_status为待汇报状态的工单
List<MesProductionRecord> mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode,mesShiftList,workCenterCode);
if(CollectionUtils.isEmpty(mesProductionRecordList)){
//1.获取生产加工记录production_record表中report_status为待汇报状态的工单
List<MesProductionRecord> mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode, mesShiftList, workCenterCode);
if (CollectionUtils.isEmpty(mesProductionRecordList)) {
continue;
}
//2. 查询 mesProduceSn
List<MesProduceSn> unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode,mesProductionRecordList);
if(CollectionUtils.isEmpty(unReportMesProduceSn)){
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;
}
//根据产线+物料产生的工单报工
for (MesWorkOrder mesWorkOrder : mesWorkOrders) {
List<MesProduceSn> mesProduceSnList = unReportMesProduceSn.stream().filter(w -> w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList());
workOrderService.doPcnJobProductReport(mesProduceSnList,mesShiftList,organizeCode,userName, mesWorkOrder);
//4.根据产线+物料产生的工单报工
try {
for (MesWorkOrder mesWorkOrder : mesWorkOrders) {
List<MesProductionRecord> mesProductionRecords = mesProductionRecordList.stream().filter(
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) {
mesProductionRecord.setReportStatus(20);
ConvertBean.serviceModelUpdate(mesProductionRecord, userName);
}
productionRecordRao.saveAll(mesProductionRecordList);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
for (MesProductionRecord mesProductionRecord : mesProductionRecordList) {
mesProductionRecord.setReportStatus(20);
ConvertBean.serviceModelUpdate(mesProductionRecord, userName);
}
productionRecordRao.saveAll(mesProductionRecordList);
}
return ResultBean.success("查询成功").setResultList(null);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
return ResultBean.success();
}
}
}

@ -36,7 +36,7 @@ public class MesWorkCellExtendCfgService extends BaseMesService<MesWorkCellExten
ValidatorBean.checkNotNull(item.getWorkCellCodeBak(), "子工位不能为空");
ValidatorBean.checkNotZero(item.getSeq(), "顺序不能为0");
if(item.getExtendType().equalsIgnoreCase("10")){
if(item.getExtendType()==10){
if(!item.getWorkCenterCode().equalsIgnoreCase(item.getWorkCenterCodeBak())){
MesException.throwMesBusiException("主子关系时产线【%s】与子产线【%s】需一致请检查数据",
item.getWorkCenterCode(),item.getWorkCenterCodeBak());

@ -1219,16 +1219,16 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesProduceSnRao.findByHqlWhere(snPackBean);
}
@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<>();
Map<String, List<MesProduceSn>> snListMap = mesProduceSns.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo()));
for (Map.Entry<String, List<MesProduceSn>> stringListEntry : snListMap.entrySet()) {
List<MesProduceSn> value = stringListEntry.getValue();
MesProduceSn mesProduceSn = value.get(0);
Map<String, List<MesProductionRecord>> mesProductionRecordListMap = mesProductionRecordList.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo()));
for (Map.Entry<String, List<MesProductionRecord>> stringListEntry : mesProductionRecordListMap.entrySet()) {
List<MesProductionRecord> value = stringListEntry.getValue();
MesProductionRecord mesProductionRecord = value.get(0);
String[] split = stringListEntry.getKey().split("=");
String workCenterCode = split[0];
String partNo = split[1];
//查询工作中心
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean);
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
@ -1254,20 +1254,24 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
List<String> orderList=new ArrayList<>();
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_CENTER_ORDER_NO");
genSerialNoModel.setPartNo(workCenterCode);
// orderList = syncFuncService.syncSerialNo(genSerialNoModel,userName, organizeCode, 1).getResultList();
orderList = syncFuncService.syncSerialNo(genSerialNoModel,userName, organizeCode, 1).getResultList();
String orderNo = workCenterCode+TimeTool.getNowTime(true);
String orderNo = orderList.get(0);
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean);
if (mesWorkOrderRDao.isExitByHql(orderPackBean)) {
MesException.throwMesBusiException("单号流水码生成重复");
}
item.setWorkOrderNo(orderNo);
item.setPartName(mesProduceSn.getPartName());
item.setPartName(mesProductionRecord.getPartName());
//生产时间新增取当天
item.setProduceTime(TimeTool.getToday());
item.setUnCompleteQty(0d);
item.setQty(value.stream().mapToDouble(MesProduceSn::getQty).sum());
item.setQty(value.stream().mapToDouble(MesProductionRecord::getQty).sum());
item.setReportedQty(item.getQty());
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
//校验标识
//若工单类型为排序
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
@ -1283,7 +1287,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item.setProductVersion(mesProductVersion.getProductVersion());
//获取bom信息
List<MesBom> bomList = findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
//发送工单信息给WMS
saveMesWorkOrderToWms.addAll(saveMesWorkOrderToWms(item, bomList));
}
@ -1320,7 +1324,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesWorkOrderToWmsList;
}
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());
@ -1341,33 +1345,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb);
//物料+生产版本获取bom信息
List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//报工类型
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderDb.getReportType()) {
mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrderDb.getNum(), mesWorkOrderDb.getReportedQty()));
//更新工单状态
double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty());
mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) {
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty());
} else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) {
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
} else {
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
}
} else {
//报工调整数量加-
mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrderDb.getNum(), mesWorkOrderDb.getAdjustQty())));
//冲销数量大于工单完成数量报错
if (mesWorkOrderDb.getAdjustQty() > mesWorkOrderDb.getReportedQty()) {
MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销",
mesWorkOrderDb.getAdjustQty(), mesWorkOrderDb.getReportedQty());
}
}
//更新工单
updateMesWorkOrder(mesWorkOrderDb, userName );
//生成条码 todo 有条码 不生成
//保存数据
// List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
@ -1379,7 +1356,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//保存数据
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
MesProductOffLine newMesProductOffLine;
for (MesProduceSn produceSn : mesProduceSns) {
for (MesProductionRecord produceSn : mesProductionRecordList) {
for (MesBom mesBom : mesBoms) {
newMesProductOffLine = new MesProductOffLine();
newMesProductOffLine.setReportPartNo(mesWorkOrderDb.getPartNo());

Loading…
Cancel
Save