新火炬后端单体项目初始化代码
cuilei
7 小时以前 d11feb8336d609a47695f849cc377a0a5f8dbb3b
Merge remote-tracking branch 'origin/master'
已修改17个文件
610 ■■■■ 文件已修改
src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java 258 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/wms/WMSWebService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java
@@ -83,6 +83,8 @@
            String productionLineId = andonResponseConfigService.getProductionLineIdByButtonId(andonOrder.getButtonId());
            if (productionLineId != null) {
                andonOrder.setFactoryId(productionLineId);
            }else{
             return Result.error("未找到对应的产线ID,请先进行安灯响应配置!");
            }
        }
        andonOrderService.save(andonOrder);
src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java
@@ -68,7 +68,7 @@
        // 设置工单状态为处理中
        andonOrder.setOrderStatus("3");
        // 获取响应者用户名
        // 获取响应用户名
        String responderUsername = andonOrder.getResponder();
        // 验证响应者用户名不为空
src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
@@ -55,7 +55,7 @@
    @Override
    public String getProductionLineIdByButtonId(String buttonId) {
        QueryWrapper<AndonResponseConfig> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("button_id", buttonId);
        queryWrapper.eq("button_id", buttonId);  // 确保这里使用的是数据库字段名
        AndonResponseConfig config = this.getOne(queryWrapper);
        return config != null ? config.getFactoryId() : null;
    }
src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
@@ -3,15 +3,11 @@
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.cms.entity.CuttingInventory;
import org.jeecg.modules.cms.service.ICuttingInventoryService;
@@ -20,141 +16,133 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
 /**
/**
 * @Description: 刀具库存
 * @Author: jeecg-boot
 * @Date:   2025-07-28
 * @Date: 2025-07-28
 * @Version: V1.0
 */
