Merge remote-tracking branch 'origin/dev' into dev

tags/yfai-pcn-ext-v1.0
微笑着面对明天 12 months ago
commit b66eb47066

@ -59,11 +59,10 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
//校验装车单 //校验装车单
MesLoadingList loadingListResult = checkLoadingList(loadingList.getOrderCode(), loadingList.getOrganizeCode()); MesLoadingList loadingListResult = checkLoadingList(loadingList.getOrderCode(), loadingList.getOrganizeCode());
//若生成装车单,则一定有装车单明细 //若生成装车单,则一定有装车单明细
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(loadingList.organizeCode); DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(loadingList.organizeCode);
DdlPreparedPack.getNumEqualPack(loadingListResult.getId(), "pid", orderDetailPackBean); DdlPreparedPack.getNumEqualPack(loadingListResult.getId(), "pid", orderDetailPackBean);
// DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, orderDetailPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, orderDetailPackBean);
List<MesLoadingListDetail> detailList = vehiclesOrderDetailRepository.findByHqlWhere(orderDetailPackBean); List<MesLoadingListDetail> detailList = vehiclesOrderDetailRepository.findByHqlWhere(orderDetailPackBean);
//是否逆转 //是否逆转
@ -117,7 +116,6 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
//查询最近需要扫描的装车单号 //查询最近需要扫描的装车单号
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org); DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org);
// DdlPreparedPack.getStringEqualPack(shippingGroupNo, "partShippingGroupCode", orderPackBean);
DdlPreparedPack.getInPackList(statusList, "status", orderPackBean); DdlPreparedPack.getInPackList(statusList, "status", orderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, orderPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, orderPackBean);
MesLoadingList loadingList = vehiclesOrderRepository.getByProperty(orderPackBean); MesLoadingList loadingList = vehiclesOrderRepository.getByProperty(orderPackBean);
@ -148,6 +146,17 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS
if (loadingListDetail.getTempStatus() == MesCommonConstant.TRUE_INTEGER) { if (loadingListDetail.getTempStatus() == MesCommonConstant.TRUE_INTEGER) {
throw new ImppBusiException(String.format("【%s】此发运单已经扫描过请检查数据", model.getShippingCode())); throw new ImppBusiException(String.format("【%s】此发运单已经扫描过请检查数据", model.getShippingCode()));
} }
//判断是否需要排序校验 默认排序则需要校验
if (loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取明细中最小的
Long minSeq = model.getDetailList().stream().mapToLong(k -> k.getSeq()).min().getAsLong();
//若扫描的不是最小顺序 则报错
if (minSeq != loadingListDetail.getSeq()) {
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误请检查数据", model.getShippingCode()));
}
}
loadingListDetail.setScanSn(model.getShippingCode()); loadingListDetail.setScanSn(model.getShippingCode());
loadingListDetail.setTempStatus(MesCommonConstant.TRUE_INTEGER); loadingListDetail.setTempStatus(MesCommonConstant.TRUE_INTEGER);
loadingListDetail.setTempStatusVal("扫描完成"); loadingListDetail.setTempStatusVal("扫描完成");

