|
|
|
@ -211,6 +211,14 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
|
|
|
|
|
|
|
|
|
|
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
|
|
|
|
|
MesShippingOrderManagement mesShippingOrderManagement = orderMap.get(mesShippingOrderManagementDetail.getPid());
|
|
|
|
|
|
|
|
|
|
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("发运单明细对应零件号为空"));
|
|
|
|
@ -220,14 +228,12 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
|
|
|
|
|
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());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
jisShippingRepository.saveAll(shippingList);
|
|
|
|
|
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("发运单主表不存在");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|