新火炬后端单体项目初始化代码
已添加5个文件
已修改19个文件
已删除1个文件
1109 ■■■■ 文件已修改
db/双林新火炬MES数据库设计.pdma.json 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/controller/RatedLifeController.java 231 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/cms/entity/RatedLife.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/eam/controller/EamPrecisionParametersController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/eam/controller/EamRepairOrderController.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/eam/controller/EamReportRepairController.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/enums/MaterialCategory.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryStatusEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/entity/MesTransferOrderPrint.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/enums/TransferOrderStatusEnum.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/service/IMesTransferOrderPrintService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/service/impl/MesTransferOrderPrintServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-dev.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/Ë«ÁÖлð¾æMESÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -4,7 +4,7 @@
  "avatar": "",
  "version": "4.9.2",
  "createdTime": "2025-3-10 16:38:19",
  "updatedTime": "2025-8-20 15:14:16",
  "updatedTime": "2025-8-27 18:34:50",
  "dbConns": [],
  "profile": {
    "default": {
@@ -632,7 +632,7 @@
      "#DDE5FF"
    ],
    "DDLToggleCase": "L",
    "menuWidth": "304px"
    "menuWidth": "331px"
  },
  "entities": [
    {
@@ -4071,24 +4071,6 @@
          "extProps": {},
          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
          "id": "41E30E92-FC92-4E2C-AE7D-AFF4D9371B27"
        },
        {
          "defKey": "reference_file",
          "defName": "参考文件",
          "comment": "保养时参考的保养步骤",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "B17BDED3-085F-40E1-9019-3B79CF2BF075",
          "extProps": {},
          "domain": "13DE7063-440C-426F-B1DF-25EC824C6DB8",
          "id": "5576D652-16B0-4098-A22E-0B2F5EF98107"
        }
      ],
      "correlations": [],
@@ -4408,6 +4390,24 @@
          "id": "337FC9CD-0DAD-4781-B0BB-7FBCB5C14658"
        },
        {
          "defKey": "item_condition",
          "defName": "保养条件",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
          "id": "7A893A46-3C20-4E23-A204-46A0F0394933"
        },
        {
          "defKey": "item_name",
          "defName": "保养项目",
          "comment": "",
@@ -4463,7 +4463,7 @@
        },
        {
          "defKey": "item_demand_alias",
          "defName": "保养要求2",
          "defName": "异常处理基准",
          "comment": "",
          "type": "",
          "len": "",
@@ -62650,6 +62650,42 @@
          "id": "9056CBAC-AC31-46AC-802D-7ECC455F7834"
        },
        {
          "defKey": "inventory_id",
          "defName": "库存ID",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
          "id": "F0CCB50E-95F3-4D54-BE72-846BDAD32511"
        },
        {
          "defKey": "warehouse_id",
          "defName": "库存地",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
          "id": "3892DFB2-BCFA-413E-9930-4B88E5C8EFE8"
        },
        {
          "defKey": "batch_number",
          "defName": "批次号",
          "comment": "",
@@ -62730,24 +62766,6 @@
          "extProps": {},
          "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4",
          "id": "5B833F2B-D8C6-478D-B830-604D2CC6AAF0"
        },
        {
          "defKey": "work_order_id",
          "defName": "工单ID",
          "comment": "",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
          "id": "8D4EEF04-86ED-455F-A843-E9CAADBA042C"
        }
      ],
      "correlations": [],
