|
|
|
@ -83,43 +83,32 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { |
|
|
|
private TransHeaderService transHeaderService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<ShopOrderVo> getReturnWorkOrderInfo(String workOrderNo, String site) { |
|
|
|
public List<ShopOrderVo> getReturnWorkOrderInfo(String workOrderNo, String site) throws Exception{ |
|
|
|
List<ShopOrderVo> shopOrders = ifsApiIssueAndReturnService.getWorkOrderInfo(workOrderNo, site, "*", "*"); |
|
|
|
|
|
|
|
List<ShopOrderVo> shopOrderVos = shopOrders.stream() |
|
|
|
.filter(so -> "Started".equalsIgnoreCase(so.getObjstate())) |
|
|
|
.toList(); |
|
|
|
if (shopOrders.size()>0 && shopOrderVos.size()==0){ |
|
|
|
throw new Exception("工单状态不允许退料"); |
|
|
|
} |
|
|
|
return shopOrderVos; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<IssueForShopOrderVo> getIssueForShopOrder(String workOrderNo, String site){ |
|
|
|
public List<IssueForShopOrderVo> getIssueForShopOrder(String workOrderNo, String site,String componentPartNo)throws Exception { |
|
|
|
// 验证工单状态 |
|
|
|
if (!validateWorkOrderStatus(workOrderNo, site)) { |
|
|
|
throw new XJException("工单状态不允许发料"); |
|
|
|
} |
|
|
|
try{ |
|
|
|
Map<String, Object> params = Map.of( |
|
|
|
"ifsDBName", ifsDBName, |
|
|
|
"domainUserID", getCurrentDomainUserID(), |
|
|
|
"ifsSiteID", site, |
|
|
|
"ifsOrderNo", workOrderNo, |
|
|
|
"ifsReleaseNo", "*", |
|
|
|
"ifsSequenceNo", "*" |
|
|
|
); |
|
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
|
String jsonBody = objectMapper.writeValueAsString(params); |
|
|
|
String ifsResponse = HttpUtils.doGetWithBody(ifsUrl+"IssueForShopOrder",jsonBody,null); |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
List<IssueForShopOrderVo> issueForShopOrderVos = mapper.readValue(ifsResponse, new TypeReference<List<IssueForShopOrderVo>>() { |
|
|
|
}); |
|
|
|
|
|
|
|
return issueForShopOrderVos; |
|
|
|
}catch (Exception e){ |
|
|
|
throw new XJException("获取工单BOM物料列表失败: " + e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
List<IssueForShopOrderVo> issueForShopOrderVos = ifsApiIssueAndReturnService.getIssueForShopOrder(workOrderNo, site,"*", "*"); |
|
|
|
List<IssueForShopOrderVo> shopOrderVos = issueForShopOrderVos.stream() |
|
|
|
.filter(vo -> { |
|
|
|
return vo.getPartNo() != null && componentPartNo != null |
|
|
|
&& vo.getPartNo().equals(componentPartNo); |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
return shopOrderVos; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@ -134,6 +123,89 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<String> productionReturnConfirm(DirectUnissueDto returnDto) throws Exception{ |
|
|
|
// 验证工单状态 |
|
|
|
if (!validateWorkOrderStatus(returnDto.getWorkOrderNo(), returnDto.getSite())) { |
|
|
|
throw new XJException("工单状态不允许发料"); |
|
|
|
} |
|
|
|
|
|
|
|
//创建出库单记录 |
|
|
|
List<TransCommonSubDto> subList = new ArrayList<>(); |
|
|
|
|
|
|
|
TransCommonRequestDto transCommonRequestDto = new TransCommonRequestDto(); |
|
|
|
transCommonRequestDto.setSite(returnDto.getSite()); |
|
|
|
transCommonRequestDto.setTransTypeDb("PRUI"); |
|
|
|
transCommonRequestDto.setTransType("PRUI"); |
|
|
|
transCommonRequestDto.setRemark("生产直接退料-工单:" + returnDto.getWorkOrderNo()); |
|
|
|
transCommonRequestDto.setStatus("C"); |
|
|
|
transCommonRequestDto.setWorkOrderNo(returnDto.getWorkOrderNo()); |
|
|
|
transCommonRequestDto.setWarehouseId(returnDto.getWarehouseId()); |
|
|
|
transCommonRequestDto.setSourceNo(returnDto.getWorkOrderNo()); |
|
|
|
|
|
|
|
Double seqNo = 1.0; |
|
|
|
// 处理每个选择的物料 |
|
|
|
for (WorkOrderMaterialDto material : returnDto.getSelectedMaterials()) { |
|
|
|
// 创建出库记录详情 |
|
|
|
TransCommonSubDto subDto = new TransCommonSubDto(); |
|
|
|
subDto.setItemNo(Double.valueOf(returnDto.getLineItemNo())); |
|
|
|
subDto.setPartNo(returnDto.getComponentPartNo()); |
|
|
|
subDto.setSubNo(material.getLabelCode()); |
|
|
|
subDto.setBatchNo(material.getBatchNo()); |
|
|
|
subDto.setWarehouseId(material.getWarehouseId()); |
|
|
|
subDto.setLocationId(material.getLocationId()); |
|
|
|
subDto.setTransQty(material.getIssueQty().toString()); |
|
|
|
subDto.setDirection("+"); |
|
|
|
subDto.setWdrNo(material.getWdrNo()); |
|
|
|
subDto.setSqeNo(seqNo); |
|
|
|
subList.add(subDto); |
|
|
|
seqNo++; |
|
|
|
} |
|
|
|
transCommonRequestDto.setSubList(subList); |
|
|
|
List<TransDetail> in = transHeaderService.genTransAndChangeInventoryStock(transCommonRequestDto, "IN"); |
|
|
|
|
|
|
|
//前端打印新标签并跟新HandlingUnit的库位和长度 |
|
|
|
BigDecimal issueQty = BigDecimal.ZERO; |
|
|
|
List<HandlingUnit> handlingUnits = new ArrayList<>(); |
|
|
|
List<String> unitIds = new ArrayList<>(); |
|
|
|
for (WorkOrderMaterialDto material : returnDto.getSelectedMaterials()) { |
|
|
|
HandlingUnit hu = new HandlingUnit(); |
|
|
|
hu.setUnitId(material.getLabelCode()); |
|
|
|
hu.setLocationId(material.getLocationId()); |
|
|
|
hu.setQty(material.getIssueQty()); |
|
|
|
hu.setHeight(material.getHeight() == null ? BigDecimal.ZERO : material.getHeight()); |
|
|
|
handlingUnits.add(hu); |
|
|
|
issueQty = issueQty.add(material.getIssueQty()); |
|
|
|
unitIds.add(material.getLabelCode()); |
|
|
|
} |
|
|
|
productionReturnMapper.updateHandingUnit(handlingUnits); |
|
|
|
|
|
|
|
for (TransDetail unissue : in){ |
|
|
|
UnissueShopOrderDto unissueShopOrderDto = new UnissueShopOrderDto(); |
|
|
|
unissueShopOrderDto.setIfsOrderNo(transCommonRequestDto.getWorkOrderNo()); |
|
|
|
unissueShopOrderDto.setIfsLineItemNo(returnDto.getLineItemNo()); |
|
|
|
unissueShopOrderDto.setIfsReleaseNo(returnDto.getReleaseNo() == null ? "*" : returnDto.getReleaseNo()); |
|
|
|
unissueShopOrderDto.setIfsSequenceNo(returnDto.getSequenceNo() == null ? "*" : returnDto.getSequenceNo()); |
|
|
|
unissueShopOrderDto.setIfsSiteID(returnDto.getSite()); |
|
|
|
unissueShopOrderDto.setIfsPartNo(unissue.getPartNo()); |
|
|
|
unissueShopOrderDto.setIfsLocationNo(unissue.getLocationId()); |
|
|
|
unissueShopOrderDto.setIfsLotBatchNo(unissue.getBatchNo()); |
|
|
|
unissueShopOrderDto.setIfsWDRNo(unissue.getWdrNo()); |
|
|
|
unissueShopOrderDto.setIfsSerialNo("*"); |
|
|
|
unissueShopOrderDto.setIfsTransQty(unissue.getTransQty()); |
|
|
|
unissueShopOrderDto.setIfsIssuedQty(returnDto.getIssueQty()); |
|
|
|
unissueShopOrderDto.setIfsReversedQty(returnDto.getIfsReversedQty()); |
|
|
|
unissueShopOrderDto.setIfsTransactionID(returnDto.getTransactionId()); |
|
|
|
unissueShopOrderDto.setIfsAccountingID(returnDto.getAccountingId()); |
|
|
|
unissueShopOrderDto.setIfsEngChgLevel("0"); |
|
|
|
unissueShopOrderDto.setIfsActivitySequenceNo("0"); |
|
|
|
unissueShopOrderDto.setIfsHandlingUnitID("0"); |
|
|
|
ifsApiIssueAndReturnService.addShopOrderManualUnIssue(unissueShopOrderDto); |
|
|
|
} |
|
|
|
return unitIds; |
|
|
|
} |
|
|
|
|
|
|
|
/*------------------------------------------------PDA申请单退料----------------------------------------------------------*/ |
|
|
|
@Override |
|
|
|
public List<UnissueNotifyAndOrderListVo> getUnissueNotifyHeaderInfo(ProductionReturnDto dto){ |
|
|
|
@ -184,7 +256,7 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void productionReturnUnissueConfirm(DirectUnissueDto returnDto) { |
|
|
|
public List<String> productionReturnUnissueConfirm(DirectUnissueDto returnDto) throws Exception{ |
|
|
|
// 验证工单状态 |
|
|
|
if (!validateWorkOrderStatus(returnDto.getWorkOrderNo(), returnDto.getSite())) { |
|
|
|
throw new XJException("工单状态不允许发料"); |
|
|
|
@ -240,6 +312,7 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { |
|
|
|
//前端打印新标签并跟新HandlingUnit的库位和长度 |
|
|
|
BigDecimal issueQty = BigDecimal.ZERO; |
|
|
|
List<HandlingUnit> handlingUnits = new ArrayList<>(); |
|
|
|
List<String> unitIds = new ArrayList<>(); |
|
|
|
for (WorkOrderMaterialDto material : returnDto.getSelectedMaterials()) { |
|
|
|
HandlingUnit hu = new HandlingUnit(); |
|
|
|
hu.setUnitId(material.getLabelCode()); |
|
|
|
@ -248,6 +321,7 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { |
|
|
|
hu.setHeight(material.getHeight() == null ? BigDecimal.ZERO : material.getHeight()); |
|
|
|
handlingUnits.add(hu); |
|
|
|
issueQty = issueQty.add(material.getIssueQty()); |
|
|
|
unitIds.add(material.getLabelCode()); |
|
|
|
} |
|
|
|
productionReturnMapper.updateHandingUnit(handlingUnits); |
|
|
|
UnissueNotifyOrderMaterialList one = productionReturnMapper.getUnissueNotifyOrderMaterialListByOne(returnDto.getNotifyNo(), returnDto.getSite(), returnDto.getItemNo(), returnDto.getLineItemNo(), returnDto.getComponentPartNo()); |
|
|
|
@ -276,5 +350,6 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { |
|
|
|
unissueShopOrderDto.setIfsHandlingUnitID("0"); |
|
|
|
ifsApiIssueAndReturnService.addShopOrderManualUnIssue(unissueShopOrderDto); |
|
|
|
} |
|
|
|
return unitIds; |
|
|
|
} |
|
|
|
} |