@Api(tags="刀具库存")
@Api(tags = "刀具库存")
@RestController
@RequestMapping("/cms/cuttingInventory")
@Slf4j
public class CuttingInventoryController extends JeecgController<CuttingInventory, ICuttingInventoryService> {
    @Autowired
    private ICuttingInventoryService cuttingInventoryService;
    /**
     * 分页列表查询
     *
     * @param cuttingInventory
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "刀具库存-分页列表查询")
    @ApiOperation(value="刀具库存-分页列表查询", notes="刀具库存-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<CuttingInventory>> queryPageList(CuttingInventory cuttingInventory,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<CuttingInventory> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInventory, req.getParameterMap());
        Page<CuttingInventory> page = new Page<CuttingInventory>(pageNo, pageSize);
        IPage<CuttingInventory> pageList = cuttingInventoryService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     *   添加
     *
     * @param cuttingInventory
     * @return
     */
    @AutoLog(value = "刀具库存-添加")
    @ApiOperation(value="刀具库存-添加", notes="刀具库存-添加")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody CuttingInventory cuttingInventory) {
        cuttingInventoryService.save(cuttingInventory);
        return Result.OK("添加成功!");
    }
    /**
     *  编辑
     *
     * @param cuttingInventory
     * @return
     */
    @AutoLog(value = "刀具库存-编辑")
    @ApiOperation(value="刀具库存-编辑", notes="刀具库存-编辑")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<String> edit(@RequestBody CuttingInventory cuttingInventory) {
        cuttingInventoryService.updateById(cuttingInventory);
        return Result.OK("编辑成功!");
    }
    /**
     *   通过id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "刀具库存-通过id删除")
    @ApiOperation(value="刀具库存-通过id删除", notes="刀具库存-通过id删除")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:delete")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name="id",required=true) String id) {
        cuttingInventoryService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     *  批量删除
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "刀具库存-批量删除")
    @ApiOperation(value="刀具库存-批量删除", notes="刀具库存-批量删除")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:deleteBatch")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.cuttingInventoryService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    //@AutoLog(value = "刀具库存-通过id查询")
    @ApiOperation(value="刀具库存-通过id查询", notes="刀具库存-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<CuttingInventory> queryById(@RequestParam(name="id",required=true) String id) {
        CuttingInventory cuttingInventory = cuttingInventoryService.getById(id);
        if(cuttingInventory==null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(cuttingInventory);
    }
    @Autowired
    private ICuttingInventoryService cuttingInventoryService;
    /**
    * 导出excel
    *
    * @param request
    * @param cuttingInventory
    */
     * 分页列表查询
     *
     * @param cuttingInventory
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "刀具库存-分页列表查询")
    @ApiOperation(value = "刀具库存-分页列表查询", notes = "刀具库存-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<CuttingInventory>> queryPageList(CuttingInventory cuttingInventory,
                                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                         HttpServletRequest req) {
        QueryWrapper<CuttingInventory> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInventory, req.getParameterMap());
        Page<CuttingInventory> page = new Page<CuttingInventory>(pageNo, pageSize);
        IPage<CuttingInventory> pageList = cuttingInventoryService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * 添加
     *
     * @param cuttingInventory
     * @return
     */
    @AutoLog(value = "刀具库存-添加")
    @ApiOperation(value = "刀具库存-添加", notes = "刀具库存-添加")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody CuttingInventory cuttingInventory) {
        cuttingInventoryService.save(cuttingInventory);
        return Result.OK("添加成功!");
    }
    /**
     * 编辑
     *
     * @param cuttingInventory
     * @return
     */
    @AutoLog(value = "刀具库存-编辑")
    @ApiOperation(value = "刀具库存-编辑", notes = "刀具库存-编辑")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<String> edit(@RequestBody CuttingInventory cuttingInventory) {
        cuttingInventoryService.updateById(cuttingInventory);
        return Result.OK("编辑成功!");
    }
    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "刀具库存-通过id删除")
    @ApiOperation(value = "刀具库存-通过id删除", notes = "刀具库存-通过id删除")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:delete")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
        cuttingInventoryService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "刀具库存-批量删除")
    @ApiOperation(value = "刀具库存-批量删除", notes = "刀具库存-批量删除")
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:deleteBatch")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        this.cuttingInventoryService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    //@AutoLog(value = "刀具库存-通过id查询")
    @ApiOperation(value = "刀具库存-通过id查询", notes = "刀具库存-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<CuttingInventory> queryById(@RequestParam(name = "id", required = true) String id) {
        CuttingInventory cuttingInventory = cuttingInventoryService.getById(id);
        if (cuttingInventory == null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(cuttingInventory);
    }
    /**
     * 导出excel
     *
     * @param request
     * @param cuttingInventory
     */
    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:exportXls")
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, CuttingInventory cuttingInventory) {
@@ -162,16 +150,30 @@
    }
    /**
      * 通过excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
     * 通过excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    //@RequiresPermissions("cms_cutting_inventory:importExcel")
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, CuttingInventory.class);
    }
    /**
     * 刀具库存统计
     */
    @ApiOperation(value = "刀具库存-统计分页查询", notes = "刀具库存-统计分页查询")
    @GetMapping(value = "/statistics")
    public Result<IPage<Map<String, Object>>> statistics(
            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<Map<String, Object>> page = new Page<>(pageNo, pageSize);
        IPage<Map<String, Object>> pageList = cuttingInventoryService.statisticsByCuttingIdAndStatus(page);
        return Result.OK(pageList);
    }
}
src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java
@@ -1,8 +1,9 @@
package org.jeecg.modules.cms.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.cms.entity.CuttingInventory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -13,5 +14,4 @@
 * @Version: V1.0
 */
public interface CuttingInventoryMapper extends BaseMapper<CuttingInventory> {
}
    IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page);}
src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml
@@ -1,5 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.cms.mapper.CuttingInventoryMapper">
    <select id="statisticsByCuttingIdAndStatus" resultType="map">
        SELECT
            t1.cutting_id as cuttingId,
            count(*) AS cuttingIdNumber,
            t1.inventory_status as inventoryStatus,
            t2.cutting_code AS cuttingCode
        FROM
            cms_cutting_inventory t1
        LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id AND t2.del_flag = 0
        GROUP BY cutting_id, inventory_status, cutting_code
    </select>
</mapper>
src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
@@ -1,7 +1,12 @@
package org.jeecg.modules.cms.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.cms.entity.CuttingInventory;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
 * @Description: 刀具库存
@@ -11,4 +16,6 @@
 */
public interface ICuttingInventoryService extends IService<CuttingInventory> {
    IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page);
}
src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
@@ -1,11 +1,21 @@
package org.jeecg.modules.cms.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.cms.entity.CuttingInventory;
import org.jeecg.modules.cms.mapper.CuttingInventoryMapper;
import org.jeecg.modules.cms.mapper.CuttingToolMapper;
import org.jeecg.modules.cms.service.ICuttingInventoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * @Description: 刀具库存
@@ -15,5 +25,9 @@
 */
