From d11feb8336d609a47695f849cc377a0a5f8dbb3b Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期二, 26 八月 2025 15:01:14 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java | 121 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 119 insertions(+), 2 deletions(-) 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 fb4b473..118e09f 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 @@ -1,24 +1,141 @@ package org.jeecg.modules.mes.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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; +import org.jeecg.modules.mes.enums.MaterialTransferRequestStatus; +import org.jeecg.modules.mes.enums.ProductionWorkOrderStatus; 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 public class MesMaterialTransferRequestServiceImpl extends ServiceImpl<MesMaterialTransferRequestMapper, MesMaterialTransferRequest> implements IMesMaterialTransferRequestService { + @Autowired + private IMesProductionWorkOrderService productionWorkOrderService; + @Autowired + private OrderMaterialRequestService orderMaterialRequestService; + @Autowired + private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private WMSWebServiceClient wmsWebServiceClient; + @Override public List<MesMaterialTransferRequest> queryMaterialTransferRequestByWorkOrderId(String workOrderId) { return baseMapper.queryMaterialTransferRequestByWorkOrderId(workOrderId); } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addMaterialTransferRequest(MesMaterialTransferRequest request) { + MesProductionWorkOrder order = productionWorkOrderService.getById(request.getWorkOrderId()); + if (order == null) { + throw new JeecgBootException("鎺掍骇宸ュ崟涓嶅瓨鍦�"); + } + if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(order.getWorkOrderStatus())) { + throw new JeecgBootException("鍙湁鍙戝竷鐘舵�佺殑鎺掍骇宸ュ崟鎵嶅彲鐢宠鐗╂枡"); + } + request.setPublishStatus(MaterialTransferPublishStatus.WAIT_PUBLISH.name()); + request.setRequestStatus(MaterialTransferRequestStatus.WAIT_REQUEST.name()); + request.setDelFlag(CommonConstant.DEL_FLAG_0); + 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; + } + + @Override + public MesMaterialTransferRequest queryByReservationCode(String reservationCode) { + LambdaQueryWrapper<MesMaterialTransferRequest> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MesMaterialTransferRequest::getReservationCode, reservationCode); + queryWrapper.eq(MesMaterialTransferRequest::getDelFlag, CommonConstant.DEL_FLAG_0); + List<MesMaterialTransferRequest> list = super.list(queryWrapper); + if (CollectionUtil.isNotEmpty(list)) { + return list.get(0); + } + return null; + } } -- Gitblit v1.9.3