Browse Source

直接退料修改

master
shenzhouyu 2 months ago
parent
commit
5575139ee0
  1. 17
      src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java
  2. 2
      src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java
  3. 8
      src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java
  4. 123
      src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java
  5. 4
      src/main/resources/mapper/production/ProductionReturnMapper.xml

17
src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java

@ -56,7 +56,7 @@ public class ProductionReturnController {
@PostMapping("/getIssueForShopOrder")
public R getIssueForShopOrder(@RequestBody ProductionReturnDto dto){
try {
List<IssueForShopOrderVo> issueForShopOrder = productionReturnService.getIssueForShopOrder(dto.getWorkOrderNo(), dto.getSite());
List<IssueForShopOrderVo> issueForShopOrder = productionReturnService.getIssueForShopOrder(dto.getWorkOrderNo(), dto.getSite(),dto.getComponentPartNo());
return R.ok().put("issueForShopOrder", issueForShopOrder);
} catch (Exception e) {
return R.error(e.getMessage());
@ -72,6 +72,15 @@ public class ProductionReturnController {
return R.ok().put("inventoryPart", inventoryPart);
}
/**
* 确认发料
*/
@PostMapping("/productionReturnConfirm")
public R productionReturnConfirm(@RequestBody DirectUnissueDto dto)throws Exception{
List<String> ids = productionReturnService.productionReturnConfirm(dto);
return R.ok().put("unitIds", ids);
}
/*------------------------------------------------PDA申请单退料----------------------------------------------------------*/
@PostMapping("/getUnissueNotifyHeaderInfo")
public R getUnissueNotifyHeaderInfo(@RequestBody ProductionReturnDto dto)throws Exception{
@ -116,8 +125,8 @@ public class ProductionReturnController {
}
@PostMapping("/productionReturnUnissueConfirm")
public R productionReturnUnissueConfirm(@RequestBody DirectUnissueDto dto){
productionReturnService.productionReturnUnissueConfirm(dto);
return R.ok();
public R productionReturnUnissueConfirm(@RequestBody DirectUnissueDto dto)throws Exception{
List<String> ids = productionReturnService.productionReturnUnissueConfirm(dto);
return R.ok().put("unitIds", ids);
}
}

2
src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java

@ -59,4 +59,6 @@ public class ProductionReturnDto implements Serializable {
private String sequenceNo;
private String orderNo;
private String componentPartNo;
}

8
src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java

@ -20,7 +20,7 @@ public interface ProductionReturnService {
* @param site
* @return
*/
List<ShopOrderVo> getReturnWorkOrderInfo(String workOrderNo, String site);
List<ShopOrderVo> getReturnWorkOrderInfo(String workOrderNo, String site)throws Exception;
/**
* 获取领料记录直接退料
@ -28,10 +28,12 @@ public interface ProductionReturnService {
* @param site
* @return
*/
List<IssueForShopOrderVo> getIssueForShopOrder(String workOrderNo, String site);
List<IssueForShopOrderVo> getIssueForShopOrder(String workOrderNo, String site,String componentPartNo)throws Exception;
List<InventoryPartVo> getInventoryPart(String partNo, String site);
List<String> productionReturnConfirm(DirectUnissueDto returnDto) throws Exception;
/*------------------------------------------------PDA申请单退料----------------------------------------------------------*/
List<UnissueNotifyAndOrderListVo> getUnissueNotifyHeaderInfo(ProductionReturnDto dto);
@ -41,5 +43,5 @@ public interface ProductionReturnService {
MaterialLabelInfo scanMaterialLabel(String labelCode, String site,String batchNo,String partNo);
void productionReturnUnissueConfirm(DirectUnissueDto dto);
List<String> productionReturnUnissueConfirm(DirectUnissueDto dto)throws Exception;
}

123
src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java

@ -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;
}
}

4
src/main/resources/mapper/production/ProductionReturnMapper.xml

@ -46,6 +46,10 @@
<update id="updateHandingUnit" parameterType="java.util.List">
UPDATE handling_unit
SET
reserve_flag = 'N',
reserve_order_ref1 = null,
reserve_order_ref2 = null,
reserve_order_ref3 = null,
location_id = CASE unit_id
<foreach collection="list" item="hu" separator="">
WHEN #{hu.unitId} THEN #{hu.locationId}

Loading…
Cancel
Save