@@ -64290,8 +64308,8 @@
          "id": "144B6087-1070-4007-9882-2A64F8AAAD91"
        },
        {
          "defKey": "order_category",
          "defName": "移库类型",
          "defKey": "inventory_id",
          "defName": "库存ID",
          "comment": "",
          "type": "",
          "len": "",
@@ -64304,8 +64322,8 @@
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
          "id": "EB0DE062-AF2C-4401-8773-663BBDB65F84"
          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
          "id": "F0B826E3-51CF-4FA3-A239-95CFBAA64184"
        },
        {
          "defKey": "original_warehouse_id",
src/main/java/org/jeecg/modules/cms/controller/RatedLifeController.java
@@ -9,6 +9,7 @@
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;
@@ -36,125 +37,125 @@
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/ratedLife")
@Slf4j
public class RatedLifeController extends JeecgController<RatedLife, IRatedLifeService> {
    @Autowired
    private IRatedLifeService ratedLifeService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param ratedLife
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "额定寿命-分页列表查询")
    @ApiOperation(value="额定寿命-分页列表查询", notes="额定寿命-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<RatedLife>> queryPageList(RatedLife ratedLife,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<RatedLife> queryWrapper = QueryGenerator.initQueryWrapper(ratedLife, req.getParameterMap());
        Page<RatedLife> page = new Page<RatedLife>(pageNo, pageSize);
        IPage<RatedLife> pageList = ratedLifeService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     *   æ·»åŠ 
     *
     * @param ratedLife
     * @return
     */
    @AutoLog(value = "额定寿命-添加")
    @ApiOperation(value="额定寿命-添加", notes="额定寿命-添加")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody RatedLife ratedLife) {
        ratedLifeService.save(ratedLife);
        return Result.OK("添加成功!");
    }
    /**
     *  ç¼–辑
     *
     * @param ratedLife
     * @return
     */
    @AutoLog(value = "额定寿命-编辑")
    @ApiOperation(value="额定寿命-编辑", notes="额定寿命-编辑")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<String> edit(@RequestBody RatedLife ratedLife) {
        ratedLifeService.updateById(ratedLife);
        return Result.OK("编辑成功!");
    }
    /**
     *   é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "额定寿命-通过id删除")
    @ApiOperation(value="额定寿命-通过id删除", notes="额定寿命-通过id删除")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:delete")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name="id",required=true) String id) {
        ratedLifeService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     *  æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "额定寿命-批量删除")
    @ApiOperation(value="额定寿命-批量删除", notes="额定寿命-批量删除")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:deleteBatch")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.ratedLifeService.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<RatedLife> queryById(@RequestParam(name="id",required=true) String id) {
        RatedLife ratedLife = ratedLifeService.getById(id);
        if(ratedLife==null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(ratedLife);
    }
    @Autowired
    private IRatedLifeService ratedLifeService;
    /**
    * å¯¼å‡ºexcel
    *
    * @param request
    * @param ratedLife
    */
     * åˆ†é¡µåˆ—表查询
     *
     * @param ratedLife
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "额定寿命-分页列表查询")
    @ApiOperation(value = "额定寿命-分页列表查询", notes = "额定寿命-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<RatedLife>> queryPageList(RatedLife ratedLife,
                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                  HttpServletRequest req) {
        QueryWrapper<RatedLife> queryWrapper = QueryGenerator.initQueryWrapper(ratedLife, req.getParameterMap());
        Page<RatedLife> page = new Page<RatedLife>(pageNo, pageSize);
        IPage<RatedLife> pageList = ratedLifeService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param ratedLife
     * @return
     */
    @AutoLog(value = "额定寿命-添加")
    @ApiOperation(value = "额定寿命-添加", notes = "额定寿命-添加")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody RatedLife ratedLife) {
        ratedLifeService.save(ratedLife);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param ratedLife
     * @return
     */
    @AutoLog(value = "额定寿命-编辑")
    @ApiOperation(value = "额定寿命-编辑", notes = "额定寿命-编辑")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<String> edit(@RequestBody RatedLife ratedLife) {
        ratedLifeService.updateById(ratedLife);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "额定寿命-通过id删除")
    @ApiOperation(value = "额定寿命-通过id删除", notes = "额定寿命-通过id删除")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:delete")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
        ratedLifeService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "额定寿命-批量删除")
    @ApiOperation(value = "额定寿命-批量删除", notes = "额定寿命-批量删除")
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:deleteBatch")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        this.ratedLifeService.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<RatedLife> queryById(@RequestParam(name = "id", required = true) String id) {
        RatedLife ratedLife = ratedLifeService.getById(id);
        if (ratedLife == null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(ratedLife);
    }
    /**
     * å¯¼å‡ºexcel
     *
     * @param request
     * @param ratedLife
     */
    //@RequiresPermissions("org.jeecg.modules:cms_rated_life:exportXls")
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, RatedLife ratedLife) {
@@ -162,12 +163,12 @@
    }
    /**
      * é€šè¿‡excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
     * é€šè¿‡excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    //@RequiresPermissions("cms_rated_life:importExcel")
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
src/main/java/org/jeecg/modules/cms/entity/RatedLife.java
@@ -55,6 +55,7 @@
    /**刀具ID*/
    @Excel(name = "刀具ID", width = 15)
    @ApiModelProperty(value = "刀具ID")
    @Dict(dictTable = "cms_cutting_tool",dicCode = "id",dicText = "cutting_code")
    private String cuttingId;
    /**工件材质*/
    @Excel(name = "工件材质", width = 15)
src/main/java/org/jeecg/modules/eam/controller/EamPrecisionParametersController.java
@@ -148,10 +148,10 @@
     * @param response
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, EamPrecisionParameters.class);
    }
        @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
        public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
            return super.importExcel(request, response, EamPrecisionParameters.class);
        }
    @ApiOperation(value = "精度参数维护-查询所有", notes = "精度参数维护-查询所有")
    @GetMapping(value = "/listAll")
src/main/java/org/jeecg/modules/eam/controller/EamRepairOrderController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,193 @@
package org.jeecg.modules.eam.controller;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.TranslateDictTextUtils;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.entity.EamRepairOrder;
import org.jeecg.modules.eam.request.EamRepairOrderQuery;
import org.jeecg.modules.eam.request.EamRepairOrderRequest;
import org.jeecg.modules.eam.request.EamRepairOrderResponse;
import org.jeecg.modules.eam.request.EamReportRepairQuery;
import org.jeecg.modules.eam.service.IEamRepairOrderService;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
 * @Description: ç»´ä¿®å·¥å•
 * @Author: Lius
 * @Date: 2025-04-03
 */
