diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java index 1004cdaa..2b63cbbf 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java @@ -11,6 +11,7 @@ import com.nflg.wms.admin.pojo.request.NoScanningRequest; import com.nflg.wms.admin.repository.InMaterialScanRecordRespository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.NoScanningBaseControllerService; +import com.nflg.wms.admin.service.QmsService; import com.nflg.wms.admin.service.SapService; import com.nflg.wms.admin.util.*; import com.nflg.wms.common.constant.BarCodeProcessStage; @@ -96,6 +97,9 @@ public class InCostCenterBackController extends BaseController { @Resource private NoScanningBaseControllerService noScanningBaseControllerService; + @Resource + private QmsService qmsService; + /** * 查询SAP领料订单数据 */ @@ -128,8 +132,10 @@ public class InCostCenterBackController extends BaseController { inCostcenterBackService.save(order); items.forEach(item -> { WmsInCostcenterBackItem data = Convert.convert(WmsInCostcenterBackItem.class, item); + data.setId(IdUtil.getSnowflakeNextId()); data.setLeft(data.getNum()); data.setOrderId(order.getId()); + pushInspection(data); inCostcenterBackItemService.save(data); }); }); @@ -185,7 +191,7 @@ public class InCostCenterBackController extends BaseController { .setRsnum(order.getRsnum()) .setFactoryNo(order.getWerks()) .setItems(datas.stream() - .filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0) + .filter(item -> item.getInspectionStatus() == 1 && item.getLeft().compareTo(BigDecimal.ZERO) > 0) .map(item -> { OutProduceItemVO vo = new OutProduceItemVO() .setId(item.getId()) @@ -221,7 +227,7 @@ public class InCostCenterBackController extends BaseController { List items = inCostcenterBackItemService.lambdaQuery() .eq(WmsInCostcenterBackItem::getOrderId, order.getId()) .list(); - items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0); + items.removeIf(item -> item.getInspectionStatus() != 1 && item.getLeft().compareTo(BigDecimal.ZERO) <= 0); return ApiResult.success( items.stream() .map(item -> new NoScanItemVO() @@ -280,6 +286,8 @@ public class InCostCenterBackController extends BaseController { VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效:" + ri.getOrderItemId()); VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) <= 0) .throwMessage("物料" + item.getMatnr() + "已全部入库"); + VUtil.trueThrowBusinessError(item.getInspectionStatus() != 1) + .throwMessage("物料" + item.getMatnr() + "质检未通过"); BigDecimal num = ri.getDatas().stream() .map(NoScanningItemDataRequest::getNum) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -376,6 +384,8 @@ public class InCostCenterBackController extends BaseController { .findFirst() .orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效:" + it.getItemId()); + VUtil.trueThrowBusinessError(item.getInspectionStatus() != 1) + .throwMessage("物料" + item.getMatnr() + "质检未通过"); WmsInCostcenterBackTicketItem ti = new WmsInCostcenterBackTicketItem() .setId(IdUtil.getSnowflakeNextId()) .setTicketId(ticket.getId()) @@ -649,4 +659,34 @@ public class InCostCenterBackController extends BaseController { headers.setContentLength(zipBytes.length); return new ResponseEntity<>(zipBytes, headers, HttpStatus.OK); } + + /** + * 推送质检申请 + * @param itemId 订单项id + */ + @PostMapping("pushInspection") + public ApiResult pushInspection(@RequestBody Long itemId) { + WmsInCostcenterBackItem item = inCostcenterBackItemService.getById(itemId); + VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项不存在"); + VUtil.trueThrowBusinessError(item.getInspectionStatus() != 3).throwMessage("请勿重复推送"); + pushInspection(item); + inCostcenterBackItemService.updateById(item); + return ApiResult.success(); + } + + private void pushInspection(WmsInCostcenterBackItem item) { + if (qmsService.pushBackInspection( + List.of( + new ExternalReturnInspectionApplyQO() + .setRequestNo(String.valueOf(item.getId())) + .setMaterialNo(item.getMatnr()) + .setInspectionQty(item.getNum().intValue()) + .setReturnType((short) 1) + ) + )) { + item.setInspectionStatus(0); + } else { + item.setInspectionStatus(3); + } + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java index 0f7d06a6..97c52eab 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java @@ -78,6 +78,9 @@ public class QmsService { @Value("${qms.pdi.apply.url}") private String pdiApplyUrl; + @Value("${qms.back.apply.url}") + private String backApplyUrl; + /** * 推送IQC来料检验申请到QMS */ @@ -333,4 +336,29 @@ public class QmsService { Objects.isNull(response.getBody()) || response.getBody().getCode() != 200 ).throwMessage("推送PDI检验申请到QMS失败:" + response.getBody().getMessage()); } + + /** + * 推送退料入库检验申请 + */ + public boolean pushBackInspection(List items) { + log.info("推送退料入库检验申请到QMS:{}", JSONUtil.toJsonStr(items)); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity> requestEntity = new HttpEntity<>(items, headers); + try { + ResponseEntity> response = restTemplate.exchange( + qmsHost + backApplyUrl, + HttpMethod.POST, + requestEntity, + new ParameterizedTypeReference>() { + } + ); + log.info("推送退料入库检验申请到QMS结果:{},{}", response.getStatusCode().value(), JSONUtil.toJsonStr(response.getBody())); + return response.getBody() != null && response.getBody().getCode() == 200; + } catch (Exception ex) { + log.error("推送退料入库检验申请到QMS失败",ex); + return false; + } + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInCostcenterBackItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInCostcenterBackItem.java index b2813853..938c656c 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInCostcenterBackItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInCostcenterBackItem.java @@ -90,4 +90,9 @@ public class WmsInCostcenterBackItem implements Serializable { * 预留/相关需求的项目编号 */ private String rspos; + + /** + * 质检状态,0:待质检;1:质检通过;2:质检未通过;3:推送失败 + */ + private Integer inspectionStatus; }