Merge remote-tracking branch 'origin/uat-temp-xw-202501200000-44905' into dev

dev
jason 2 months ago
commit 7bf43e5eea

@ -211,23 +211,29 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
MesShippingOrderManagement mesShippingOrderManagement = orderMap.get(mesShippingOrderManagementDetail.getPid());
if (StringUtils.isEmpty(mesShippingOrderManagementDetail.getPartNo())) {
log.info("发运单明细对应零件号为空");
return ResultBean.fail(String.format("发运单明细对应零件号为空"));
}
if ((int) mesShippingOrderManagementDetail.getPlanQty() != mesShippingOrderManagementDetail.getActualQty()) {
log.info("计划数量和实际数量不相等");
return ResultBean.fail(String.format("计划数量和实际数量不相等"));
}
MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupService.getMesPartShippingGroup(organizeCode, mesShippingOrderManagement.getShippingGroupCode());
final String detailBarCode = mesShippingOrderManagementDetail.getBarcode();
if (!StringUtils.isEmpty(detailBarCode)) {
if (detailBarCode.contains(",")) {
String workOrderNo = detailBarCode.substring(0, detailBarCode.lastIndexOf(","));
mesJisShippings = getJisShippingByWorkOrder(mesShippingOrderManagement, mesShippingOrderManagementDetail, workOrderNo, organizeCode, userName);
}
} else {
if (StringUtils.isEmpty(mesShippingOrderManagementDetail.getPartNo())) {
log.info("发运单明细对应零件号为空");
return ResultBean.fail(String.format("发运单明细对应零件号为空"));
}
if ((int) mesShippingOrderManagementDetail.getPlanQty() != mesShippingOrderManagementDetail.getActualQty()) {
log.info("计划数量和实际数量不相等");
return ResultBean.fail(String.format("计划数量和实际数量不相等"));
}
MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupService.getMesPartShippingGroup(organizeCode, mesShippingOrderManagement.getShippingGroupCode());
mesJisShippings.add(getMesJisShippings(mesShippingOrderManagement, mesShippingOrderManagementDetail, userName, mesPartShippingGroup));
}
mesShippingOrderManagementDetail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
mesShippingOrderManagementDetail.setRemark("手工发运");
ConvertBean.serviceModelUpdate(mesShippingOrderManagementDetail, userName);
mesJisShippings.add(getMesJisShippings(mesShippingOrderManagement, mesShippingOrderManagementDetail, userName, mesPartShippingGroup));
}
if (!CollectionUtils.isEmpty(detailList)) {
shippingOrderDetailRepository.saveAll(detailList);
@ -370,36 +376,13 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
return new ListPager<>(modelList, pager);
}
@Override
public void doHandleCockpitShippingError(MesShippingOrderManagementDetail detail, MesWorkOrder workOrder) {
if (StringUtils.isEmpty(detail.getPartNo())) {
MesException.throwFlowException("发运单明细对应零件号为空");
}
if (StringUtils.isEmpty(workOrder.getCustSn())) {
MesException.throwMesBusiException("工单【%s】不存在客户条码", workOrder.getWorkOrderNo());
}
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(detail.getPid(), "id", orderPackBean);
MesShippingOrderManagement orderManagement = shippingOrderRepository.getByProperty(orderPackBean);
if (orderManagement == null || StringUtils.isEmpty(orderManagement.getShippingGroupCode())) {
MesException.throwFlowException("发运单主表不存在");
}
DdlPackBean partShippingGroupPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringLikerPack(orderManagement.getShippingGroupCode(), "shippingGroupCode", partShippingGroupPackBean);
MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupRDao.getByProperty(partShippingGroupPackBean);
if (mesPartShippingGroup == null || StringUtils.isEmpty(mesPartShippingGroup.getConfirmPartType()) || Integer.parseInt(mesPartShippingGroup.getConfirmPartType()) != MesExtEnumUtil.SHIPPING_GROUP_CONFIRM_PART_TYPE.SHIPPING_GROUP_CONFIRM_PART_TYPE_30.getValue()) {
MesException.throwFlowException("零件发运组【%s】扫描确认零件方式应为【装配目视单和客户零件条码】", orderManagement.getShippingGroupCode());
}
private List<MesJisShipping> getJisShippingByWorkOrder(MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, String workOrderNo, String organizeCode, String userName) {
List<MesJisShipping> shippingList = new ArrayList<>();
DdlPackBean workOrderPartPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrder.getWorkOrderNo(), "workOrderNo", workOrderPartPackBean);
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", workOrderPartPackBean);
List<MesWorkOrderPart> workOrderParts = mesWorkOrderPartRepository.findByHqlWhere(workOrderPartPackBean);
if (!CollectionUtils.isEmpty(workOrderParts)) {
List<MesJisShipping> shippingList = new ArrayList<>();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue(), "groupType", ddlPackBean);
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(), "code", ddlPackBean);
@ -418,13 +401,69 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
if (moveRule != null && Objects.equals(moveRule.getMoveNum(), MesExtEnumUtil.MOVE_RULE_MOVE_NUM.MOVE_RULE_MOVE_NUM_20.getValue()) && MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.SHIPPING.getValue() == moveRule.getReportType()) {
shippingList.add(getMesJisShipping(orderManagement, detail, moveRule.getErpSrcLocateNo(), orderPart, userName));
} else {
log.info("客供品移库零件【{}】在零件发运组【{}】的移库规则中,汇报类型未维护或不为发运", orderPart.getPartNo(), workOrder.getPartProdGroupCode());
log.info("客供品移库零件【{}】在零件发运组【{}】的移库规则中,汇报类型未维护或不为发运", orderPart.getPartNo(), orderManagement.getShippingGroupCode());
}
}
}
return shippingList;
}
@Override
public void doHandleCockpitShippingError(MesShippingOrderManagementDetail detail, MesWorkOrder workOrder) {
if (StringUtils.isEmpty(detail.getPartNo())) {
MesException.throwFlowException("发运单明细对应零件号为空");
}
if (StringUtils.isEmpty(workOrder.getCustSn())) {
MesException.throwMesBusiException("工单【%s】不存在客户条码", workOrder.getWorkOrderNo());
}
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(detail.getPid(), "id", orderPackBean);
MesShippingOrderManagement orderManagement = shippingOrderRepository.getByProperty(orderPackBean);
if (orderManagement == null || StringUtils.isEmpty(orderManagement.getShippingGroupCode())) {
MesException.throwFlowException("发运单主表不存在");
}
jisShippingRepository.saveAll(shippingList);
DdlPackBean partShippingGroupPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringLikerPack(orderManagement.getShippingGroupCode(), "shippingGroupCode", partShippingGroupPackBean);
MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupRDao.getByProperty(partShippingGroupPackBean);
if (mesPartShippingGroup == null || StringUtils.isEmpty(mesPartShippingGroup.getConfirmPartType()) || Integer.parseInt(mesPartShippingGroup.getConfirmPartType()) != MesExtEnumUtil.SHIPPING_GROUP_CONFIRM_PART_TYPE.SHIPPING_GROUP_CONFIRM_PART_TYPE_30.getValue()) {
MesException.throwFlowException("零件发运组【%s】扫描确认零件方式应为【装配目视单和客户零件条码】", orderManagement.getShippingGroupCode());
}
// DdlPackBean workOrderPartPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(workOrder.getWorkOrderNo(), "workOrderNo", workOrderPartPackBean);
// List<MesWorkOrderPart> workOrderParts = mesWorkOrderPartRepository.findByHqlWhere(workOrderPartPackBean);
// if (!CollectionUtils.isEmpty(workOrderParts)) {
// List<MesJisShipping> shippingList = new ArrayList<>();
//
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue(), "groupType", ddlPackBean);
// DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(), "code", ddlPackBean);
// List<MesMoveRule> mesMoveRuleList = mesMoveRuleRepository.findByHqlWhere(ddlPackBean);
// if (CollectionUtils.isEmpty(mesMoveRuleList)) {
// MesException.throwFlowException(String.format("移库规则不存在:发运单编号:%s,发运组代码:%s,", orderManagement.getShippingCode(), orderManagement.getShippingGroupCode()));
// }
// Map<String, MesMoveRule> mesMoveRuleMap = mesMoveRuleList.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.toMap(MesMoveRule::getSrcType, Function.identity(), (x, y) -> y));
//
// for (MesWorkOrderPart orderPart : workOrderParts) {
// MesPart itemPart = mesPartService.getPartByPartNo(orderPart.getPartNo(), organizeCode);
// if (itemPart == null) {
// continue;
// }
// MesMoveRule moveRule = mesMoveRuleMap.get(itemPart.getEsd());
// if (moveRule != null && Objects.equals(moveRule.getMoveNum(), MesExtEnumUtil.MOVE_RULE_MOVE_NUM.MOVE_RULE_MOVE_NUM_20.getValue()) && MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.SHIPPING.getValue() == moveRule.getReportType()) {
// shippingList.add(getMesJisShipping(orderManagement, detail, moveRule.getErpSrcLocateNo(), orderPart, userName));
// } else {
// log.info("客供品移库零件【{}】在零件发运组【{}】的移库规则中,汇报类型未维护或不为发运", orderPart.getPartNo(), workOrder.getPartProdGroupCode());
// }
// }
//
// jisShippingRepository.saveAll(shippingList);
// }
MesProduceSn mesProduceSn = mesProduceSnService.getMesProduceSnByCustSn(organizeCode, workOrder.getCustSn());
if (mesProduceSn != null) {
//更新条码状态为完成
@ -440,9 +479,9 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
mesWorkOrderRDao.update(workOrder);
detail.setBarcode(workOrder.getWorkOrderNo() + "," + workOrder.getCustSn());
detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setRemark("cockpit发运处理");
// detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
// detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
// detail.setRemark("cockpit发运处理");
ConvertBean.serviceModelUpdate(detail, userName);
shippingOrderDetailRepository.update(detail);
}

@ -352,10 +352,12 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getVinCode(), MesExtConstWords.VIN_CODE, packBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderFlag(), MesExtConstWords.ORDER_FLAG, packBean);
DdlPreparedPack.getStringLikerPack(bean.getCustSn(), "custSn", packBean);
if (!StringUtil.isEmpty(bean.getWorkOrderStatusQuery())) {
DdlPreparedPack.getInPackList(Arrays.stream(bean.getWorkOrderStatusQuery().split(MesExtConstWords.COMMA)).map(Integer::parseInt).collect(Collectors.toList()), MesExtConstWords.WORK_ORDER_STATUS, packBean);
} else DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), MesExtConstWords.WORK_ORDER_STATUS, packBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), MesExtConstWords.WORK_ORDER_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(bean.getQcStatus(), MesExtConstWords.QC_STATUS, packBean);
if (!StringUtils.isEmpty(bean.getCreateDateTimeStart()) || !StringUtils.isEmpty(bean.getCreateDateTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, false);

Loading…
Cancel
Save