From e5199245eb5304daf88b86621e829d5711788de8 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期一, 25 八月 2025 15:58:21 +0800 Subject: [PATCH] art: 物料拉动相关接口 --- src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java | 130 ++++++++++++++++++++++++++------ src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java | 11 +- src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java | 14 +++ src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java | 82 +++++++++++++++++++- src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java | 2 5 files changed, 206 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java index 461882f..80a891c 100644 --- a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java +++ b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java @@ -6,21 +6,21 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.mes.entity.MesMaterialTransferRequest; +import org.jeecg.modules.mes.enums.MaterialTransferPublishStatus; import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; /** * @Description: 鐗╂枡鎷夊姩鐢宠 @@ -73,7 +73,7 @@ String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MATERIAL_TRANSFER_CODE_RULE); request.setRequestCode(codeSeq); boolean b = mesMaterialTransferRequestService.addMaterialTransferRequest(request); - if(!b) { + if (!b) { return Result.error("娣诲姞澶辫触锛�"); } return Result.OK("娣诲姞鎴愬姛锛�"); @@ -87,7 +87,6 @@ */ @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-缂栬緫") @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-缂栬緫", notes = "鐗╂枡鎷夊姩鐢宠-缂栬緫") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) public Result<String> edit(@RequestBody MesMaterialTransferRequest mesMaterialTransferRequest) { mesMaterialTransferRequestService.updateById(mesMaterialTransferRequest); @@ -102,11 +101,18 @@ */ @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-閫氳繃id鍒犻櫎") @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-閫氳繃id鍒犻櫎", notes = "鐗╂枡鎷夊姩鐢宠-閫氳繃id鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name = "id", required = true) String id) { - mesMaterialTransferRequestService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); + MesMaterialTransferRequest entity = mesMaterialTransferRequestService.getById(id); + if (entity == null) { + return Result.error("鍒犻櫎鐨勬暟鎹笉瀛樺湪锛岃鍒锋柊閲嶈瘯锛�"); + } + if (!MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) { + return Result.error("鏁版嵁宸插彂甯冿紝鏃犳硶鍒犻櫎锛�"); + } + entity.setDelFlag(CommonConstant.DEL_FLAG_1); + mesMaterialTransferRequestService.updateById(entity); + return Result.OK("鍒犻櫎鎴愬姛锛�"); } /** @@ -117,10 +123,21 @@ */ @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍒犻櫎") @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍒犻櫎", notes = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { - this.mesMaterialTransferRequestService.removeByIds(Arrays.asList(ids.split(","))); + if (StringUtils.isBlank(ids)) { + return Result.error("鍙傛暟閿欒锛�"); + } + String[] split = ids.split(","); + for (String id : split) { + MesMaterialTransferRequest entity = mesMaterialTransferRequestService.getById(id); + if (entity == null || !MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) { + //涓嶅仛澶勭悊 + continue; + } + entity.setDelFlag(CommonConstant.DEL_FLAG_1); + mesMaterialTransferRequestService.updateById(entity); + } return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); } @@ -142,28 +159,93 @@ } /** - * 瀵煎嚭excel + * 閫氳繃id鍙戝竷 * - * @param request - * @param mesMaterialTransferRequest + * @param id + * @return */ - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, MesMaterialTransferRequest mesMaterialTransferRequest) { - return super.exportXls(request, mesMaterialTransferRequest, MesMaterialTransferRequest.class, "鐗╂枡鎷夊姩鐢宠"); + @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鍙戝竷") + @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鍙戝竷", notes = "鐗╂枡鎷夊姩鐢宠-鍙戝竷") + @PutMapping(value = "/publish") + public Result<String> publish(@RequestParam(name = "id", required = true) String id) { + boolean b = mesMaterialTransferRequestService.publish(id); + if (!b) { + return Result.error("鍙戝竷澶辫触锛�"); + } + return Result.OK("鍙戝竷鎴愬姛锛�"); } /** - * 閫氳繃excel瀵煎叆鏁版嵁 + * 鎵归噺鍙戝竷 * - * @param request - * @param response + * @param ids * @return */ - //@RequiresPermissions("mes_material_transfer_request:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, MesMaterialTransferRequest.class); + @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍙戝竷") + @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍙戝竷", notes = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍙戝竷") + @PutMapping(value = "/publishBatch") + public Result<String> publishBatch(@RequestParam(name = "ids", required = true) String ids) { + if (StringUtils.isBlank(ids)) { + return Result.error("鍙傛暟閿欒锛�"); + } + String[] split = ids.split(","); + int count = 0; + for (String id : split) { + try { + boolean b = mesMaterialTransferRequestService.publish(id); + if(b) { + count++; + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + return Result.OK("鎴愬姛鍙戝竷" + count + "鏉℃暟鎹紒"); + } + + /** + * 閫氳繃id璇锋眰WMS + * + * @param id + * @return + */ + @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-璇锋眰WMS") + @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-璇锋眰WMS", notes = "鐗╂枡鎷夊姩鐢宠-璇锋眰WMS") + @PutMapping(value = "/request") + public Result<String> request(@RequestParam(name = "id", required = true) String id) { + boolean b = mesMaterialTransferRequestService.request(id); + if (!b) { + return Result.error("璇锋眰澶辫触锛�"); + } + return Result.OK("璇锋眰鎴愬姛锛�"); + } + + /** + * 鎵归噺璇锋眰WMS + * + * @param ids + * @return + */ + @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺璇锋眰WMS") + @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺璇锋眰WMS", notes = "鐗╂枡鎷夊姩鐢宠-鎵归噺璇锋眰WMS") + @PutMapping(value = "/requestBatch") + public Result<String> requestBatch(@RequestParam(name = "ids", required = true) String ids) { + if (StringUtils.isBlank(ids)) { + return Result.error("鍙傛暟閿欒锛�"); + } + String[] split = ids.split(","); + int count = 0; + for (String id : split) { + try { + boolean b = mesMaterialTransferRequestService.request(id); + if(b) { + count++; + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + return Result.OK("鎴愬姛璇锋眰WMS" + count + "鏉℃暟鎹紒"); } /* diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java index 8adcc8e..7bb3ee3 100644 --- a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java +++ b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java @@ -1,6 +1,9 @@ package org.jeecg.modules.mes.entity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -8,10 +11,10 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; -import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; /** @@ -105,8 +108,8 @@ private String materialName; /**鐞嗚鎷夊姩鏁伴噺*/ @ApiModelProperty(value = "鐞嗚鎷夊姩鏁伴噺") - private Double specifiedQuantity; + private BigDecimal specifiedQuantity; /**瀹為檯鎷夊姩鏁伴噺*/ @ApiModelProperty(value = "瀹為檯鎷夊姩鏁伴噺") - private Double actualQuantity; + private BigDecimal actualQuantity; } diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java index cae934a..45886e1 100644 --- a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java +++ b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java @@ -19,4 +19,18 @@ * @param request */ boolean addMaterialTransferRequest(MesMaterialTransferRequest request); + + /** + * 鍙戝竷锛岃皟鐢⊿AP鑾峰彇棰勭暀鍙� + * @param id + * @return + */ + boolean publish(String id); + + /** + * 璇锋眰WMS + * @param id + * @return + */ + boolean request(String id); } diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java index 87c4ad6..6c20944 100644 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java +++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.modules.base.entity.LineSideWarehouse; +import org.jeecg.modules.base.service.ILineSideWarehouseService; import org.jeecg.modules.mes.entity.MesMaterialTransferRequest; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import org.jeecg.modules.mes.enums.MaterialTransferPublishStatus; @@ -11,16 +13,22 @@ import org.jeecg.modules.mes.mapper.MesMaterialTransferRequestMapper; import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; +import org.jeecg.modules.sap.dto.MaterialRequestDTO; +import org.jeecg.modules.sap.request.MaterialRequest; +import org.jeecg.modules.sap.service.OrderMaterialRequestService; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.WebReservationOrder; +import org.jeecg.modules.wms.service.WMSWebServiceClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; /** * @Description: 鐗╂枡鎷夊姩鐢宠 * @Author: jeecg-boot - * @Date: 2025-07-04 + * @Date: 2025-07-04 * @Version: V1.0 */ @Service @@ -28,6 +36,12 @@ @Autowired private IMesProductionWorkOrderService productionWorkOrderService; + @Autowired + private OrderMaterialRequestService orderMaterialRequestService; + @Autowired + private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private WMSWebServiceClient wmsWebServiceClient; @Override public List<MesMaterialTransferRequest> queryMaterialTransferRequestByWorkOrderId(String workOrderId) { @@ -38,10 +52,10 @@ @Transactional(rollbackFor = Exception.class) public boolean addMaterialTransferRequest(MesMaterialTransferRequest request) { MesProductionWorkOrder order = productionWorkOrderService.getById(request.getWorkOrderId()); - if(order == null){ + if (order == null) { throw new JeecgBootException("鎺掍骇宸ュ崟涓嶅瓨鍦�"); } - if(!ProductionWorkOrderStatus.PUBLISHED.name().equals(order.getWorkOrderStatus())){ + if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(order.getWorkOrderStatus())) { throw new JeecgBootException("鍙湁鍙戝竷鐘舵�佺殑鎺掍骇宸ュ崟鎵嶅彲鐢宠鐗╂枡"); } request.setPublishStatus(MaterialTransferPublishStatus.WAIT_PUBLISH.name()); @@ -50,4 +64,64 @@ this.getBaseMapper().insert(request); return true; } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean publish(String id) { + MesMaterialTransferRequest entity = super.getById(id); + if (entity == null) { + throw new JeecgBootException("鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) { + throw new JeecgBootException("鏁版嵁宸插彂甯冿紒"); + } + LineSideWarehouse warehouse = lineSideWarehouseService.getById(entity.getTargetWarehouseId()); + if (warehouse == null) { + throw new JeecgBootException("绾胯竟搴撲笉瀛樺湪锛�"); + } + MaterialRequest request = new MaterialRequest(); + request.setMaterialNumber(entity.getMaterialNumber()); + request.setQuantity(request.getQuantity()); + request.setWarehouseCode(entity.getOriginalWarehouseId()); + try { + Map<String, Object> response = orderMaterialRequestService.orderMaterialRequest("2301", warehouse.getWarehouseCode(), Collections.singletonList(request)); + Object ztype = response.get("ztype"); + if (!"S".equals(ztype)) { + throw new JeecgBootException("璋冪敤SAP璇锋眰棰勭暀鍙峰け璐ワ紒" + response.get("zmess")); + } + MaterialRequestDTO result = (MaterialRequestDTO) response.get("result"); + entity.setReservationCode(result.getO_SAP_RESV()); + entity.setPublishStatus(MaterialTransferPublishStatus.PUBLISHED.name()); + entity.setPublishTime(new Date()); + super.updateById(entity); + return true; + } catch (Exception e) { + throw new JeecgBootException("璋冪敤SAP璇锋眰棰勭暀鍙峰け璐ワ紒"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean request(String id) { + MesMaterialTransferRequest entity = super.getById(id); + if (entity == null) { + throw new JeecgBootException("鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!MaterialTransferPublishStatus.PUBLISHED.name().equals(entity.getPublishStatus()) || !MaterialTransferRequestStatus.WAIT_REQUEST.name().equals(entity.getRequestStatus())) { + throw new JeecgBootException("鏁版嵁鐘舵�佷笉鍙姹俉MS锛�"); + } + WebReservationOrder request = new WebReservationOrder(); + request.setFactoryCode("2301"); + request.setReservationOrder(entity.getReservationCode()); + request.setTotal(entity.getSpecifiedQuantity()); + Map<String, Object> resultMap = wmsWebServiceClient.receiveReservation(request); + WSResponse result = (WSResponse)resultMap.get("result"); + if("Y".equals(result.getErrorCode())) { + entity.setRequestStatus(MaterialTransferRequestStatus.REQUESTED.name()); + entity.setRequestTime(new Date()); + super.updateById(entity); + return true; + } + return false; + } } diff --git a/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java b/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java index 1bf9282..e6b614f 100644 --- a/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java +++ b/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java @@ -82,7 +82,7 @@ MaterialRequestDTO response = new MaterialRequestDTO(); String zmess = function.getExportParameterList().getValue("O_IS_OK").toString(); String ztype = function.getExportParameterList().getValue("O_MESSAGE").toString();//S 鏍囪瘑 鎴愬姛 - String resv = function.getExportParameterList().getValue("O_SAP_RESV").toString();//S 鏍囪瘑 鎴愬姛 + String resv = function.getExportParameterList().getValue("O_SAP_RESV").toString(); response.setO_IS_OK(ztype); response.setO_MESSAGE(zmess); response.setO_SAP_RESV(resv); -- Gitblit v1.9.3