@Slf4j
@Api(tags = "维修工单")
@RestController
@RequestMapping("/eam/eamRepairOrder")
public class EamRepairOrderController extends JeecgController<EamRepairOrder, IEamRepairOrderService> {
    @Resource
    private IEamRepairOrderService eamRepairOrderService;
    @Resource
    private ObjectMapper objectMapper;
    @Resource
    private TranslateDictTextUtils translateDictTextUtils;
    @Resource
    private ISysUserService sysUserService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamRepairOrderQuery
     * @param pageNo
     * @param pageSize
     * @return
     */
    @ApiOperation(value = "维修工单-分页列表查询", notes = "维修工单-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamRepairOrderQuery eamRepairOrderQuery,
                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<EamRepairOrder> page = new Page<EamRepairOrder>(pageNo, pageSize);
        IPage<EamRepairOrder> pageList = eamRepairOrderService.pageList(page, eamRepairOrderQuery);
        return Result.OK(pageList);
    }
    /**
     * é¢†å–
     *
     * @param eamRepairOrder
     * @return
     */
    @AutoLog(value = "维修工单-领取")
    @ApiOperation(value = "维修工单-领取", notes = "维修工单-领取")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamRepairOrder eamRepairOrder) {
        if (StringUtils.isBlank(eamRepairOrder.getReportId())) {
            return Result.error("领取失败,请选择维修记录!");
        }
        // æ ¡éªŒé¢†å–权限
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (!BusinessCodeConst.PCR0002.equals(user.getPost())) {
            return Result.error("领取失败,没有领取权限!");
        }
        eamRepairOrderService.saveRepairOrder(eamRepairOrder);
        return Result.OK("添加成功!");
    }
    /**
     * æŒ‡æ´¾
     *
     * @param
     * @return
     */
    @AutoLog(value = "故障报修-指派")
    @ApiOperation(value = "故障报修-指派", notes = "故障报修-指派")
    @PostMapping(value = "/assign")
    public Result<?> assign(@RequestBody EamReportRepairQuery eamReportRepairQuery) {
        if (StringUtils.isBlank(eamReportRepairQuery.getRepairer())) {
            return Result.error("指派失败,请选择维修工!");
        }
        // æ ¡éªŒæŒ‡æ´¾æƒé™
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (!BusinessCodeConst.PCR0004.equals(user.getPost())) {
            return Result.error("指派失败,没有指派权限!");
        }
        // æ ¡éªŒç»´ä¿®å·¥æƒé™
        SysUser sysUser = sysUserService.getUserByName(eamReportRepairQuery.getRepairer());
        if (sysUser == null) {
            return Result.error("指派失败,未找到此维修工用户!");
        }
        if (!BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
            return Result.error("指派失败,此用户不是维修工!");
        }
        eamRepairOrderService.assign(eamReportRepairQuery);
        return Result.OK("指派成功!");
    }
    /**
     * æˆ‘的待办 æ‰§è¡Œ/审批
     *
     * @param request
     * @return
     */
    @AutoLog(value = "维修工单-执行/审批")
    @ApiOperation(value = "维修工单-执行/审批", notes = "维修工单-执行/审批")
    @PostMapping(value = "/perform")
    public Result<?> perform(@RequestBody EamRepairOrderRequest request) {
        if (request == null) {
            return Result.error("审批的对象不能为空!");
        }
        // æ£€æŸ¥è¯·æ±‚参数
        if (StrUtil.isBlank(request.getTaskId()) || StrUtil.isBlank(request.getDataId()) || StrUtil.isBlank(request.getInstanceId())) {
            return Result.error("审批任务错误或不存在!");
        }
        EamRepairOrder b = eamRepairOrderService.perform(request);
        if(b == null) {
            return Result.error("操作失败!");
        }
        return Result.OK("操作成功!");
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "维修工单-通过id查询")
    @ApiOperation(value = "维修工单-通过id查询", notes = "维修工单-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        EamRepairOrderResponse eamRepairOrder = eamRepairOrderService.findById(id);
        if (eamRepairOrder == null) {
            return Result.error("未找到对应数据!");
        }
        try {
            String json = objectMapper.writeValueAsString(eamRepairOrder);
            JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
            translateDictTextUtils.translateField("createBy", eamRepairOrder.getCreateBy(), item, "sys_user,realname,username");
            translateDictTextUtils.translateField("breakdownFlag", eamRepairOrder.getBreakdownFlag(), item, "breakdown_flag");
            translateDictTextUtils.translateField("faultType", eamRepairOrder.getFaultType(), item, "fault_reason_category");
            translateDictTextUtils.translateField("reportStatus", eamRepairOrder.getReportStatus(), item, "report_repair_status");
            translateDictTextUtils.translateField("equipmentId", eamRepairOrder.getEquipmentId(), item, "eam_equipment,id,equipment_code");
            translateDictTextUtils.translateField("repairStatus", eamRepairOrder.getRepairStatus(), item, "report_repair_status");
            translateDictTextUtils.translateField("repairer", eamRepairOrder.getRepairer(), item, "sys_user,username,realname");
            return Result.OK(item);
        } catch (Exception e) {
            return Result.error("数据转译失败!");
        }
    }
    /**
     * å¯¼å‡ºexcel
     *
     * @param request
     * @param eamRepairOrder
     */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, EamRepairOrder eamRepairOrder) {
        return super.exportXls(request, eamRepairOrder, EamRepairOrder.class, "维修工单");
    }
}
src/main/java/org/jeecg/modules/eam/controller/EamReportRepairController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,174 @@
package org.jeecg.modules.eam.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.util.TranslateDictTextUtils;
import org.jeecg.modules.eam.constant.ReportRepairEnum;
import org.jeecg.modules.eam.entity.EamReportRepair;
import org.jeecg.modules.eam.request.EamReportRepairQuery;
import org.jeecg.modules.eam.service.IEamReportRepairService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
/**
 * @Description: æ•…障报修
 * @Author: Lius
 * @Date: 2025-04-01
 */
@Slf4j
@Api(tags = "故障报修")
@RestController
@RequestMapping("/eam/eamReportRepair")
public class EamReportRepairController extends JeecgController<EamReportRepair, IEamReportRepairService> {
    @Resource
    private IEamReportRepairService eamReportRepairService;
    @Resource
    private ObjectMapper objectMapper;
    @Resource
    private TranslateDictTextUtils translateDictTextUtils;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamReportRepairQuery
     * @param pageNo
     * @param pageSize
     * @return
     */
    @AutoLog(value = "故障报修-分页列表查询")
    @ApiOperation(value = "故障报修-分页列表查询", notes = "故障报修-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamReportRepairQuery eamReportRepairQuery,
                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        Page<EamReportRepair> page = new Page<EamReportRepair>(pageNo, pageSize);
        IPage<EamReportRepair> pageList = eamReportRepairService.pageList(page, eamReportRepairQuery);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamReportRepair
     * @return
     */
    @AutoLog(value = "故障报修-添加")
    @ApiOperation(value = "故障报修-添加", notes = "故障报修-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamReportRepair eamReportRepair) {
        EamReportRepair b = eamReportRepairService.add(eamReportRepair);
        if(b == null) {
            return Result.error("添加失败!");
        }
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamReportRepair
     * @return
     */
    @AutoLog(value = "故障报修-编辑")
    @ApiOperation(value = "故障报修-编辑", notes = "故障报修-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<?> edit(@RequestBody EamReportRepair eamReportRepair) {
        boolean b = eamReportRepairService.edit(eamReportRepair);
        if(!b) {
            return Result.error("编辑失败!");
        }
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id作废
     *
     * @param id
     * @return
     */
    @AutoLog(value = "故障报修-作废")
    @ApiOperation(value = "故障报修-作废", notes = "故障报修-作废")
    @DeleteMapping(value = "/abolish")
    public Result<?> abolish(@RequestParam(name = "id", required = true) String id) {
        eamReportRepairService.update(new LambdaUpdateWrapper<EamReportRepair>().set(EamReportRepair::getReportStatus, ReportRepairEnum.ABOLISH.name()).eq(EamReportRepair::getId, id).eq(EamReportRepair::getReportStatus, ReportRepairEnum.WAIT_REPAIR.name()));
        return Result.OK("作废成功!");
    }
    /**
     * æ‰¹é‡ä½œåºŸ
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "故障报修-批量作废")
    @ApiOperation(value = "故障报修-批量作废", notes = "故障报修-批量作废")
    @DeleteMapping(value = "/abolishBatch")
    public Result<?> abolishBatch(@RequestParam(name = "ids", required = true) String ids) {
        List<EamReportRepair> eamReportRepairs = eamReportRepairService.listByIds(Arrays.asList(ids.split(",")));
        eamReportRepairs.forEach(eamReportRepair -> {
            if(ReportRepairEnum.ABOLISH.name().equals(eamReportRepair.getReportStatus())) {
                eamReportRepair.setReportStatus(ReportRepairEnum.ABOLISH.name());
            }
        });
        this.eamReportRepairService.updateBatchById(eamReportRepairs);
        return Result.OK("批量作废成功!");
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "故障报修-通过id查询")
    @ApiOperation(value = "故障报修-通过id查询", notes = "故障报修-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        EamReportRepair eamReportRepair = eamReportRepairService.getById(id);
        if (eamReportRepair == null) {
            return Result.error("未找到对应数据!");
        }
        try {
            String json = objectMapper.writeValueAsString(eamReportRepair);
            JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
            translateDictTextUtils.translateField("createBy", eamReportRepair.getCreateBy(), item, "sys_user,realname,username");
            translateDictTextUtils.translateField("breakdownFlag", eamReportRepair.getBreakdownFlag(), item, "breakdown_flag");
            translateDictTextUtils.translateField("faultType", eamReportRepair.getFaultType(), item, "fault_reason_category");
            translateDictTextUtils.translateField("reportStatus", eamReportRepair.getReportStatus(), item, "report_repair_status");
            translateDictTextUtils.translateField("equipmentId", eamReportRepair.getEquipmentId(), item, "eam_equipment,id,equipment_code");
            return Result.OK(item);
        } catch (Exception e) {
            return Result.error("数据转译失败!");
        }
    }
    /**
     * å¯¼å‡ºexcel
     *
     * @param request
     * @param eamReportRepair
     */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, EamReportRepair eamReportRepair) {
        return super.exportXls(request, eamReportRepair, EamReportRepair.class, "故障报修");
    }
}
src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
@@ -9,6 +9,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
@@ -76,4 +77,15 @@
    @Excel(name = "库存状态", width = 15)
    @ApiModelProperty(value = "库存状态")
    private String inventoryStatus;
    public LswMaterialInventory(){}
    public LswMaterialInventory(LswMaterialInbound inbound, String materialId, String inventoryCategory) {
        this.warehouseId = inbound.getWarehouseId();
        this.quantity = inbound.getQuantity();
        this.batchNumber = inbound.getBatchNumber();
        this.inventoryStatus = MaterialInventoryStatusEnum.NORMAL.name();
        this.inventoryCategory = inventoryCategory;
        this.materialId = materialId;
    }
}
src/main/java/org/jeecg/modules/lsw/entity/LswMaterialOutbound.java
@@ -15,6 +15,7 @@
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -31,7 +32,7 @@
public class LswMaterialOutbound implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
@@ -69,6 +70,14 @@
    @ApiModelProperty(value = "产线ID")
    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
    private String factoryId;
    /**库存ID*/
    @Excel(name = "库存ID", width = 15)
    @ApiModelProperty(value = "库存ID")
    private String inventoryId;
    /**线边库ID*/
    @Excel(name = "线边库ID", width = 15)
    @ApiModelProperty(value = "线边库ID")
    private String warehouseId;
    /**批次号*/
    @Excel(name = "批次号", width = 15)
    @ApiModelProperty(value = "批次号")
@@ -86,9 +95,5 @@
    /**出库数量*/
    @Excel(name = "出库数量", width = 15)
    @ApiModelProperty(value = "出库数量")
    private Double quantity;
    /**工单ID*/
    @Excel(name = "工单ID", width = 15)
    @ApiModelProperty(value = "工单ID")
    private String workOrderId;
    private BigDecimal quantity;
}
src/main/java/org/jeecg/modules/lsw/enums/MaterialCategory.java
ÎļþÒÑɾ³ý
src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryCategoryEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package org.jeecg.modules.lsw.enums;
public enum MaterialInventoryCategoryEnum {
    INBOUND, //入库
    UNLOADING, //下料
    ;
}
src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryStatusEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package org.jeecg.modules.lsw.enums;
public enum MaterialInventoryStatusEnum {
    NORMAL, //正常
    OUTBOUND, //已出库
    ;
}
src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java
@@ -15,4 +15,11 @@
 */
