新火炬后端单体项目初始化代码
zhangherong
17 小时以前 e5199245eb5304daf88b86621e829d5711788de8
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("数据状态不可请求WMS!");
        }
        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;
    }
}