@ -48,7 +48,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
@Autowired @Autowired
private MesPartShippingGroupRepository partShippingGroupRepository; private MesPartShippingGroupRepository partShippingGroupRepository;
@Autowired @Autowired
private MesLoadingListRepository ListRepository; private MesLoadingListRepository listRepository;
@Autowired @Autowired
private MesLoadingListDetailRepository listDetailRepository; private MesLoadingListDetailRepository listDetailRepository;
@ -64,7 +64,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//校验发运单是否存在 //校验发运单是否存在
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode); DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(), "shippingCode", orderManagementPackBean); DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(), "shippingCode", orderManagementPackBean);
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean); MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
if (StringUtils.isEmpty(orderManagement)) { if (StringUtils.isEmpty(orderManagement)) {
@ -81,17 +81,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据! //根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
if (orderManagement.getIsLoading() == MesCommonConstant.TRUE_INTEGER) { if (orderManagement.getIsLoading() == MesCommonConstant.TRUE_INTEGER) {
if (StringUtils.isEmpty(orderManagement.getOrderCode())) { if (StringUtils.isEmpty(orderManagement.getLoadingListId()) || orderManagement.getLoadingListId() == 0) {
throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没绑定装车单号,请检查数据!", shippingOrderManagement.getShippingCode())); throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没绑定装车单号,请检查数据!", shippingOrderManagement.getShippingCode()));
} }
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode);
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(orderManagement.getLoadingListId(), "id", orderDetailPackBean); DdlPreparedPack.getNumEqualPack(orderManagement.getLoadingListId(), "id", orderDetailPackBean);
MesLoadingList loadingList = ListRepository.getByProperty(orderDetailPackBean); MesLoadingList loadingList = listRepository.getByProperty(orderDetailPackBean);
if (StringUtils.isEmpty(loadingList)) { if (StringUtils.isEmpty(loadingList)) {
throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没生成装车单,请检查数据!", shippingOrderManagement.getShippingCode())); throw new ImppBusiException(String.format("【%s】此发运单配置是否装车为是,但没生成装车单,请检查数据!", shippingOrderManagement.getShippingCode()));
} }
//判断是否先装车 //判断是否先装车
if (orderManagement.getIsFirstInstall() == MesCommonConstant.TRUE_INTEGER) { if (orderManagement.getIsFirstInstall() == MesCommonConstant.TRUE_INTEGER) {
@ -103,6 +105,29 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getDescription())); MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getDescription()));
} }
} }
//判断是否需要排序校验 默认排序则需要校验
if (loadingList.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取此装车单中 状态为创建 已发布 发运中 seq最小的
List<Integer> statusList = new ArrayList<>();
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue());
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue());
statusList.add(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue());
DdlPackBean sortOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "loadingListId", sortOrderPackBean);
DdlPreparedPack.getNumEqualPack(statusList, "status", sortOrderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, sortOrderPackBean);
MesShippingOrderManagement sortTempOrder = shippingOrderManagementRepository.getByProperty(sortOrderPackBean);
//若没有最小的,则此装车单 没有发运单扫描完成
if (sortTempOrder.getId() != orderManagement.getId()) {
throw new ImppBusiException(String.format("【%s】此发运单扫描顺序错误请扫描【%s】发运单",
shippingOrderManagement.getShippingCode(), sortTempOrder.getOrderCode()));
}
}
} }
MesSortShippingCheckModel model = new MesSortShippingCheckModel(); MesSortShippingCheckModel model = new MesSortShippingCheckModel();
@ -111,8 +136,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
} }
DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode); DdlPackBean orderDetailPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderDetailPackBean); DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderDetailPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"custInfoSeq"}, orderDetailPackBean);
List<MesShippingOrderManagementDetail> detailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderDetailPackBean); List<MesShippingOrderManagementDetail> detailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderDetailPackBean);
detailList.forEach(k -> { detailList.forEach(k -> {
@ -125,7 +151,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
model.setIsScanCount(count.intValue()); model.setIsScanCount(count.intValue());
//查询最近扫描完成的装车单号 //查询最近扫描完成的装车单号
DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.organizeCode); DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", recentlyOrderPackBean); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", recentlyOrderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"modifyDatetime"}, recentlyOrderPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"modifyDatetime"}, recentlyOrderPackBean);
MesShippingOrderManagement recentlyVehiclesOrder = shippingOrderManagementRepository.getByProperty(recentlyOrderPackBean); MesShippingOrderManagement recentlyVehiclesOrder = shippingOrderManagementRepository.getByProperty(recentlyOrderPackBean);
@ -149,12 +175,24 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//校验发运单是否存在 //校验发运单是否存在
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, org); MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, org);
//根据条码找到对应的物料号若物料号一致则修改扫描flg将flg改为true. //根据条码找到对应的物料号若物料号一致则修改扫描flg将flg改为true.
boolean scanFlg = false; boolean scanFlg = false;
for (MesShippingOrderManagementDetail detail : model.getDetailList()) { for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode())) { if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode())) {
scanFlg = true; scanFlg = true;
detail.setBarcode(produceSn.getSerialNumber()); detail.setBarcode(produceSn.getSerialNumber());
//判断是否需要排序校验 默认排序则需要校验
if (orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取明细中最小的
Long minSeq = model.getDetailList().stream().mapToLong(k -> k.getCustInfoSeq()).min().getAsLong();
//若扫描的不是最小顺序 则报错
if (minSeq != detail.getCustInfoSeq()) {
throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误请检查数据", model.getSn()));
}
}
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);

@ -132,16 +132,18 @@ public class MesMouldNoReadStepService extends BaseStepService {
private StepResult checkMouldNoValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesEquipLogDispatchContext equipLogDispatchContext) { private StepResult checkMouldNoValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesEquipLogDispatchContext equipLogDispatchContext) {
Boolean firstMouldNoIsExist = productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean);
Boolean workOrderDataIsExist = productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean);
//未采集到数据 //未采集到数据
if (!equipLogDispatchContext.getIsCollectValue()) if (!equipLogDispatchContext.getIsCollectValue() && (equipLogDispatchContext.getNeedNewValue() || (!firstMouldNoIsExist && !workOrderDataIsExist)))
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]模具号,持续监听中...", cellEquipContext.getEquipmentCode())); return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]模具号,持续监听中...", cellEquipContext.getEquipmentCode()));
else if (!equipLogDispatchContext.getIsCollectValue())
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]模具号,接口逻辑设置只读一次,当前读取模具号直接跳过!", cellEquipContext.getEquipmentCode()));
//读取的模具号进行规则匹配 //读取的模具号进行规则匹配
List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList()); List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList());
Boolean firstMouldNoIsExist = productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean);
Boolean workOrderDataIsExist = productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean);
//没有有效的数据: 设置常变值 或者 当前没有头道模具号或生产工单信息 //没有有效的数据: 设置常变值 或者 当前没有头道模具号或生产工单信息
if (CollectionUtils.isEmpty(equipVariableCollectContextList) && (equipLogDispatchContext.getNeedNewValue() || (!firstMouldNoIsExist && !workOrderDataIsExist))) if (CollectionUtils.isEmpty(equipVariableCollectContextList) && (equipLogDispatchContext.getNeedNewValue() || (!firstMouldNoIsExist && !workOrderDataIsExist)))
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的模具号,持续监听中...", cellEquipContext.getEquipmentCode())); return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的模具号,持续监听中...", cellEquipContext.getEquipmentCode()));

Loading…
Cancel
Save