public interface ILswMaterialInboundService extends IService<LswMaterialInbound> {
    IPage<Map<String, Object>> getlswMaterialInboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
    /**
     * ç‰©æ–™å…¥åº“
     * @param materialInbound å…¥åº“信息
     * @return
     */
    boolean inboundMaterial(LswMaterialInbound materialInbound);
}
src/main/java/org/jeecg/modules/lsw/service/ILswMaterialOutboundService.java
@@ -15,4 +15,11 @@
 */
public interface ILswMaterialOutboundService extends IService<LswMaterialOutbound> {
    IPage<Map<String, Object>> getlswMaterialOutboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req);
    /**
     * ç‰©æ–™å‡ºåº“
     * @param outbound
     * @return
     */
    boolean outboundMaterial(LswMaterialOutbound outbound);
}
src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java
@@ -4,12 +4,20 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.lsw.entity.LswMaterial;
import org.jeecg.modules.lsw.entity.LswMaterialInbound;
import org.jeecg.modules.lsw.entity.LswMaterialInventory;
import org.jeecg.modules.lsw.mapper.LswMaterialInboundMapper;
import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
import org.jeecg.modules.lsw.service.ILswMaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -21,6 +29,10 @@
 */
@Service
public class LswMaterialInboundServiceImpl extends ServiceImpl<LswMaterialInboundMapper, LswMaterialInbound> implements ILswMaterialInboundService {
    @Autowired
    private ILswMaterialInventoryService inventoryService;
    @Autowired
    private ILswMaterialService materialService;
    @Override
    public IPage<Map<String, Object>> getlswMaterialInboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req) {
@@ -40,4 +52,29 @@
        }
        return super.getBaseMapper().getlswMaterialInboundListData(pageData, paramMap);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean inboundMaterial(LswMaterialInbound materialInbound) {
        if (StringUtils.isBlank(materialInbound.getMaterialNumber())
                || StringUtils.isBlank(materialInbound.getFactoryId())
                || StringUtils.isBlank(materialInbound.getWarehouseId())
                || materialInbound.getQuantity() == null
                || materialInbound.getQuantity().intValue() > 0
                || StringUtils.isBlank(materialInbound.getBatchNumber())) {
            return false;
        }
        LswMaterial material = materialService.queryByMaterialNumber(materialInbound.getMaterialNumber());
        if(material == null) {
            return false;
        }
        //保存入库信息
        materialInbound.setDelFlag(CommonConstant.DEL_FLAG_0);
        materialInbound.setReceiveTime(new Date());
        super.save(materialInbound);
        //保存库存信息
        LswMaterialInventory lswMaterialInventory = new LswMaterialInventory(materialInbound, material.getId(), material.getMaterialCategory());
        inventoryService.save(lswMaterialInventory);
        return true;
    }
}
src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialOutboundServiceImpl.java
@@ -4,23 +4,37 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.lsw.entity.LswMaterial;
import org.jeecg.modules.lsw.entity.LswMaterialInventory;
import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum;
import org.jeecg.modules.lsw.mapper.LswMaterialOutboundMapper;
import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
import org.jeecg.modules.lsw.service.ILswMaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * @Description: ç‰©æ–™å‡ºåº“单
 * @Author: jeecg-boot
 * @Date:   2025-06-30
 * @Date: 2025-06-30
 * @Version: V1.0
 */
@Service
public class LswMaterialOutboundServiceImpl extends ServiceImpl<LswMaterialOutboundMapper, LswMaterialOutbound> implements ILswMaterialOutboundService {
    @Autowired
    private ILswMaterialService materialService;
    @Autowired
    private ILswMaterialInventoryService materialInventoryService;
    @Override
    public IPage<Map<String, Object>> getlswMaterialOutboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req) {
@@ -40,4 +54,30 @@
        }
        return super.getBaseMapper().getlswMaterialOutboundListData(pageData, paramMap);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean outboundMaterial(LswMaterialOutbound outbound) {
        if (StringUtils.isBlank(outbound.getMaterialNumber())
                || StringUtils.isBlank(outbound.getFactoryId())
                || StringUtils.isBlank(outbound.getWarehouseId())
                || outbound.getQuantity() == null
                || outbound.getQuantity().intValue() > 0
                || StringUtils.isBlank(outbound.getBatchNumber())
        || StringUtils.isBlank(outbound.getInventoryId())) {
            return false;
        }
        LswMaterialInventory inventory = materialInventoryService.getById(outbound.getInventoryId());
        if(inventory == null) {
            return false;
        }
        //更新库存状态
        inventory.setInventoryStatus(MaterialInventoryStatusEnum.OUTBOUND.name());
        materialInventoryService.updateById(inventory);
        //保存出库信息
        outbound.setDelFlag(CommonConstant.DEL_FLAG_0);
        outbound.setOutboundTime(new Date());
        super.save(outbound);
        return true;
    }
}
src/main/java/org/jeecg/modules/mes/entity/MesTransferOrderPrint.java
@@ -61,11 +61,10 @@
    @Excel(name = "移库单号", width = 15)
    @ApiModelProperty(value = "移库单号")
    private String workOrderCode;
    /**移库类型*/
    @Excel(name = "移库类型", width = 15, dicCode = "order_category")
    @Dict(dicCode = "order_category")
    @ApiModelProperty(value = "移库类型")
    private String orderCategory;
    /**库存ID*/
    @Excel(name = "库存ID", width = 15)
    @ApiModelProperty(value = "库存ID")
    private String inventoryId;
    /**原库存地*/
    @Excel(name = "原库存地", width = 15)
    @ApiModelProperty(value = "原库存地")
src/main/java/org/jeecg/modules/mes/enums/TransferOrderStatusEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package org.jeecg.modules.mes.enums;
public enum TransferOrderStatusEnum {
    NEW, //新建
    PRINTED, //已打印、已请求WMS
    COMPLETED, //已完成
    CANCELED, //已撤销
    ;
}
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java
@@ -23,6 +23,7 @@
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@@ -34,7 +35,8 @@
@Slf4j
public class ProductionOrderSyncCreationJob implements Job {
    //工厂编码(新火炬 2301)
    private static final String FACTORY_CODE = "2301";
    @Value("${xhj.factoryCode:2301}")
    private String FACTORY_CODE;
    /**
     * è®¢å•类型
     * æ ‡å‡†ç”Ÿäº§è®¢å• Z001
@@ -43,7 +45,8 @@
     * è¯•制生产订单(新火炬)  Z011
     * æ‹†é›¶ç”Ÿäº§è®¢å•(新火炬)  2012
     */
    private static final String ORDER_TYPE_CODE = "Z001";
    @Value("${xhj.orderType:Z001}")
    private String ORDER_TYPE_CODE;
    /**
     * ç”Ÿäº§è°ƒåº¦å‘˜
     * 001 ä¸€åˆ†åŽ‚è°ƒåº¦å‘˜
@@ -58,14 +61,16 @@
     * 010 å…­åŽ‚è°ƒåº¦å‘˜
     * 012 å…«åˆ†åŽ‚è°ƒåº¦å‘˜
     */
    private static final String PRODUCTION_MANAGER = "010";
    @Value("${xhj.productionManager:012}")
    private String PRODUCTION_MANAGER;
    /**
     * ç”Ÿäº§è®¢å•状态,实际上,只有REL状态的工单才可以进行操作
     * CRTD æ–°å»º
     * REL ä¸‹è¾¾
     * TECO å…³é—­
     */
    private static final String ORDER_STATUS = "REL";
    @Value("${xhj.orderStatus:REL}")
    private String ORDER_STATUS;
    /**
     * è¯·æ±‚成功编码
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java
@@ -23,6 +23,7 @@
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@@ -34,7 +35,8 @@
@Slf4j
public class ProductionOrderSyncUpdateJob implements Job {
    //工厂编码(新火炬 2301)
    private static final String FACTORY_CODE = "2301";
    @Value("${xhj.factoryCode:2301}")
    private String FACTORY_CODE;
    /**
     * è®¢å•类型
     * æ ‡å‡†ç”Ÿäº§è®¢å• Z001
@@ -43,7 +45,8 @@
     * è¯•制生产订单(新火炬)  Z011
     * æ‹†é›¶ç”Ÿäº§è®¢å•(新火炬)  2012
     */
    private static final String ORDER_TYPE_CODE = "Z001";
    @Value("${xhj.orderType:Z001}")
    private String ORDER_TYPE_CODE;
    /**
     * ç”Ÿäº§è°ƒåº¦å‘˜
     * 001 ä¸€åˆ†åŽ‚è°ƒåº¦å‘˜
@@ -58,14 +61,16 @@
     * 010 å…­åŽ‚è°ƒåº¦å‘˜
     * 012 å…«åˆ†åŽ‚è°ƒåº¦å‘˜
     */
    private static final String PRODUCTION_MANAGER = "010";
    @Value("${xhj.productionManager:012}")
    private String PRODUCTION_MANAGER;
    /**
     * ç”Ÿäº§è®¢å•状态,实际上,只有REL状态的工单才可以进行操作
     * CRTD æ–°å»º
     * REL ä¸‹è¾¾
     * TECO å…³é—­
     */
    private static final String ORDER_STATUS = "REL";
    @Value("${xhj.orderStatus:REL}")
    private String ORDER_STATUS;
    /**
     * è¯·æ±‚成功编码
src/main/java/org/jeecg/modules/mes/service/IMesTransferOrderPrintService.java
@@ -13,4 +13,11 @@
 */
public interface IMesTransferOrderPrintService extends IService<MesTransferOrderPrint> {
    List<MesTransferOrderPrint> queryOrderPrintByOrderId(String orderId);
    /**
     * æ ¹æ®ç§»åº“单号查询移库记录
     * @param orderCode
     * @return
     */
    MesTransferOrderPrint queryByOrderCode(String orderCode);
}
src/main/java/org/jeecg/modules/mes/service/impl/MesTransferOrderPrintServiceImpl.java
@@ -1,6 +1,9 @@
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.modules.mes.entity.MesTransferOrderPrint;
import org.jeecg.modules.mes.mapper.MesTransferOrderPrintMapper;
import org.jeecg.modules.mes.service.IMesTransferOrderPrintService;
@@ -21,4 +24,16 @@
    public List<MesTransferOrderPrint> queryOrderPrintByOrderId(String orderId) {
        return baseMapper.queryOrderPrintByOrderId(orderId);
    }
    @Override
    public MesTransferOrderPrint queryByOrderCode(String orderCode) {
        LambdaQueryWrapper<MesTransferOrderPrint> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(MesTransferOrderPrint::getWorkOrderCode, orderCode);
        wrapper.eq(MesTransferOrderPrint::getDelFlag, CommonConstant.DEFAULT_0);
        List<MesTransferOrderPrint> list = super.list(wrapper);
        if(CollectionUtil.isNotEmpty(list)) {
            return list.get(0);
        }
        return null;
    }
}
src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java
@@ -8,6 +8,7 @@
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import java.math.BigDecimal;
@Getter
@Setter
@@ -43,7 +44,7 @@
    /** é¢„留号 */
    @XmlElement(name = "ReservationOrder")
    private String reservationOrder;
    /** å¯¹é½æ–¹å¼ */
    /** MES移库单号 */
    @XmlElement(name = "Align")
    private String align;
    /** æ‰˜å· */
@@ -63,7 +64,7 @@
    private String mesStockID;
    /** æ•°é‡ */
    @XmlElement(name = "Quantity")
    private String quantity;
    private BigDecimal quantity;
    /** SAP批次号 */
    @XmlElement(name = "SapTrackLot")
    private String sapTrackLot;
src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
@@ -5,8 +5,22 @@
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.aspect.annotation.ApiLog;
import org.jeecg.common.constant.ApiLogCategoryEnum;
import org.jeecg.modules.base.entity.LineSideWarehouse;
import org.jeecg.modules.base.service.ILineSideWarehouseService;
import org.jeecg.modules.lsw.entity.LswMaterial;
import org.jeecg.modules.lsw.entity.LswMaterialInbound;
import org.jeecg.modules.lsw.entity.LswMaterialInventory;
import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
import org.jeecg.modules.lsw.service.ILswMaterialService;
import org.jeecg.modules.mes.entity.MesMaterialTransferRequest;
import org.jeecg.modules.mes.entity.MesTransferOrderPrint;
import org.jeecg.modules.mes.enums.MaterialTransferRequestStatus;
import org.jeecg.modules.mes.enums.TransferOrderStatusEnum;
import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
import org.jeecg.modules.mes.service.IMesTransferOrderPrintService;
import org.jeecg.modules.wms.dto.WSResponse;
import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
import org.jeecg.modules.wms.request.WMSWebServiceSendItem;
@@ -21,6 +35,7 @@
import javax.jws.WebService;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import java.math.BigDecimal;
@Slf4j
@@ -30,6 +45,18 @@
    @Autowired
    private IMesMaterialTransferRequestService materialTransferRequestService;
    @Autowired
    private ILineSideWarehouseService lineSideWarehouseService;
    @Autowired
    private ILswMaterialInboundService materialInboundService;
    @Autowired
    private IMesTransferOrderPrintService transferOrderPrintService;
    @Autowired
    private ILswMaterialOutboundService materialOutboundService;
    @Autowired
    private ILswMaterialInventoryService materialInventoryService;
    @Autowired
    private ILswMaterialService materialService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -45,19 +72,121 @@
            response.setErrorDesc("传入的参数为空!");
            return response;
        }
        for(WMSWebServiceSendItem item : request.getWmsWebServiceSendItemList()) {
            if(StringUtils.isNotBlank(item.getReservationOrder())) {
        int errorCount = 0;
        int successCount = 0;
        StringBuilder errorMsg = new StringBuilder();
        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;
                if (transferRequest == null) {
                    errorCount++;
                    errorMsg.append("根据预留号[").append(item.getReservationOrder()).append("]未找到物料拉动单!\n");
                    continue;
                }
            }else if(StringUtils.isNotBlank(item.getAlign())){
                LineSideWarehouse warehouse = lineSideWarehouseService.getById(transferRequest.getTargetWarehouseId());
                if (warehouse == null || !warehouse.getWarehouseCode().equals(item.getDestSection())) {
                    errorCount++;
                    errorMsg.append("线边库[").append(item.getDestSection()).append("]未找到!\n");
                    continue;
                }
                if (!transferRequest.getMaterialNumber().equals(item.getSkuCode())) {
                    errorCount++;
                    errorMsg.append("物料编号[").append(item.getSkuCode()).append("]不匹配!\n");
                    continue;
                }
                if (StringUtils.isBlank(item.getTrackLot())) {
                    errorCount++;
                    errorMsg.append("批次号[").append(item.getTrackLot()).append("]不能为空!\n");
                    continue;
                }
                transferRequest.setRequestStatus(MaterialTransferRequestStatus.CHECKED_IN.name());
                //计算实际拉动数量
                BigDecimal actualQuantity = transferRequest.getActualQuantity() == null ? item.getQuantity() : transferRequest.getActualQuantity().add(item.getQuantity());
                transferRequest.setActualQuantity(actualQuantity);
                //添加入库信息
                LswMaterialInbound inbound = new LswMaterialInbound();
                inbound.setWarehouseId(transferRequest.getTargetWarehouseId());
                inbound.setReceiver("WMS");
                inbound.setMaterialNumber(transferRequest.getMaterialNumber());
                inbound.setMaterialName(transferRequest.getMaterialName());
                inbound.setBatchNumber(item.getTrackLot());
                inbound.setQuantity(item.getQuantity());
                inbound.setFactoryId(warehouse.getFactoryId());
                boolean b = materialInboundService.inboundMaterial(inbound);
                if (!b) {
                    errorCount++;
                    errorMsg.append("预留号[").append(item.getReservationOrder()).append("]入库失败!\n");
                    continue;
                }
                //更新物料拉动单
                materialTransferRequestService.updateById(transferRequest);
                successCount++;
            } else if (StringUtils.isNotBlank(item.getAlign())) {
                //移库单回调
                MesTransferOrderPrint transferOrder = transferOrderPrintService.queryByOrderCode(item.getAlign());
                if (transferOrder == null) {
                    errorCount++;
                    errorMsg.append("移库单[").append(item.getAlign()).append("]不存在!\n");
                    continue;
                }
                LswMaterialInventory inventory = materialInventoryService.getById(item.getMesStockID());
                if (inventory == null) {
                    errorCount++;
                    errorMsg.append("库存信息[").append(item.getMesStockID()).append("]不存在!\n");
                    continue;
                }
                LswMaterial material = materialService.queryByMaterialNumber(item.getSkuCode());
                if(material == null) {
                    errorCount++;
                    errorMsg.append("物料编号[").append(item.getSkuCode()).append("]不存在!\n");
                    continue;
                }
                LineSideWarehouse warehouse = lineSideWarehouseService.getById(transferOrder.getOriginalWarehouseId());
                if (warehouse == null || !warehouse.getWarehouseCode().equals(item.getDestSection())) {
                    errorCount++;
                    errorMsg.append("线边库[").append(item.getDestSection()).append("]未找到!\n");
                    continue;
                }
                //移库单更改
                transferOrder.setOrderStatus(TransferOrderStatusEnum.COMPLETED.name());
                //成品出库
                LswMaterialOutbound outbound = new LswMaterialOutbound();
                outbound.setBatchNumber(inventory.getBatchNumber());
                outbound.setQuantity(item.getQuantity());
                outbound.setMaterialNumber(material.getMaterialNumber());
                outbound.setMaterialName(material.getMaterialName());
                outbound.setInventoryId(inventory.getId());
                outbound.setWarehouseId(transferOrder.getOriginalWarehouseId());
                outbound.setFactoryId(warehouse.getFactoryId());
                outbound.setOutboundStaff("WMS");
                boolean b = materialOutboundService.outboundMaterial(outbound);
                if (!b) {
                    errorCount++;
                    errorMsg.append("移库单[").append(item.getAlign()).append("]出库失败!\n");
                    continue;
                }
                transferOrderPrintService.updateById(transferOrder);
                successCount++;
            }
        }
        //处理返回结果
        if (errorCount > 0) {
            response.setErrorCode("N");
            if (successCount > 0) {
                String msg = "成功执行" + successCount + "条,失败" + errorCount + "条!\n";
                errorMsg.insert(0, msg);
            } else {
                String msg = "失败" + errorCount + "条!\n";
                errorMsg.insert(0, msg);
            }
            response.setErrorDesc(errorMsg.toString());
        } else {
            response.setErrorCode("Y");
            String msg = "成功执行" + successCount + "条!\n";
            response.setErrorDesc(msg);
        }
        return response;
    }
}
src/main/resources/application-dev.yml
@@ -303,4 +303,9 @@
  appId: cli_a74aab6353b7d00e
  appSecret: mx5wm7X9S8WSzZCOYlxcggXTFL8iujIT
  sync:
    departmentId: od-47692f32e6b66cc3985d317fee780a8b
    departmentId: od-47692f32e6b66cc3985d317fee780a8b
xhj:
  factoryCode: 2301
  orderType: Z001
  productionManager: 010
  orderStatus: REL
src/main/resources/application-prod.yml
@@ -302,4 +302,9 @@
  appId: cli_a74aab6353b7d00e
  appSecret: mx5wm7X9S8WSzZCOYlxcggXTFL8iujIT
  sync:
    departmentId: od-47692f32e6b66cc3985d317fee780a8b
    departmentId: od-47692f32e6b66cc3985d317fee780a8b
xhj:
  factoryCode: 2301
  orderType: Z001
  productionManager: 012
  orderStatus: REL