@Service
public class CuttingInventoryServiceImpl extends ServiceImpl<CuttingInventoryMapper, CuttingInventory> implements ICuttingInventoryService {
    @Override
    public IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page) {        // 执行分页统计查询
        IPage<Map<String, Object>> result = baseMapper.statisticsByCuttingIdAndStatus(page);
        return result;
    }
}
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 + "条数据!");
    }
    /*
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;
}
src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java
@@ -19,4 +19,25 @@
     * @param request
     */
    boolean addMaterialTransferRequest(MesMaterialTransferRequest request);
    /**
     * 发布,调用SAP获取预留号
     * @param id
     * @return
     */
    boolean publish(String id);
    /**
     * 请求WMS
     * @param id
     * @return
     */
    boolean request(String id);
    /**
     * 根据预留号获取物料拉动信息
     * @param reservationCode
     * @return
     */
    MesMaterialTransferRequest queryByReservationCode(String reservationCode);
}
src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java
@@ -1,8 +1,12 @@
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;
@@ -11,16 +15,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 +38,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 +54,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 +66,76 @@
        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;
    }
    @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;
    }
}
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);
src/main/java/org/jeecg/modules/wms/WMSWebService.java
@@ -64,9 +64,6 @@
        super(wsdlLocation, serviceName, features);
    }
    /**
     *
     * @return
src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
@@ -23,7 +23,7 @@
    @Autowired
    private WMSWebServiceClient webServiceClient;
    private final static String localUrl = "http://localhost:9989/ebservice/ReceiveWMSScanItemList?wsdl";
    private final static String localUrl = "http://localhost:9989/webservice/MESWebService?wsdl";
    @ApiOperation(value = "WMS集成测试-接收WMS移库结果", notes = "WMS集成测试-接收WMS移库结果")
src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
@@ -1,12 +1,19 @@
package org.jeecg.modules.wms.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.aspect.annotation.ApiLog;
import org.jeecg.common.constant.ApiLogCategoryEnum;
import org.jeecg.modules.mes.entity.MesMaterialTransferRequest;
import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
import org.jeecg.modules.wms.dto.WSResponse;
import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
import org.jeecg.modules.wms.request.WMSWebServiceSendItem;
import org.jeecg.modules.wms.service.MESWebServiceSoap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.jws.WebMethod;
import javax.jws.WebParam;
@@ -21,17 +28,36 @@
@WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com", endpointInterface = "org.jeecg.modules.wms.service.MESWebServiceSoap")
public class MESWebServiceSoapImpl implements MESWebServiceSoap {
    @Autowired
    private IMesMaterialTransferRequestService materialTransferRequestService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList")
    @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList")
    @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse")
    @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/")
    @ApiLog(apiName = "接收WMS的移库信息(ReceiveWMSScanItemList(MES)", apiCategory = ApiLogCategoryEnum.WMS)
    public WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request) {
        log.error("11111111111");
        WSResponse response = new WSResponse();
        response.setErrorCode("-1");
        response.setErrorDesc("我时结果集");
        if (request == null || CollectionUtil.isEmpty(request.getWmsWebServiceSendItemList())) {
            response.setErrorCode("N");
            response.setErrorDesc("传入的参数为空!");
            return response;
        }
        for(WMSWebServiceSendItem item : request.getWmsWebServiceSendItemList()) {
            if(StringUtils.isNotBlank(item.getReservationOrder())) {
                //物料拉动回调
                MesMaterialTransferRequest transferRequest = materialTransferRequestService.queryByReservationCode(item.getReservationOrder());
                if(transferRequest == null) {
                    response.setErrorCode("N");
                    response.setErrorDesc("根据预留号未找到物料拉动单!");
                    return response;
                }
            }else if(StringUtils.isNotBlank(item.getAlign())){
                //移库单回调
            }
        }
        return response;
    }
}
src/main/resources/application-prod.yml
@@ -132,16 +132,16 @@
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
        master:
          url: jdbc:sqlserver://localhost:1433;databasename=LXZN_TEST_XHJ
          url: jdbc:sqlserver://10.210.199.2:1433;databasename=LXZN_MDC_XHJ
          username: sa
          password: 123
          password: Lxzn1688
          driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
  #redis 配置
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:
    password: '1qaz@WSX'
#mybatis plus 设置
mybatis-plus:
  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml