Bläddra i källkod

运维管理--维修工单

丁治程 1 år sedan
förälder
incheckning
f36f450ccb
48 ändrade filer med 3556 tillägg och 0 borttagningar
  1. 177 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/controller/CmmsOrderNodeController.java
  2. 77 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/entity/CmmsOrderNode.java
  3. 18 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/mapper/CmmsOrderNodeMapper.java
  4. 30 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/mapper/xml/CmmsOrderNodeMapper.xml
  5. 17 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/service/ICmmsOrderNodeService.java
  6. 30 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/service/impl/CmmsOrderNodeServiceImpl.java
  7. 248 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/controller/CmmsRepairController.java
  8. 21 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/convert/CmmsRepairConvert.java
  9. 128 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/entity/CmmsRepair.java
  10. 27 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/entity/CmmsRepairVo.java
  11. 23 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/mapper/CmmsRepairMapper.java
  12. 85 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/mapper/xml/CmmsRepairMapper.xml
  13. 57 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/service/ICmmsRepairService.java
  14. 153 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/service/impl/CmmsRepairServiceImpl.java
  15. 177 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/controller/SysAutoCodePartController.java
  16. 131 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/entity/SysAutoCodePart.java
  17. 18 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/mapper/SysAutoCodePartMapper.java
  18. 60 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/mapper/xml/SysAutoCodePartMapper.xml
  19. 17 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/service/ISysAutoCodePartService.java
  20. 31 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/service/impl/SysAutoCodePartServiceImpl.java
  21. 177 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/controller/SysAutoCodeResultController.java
  22. 99 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/entity/SysAutoCodeResult.java
  23. 18 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/mapper/SysAutoCodeResultMapper.java
  24. 41 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/mapper/xml/SysAutoCodeResultMapper.xml
  25. 17 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/service/ISysAutoCodeResultService.java
  26. 31 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/service/impl/SysAutoCodeResultServiceImpl.java
  27. 177 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/controller/SysAutoCodeRuleController.java
  28. 107 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/entity/SysAutoCodeRule.java
  29. 19 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/mapper/SysAutoCodeRuleMapper.java
  30. 42 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/mapper/xml/SysAutoCodeRuleMapper.xml
  31. 15 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/service/ISysAutoCodeRuleService.java
  32. 38 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/service/impl/SysAutoCodeRuleServiceImpl.java
  33. 177 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/controller/SysUploadFileController.java
  34. 87 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/entity/SysUploadFile.java
  35. 87 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/mapper/SysUploadFileMapper.java
  36. 109 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/mapper/xml/SysUploadFileMapper.xml
  37. 89 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/service/ISysUploadFileService.java
  38. 158 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/service/impl/SysUploadFileServiceImpl.java
  39. 142 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/AutoCodeUtil.java
  40. 44 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/CycleMethodMnum.java
  41. 42 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeEnum.java
  42. 14 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeFixCharHandler.java
  43. 22 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeHandler.java
  44. 20 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeInputCharHandler.java
  45. 20 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeNowDateHandler.java
  46. 101 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeSerialNoHandler.java
  47. 13 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeTemplate.java
  48. 125 0
      jeecg_module_ems/src/main/java/org/jeecg/modules/util/UserConstants.java

+ 177 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/controller/CmmsOrderNodeController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.cmmsOrderNode.controller;
+
+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.cmmsOrderNode.entity.CmmsOrderNode;
+import org.jeecg.modules.cmmsOrderNode.service.ICmmsOrderNodeService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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:   2024-01-09
+ * @Version: V1.0
+ */
+@Api(tags="工单操作记录表")
+@RestController
+@RequestMapping("/cmmsOrderNode/cmmsOrderNode")
+@Slf4j
+public class CmmsOrderNodeController extends JeecgController<CmmsOrderNode, ICmmsOrderNodeService> {
+	@Autowired
+	private ICmmsOrderNodeService cmmsOrderNodeService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param cmmsOrderNode
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "工单操作记录表-分页列表查询")
+	@ApiOperation(value="工单操作记录表-分页列表查询", notes="工单操作记录表-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CmmsOrderNode>> queryPageList(CmmsOrderNode cmmsOrderNode,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CmmsOrderNode> queryWrapper = QueryGenerator.initQueryWrapper(cmmsOrderNode, req.getParameterMap());
+		Page<CmmsOrderNode> page = new Page<CmmsOrderNode>(pageNo, pageSize);
+		IPage<CmmsOrderNode> pageList = cmmsOrderNodeService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param cmmsOrderNode
+	 * @return
+	 */
+	@AutoLog(value = "工单操作记录表-添加")
+	@ApiOperation(value="工单操作记录表-添加", notes="工单操作记录表-添加")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_order_node:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CmmsOrderNode cmmsOrderNode) {
+		cmmsOrderNodeService.save(cmmsOrderNode);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param cmmsOrderNode
+	 * @return
+	 */
+	@AutoLog(value = "工单操作记录表-编辑")
+	@ApiOperation(value="工单操作记录表-编辑", notes="工单操作记录表-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_order_node:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CmmsOrderNode cmmsOrderNode) {
+		cmmsOrderNodeService.updateById(cmmsOrderNode);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "工单操作记录表-通过id删除")
+	@ApiOperation(value="工单操作记录表-通过id删除", notes="工单操作记录表-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_order_node:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cmmsOrderNodeService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "工单操作记录表-批量删除")
+	@ApiOperation(value="工单操作记录表-批量删除", notes="工单操作记录表-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_order_node:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cmmsOrderNodeService.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<CmmsOrderNode> queryById(@RequestParam(name="id",required=true) String id) {
+		CmmsOrderNode cmmsOrderNode = cmmsOrderNodeService.getById(id);
+		if(cmmsOrderNode==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(cmmsOrderNode);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param cmmsOrderNode
+    */
+    //@RequiresPermissions("org.jeecg.modules:ems_cmms_order_node:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CmmsOrderNode cmmsOrderNode) {
+        return super.exportXls(request, cmmsOrderNode, CmmsOrderNode.class, "工单操作记录表");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ems_cmms_order_node:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CmmsOrderNode.class);
+    }
+
+}

+ 77 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/entity/CmmsOrderNode.java

@@ -0,0 +1,77 @@
+package org.jeecg.modules.cmmsOrderNode.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 工单操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Data
+@TableName("ems_cmms_order_node")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ems_cmms_order_node对象", description="工单操作记录表")
+public class CmmsOrderNode implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**工单操作记录ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "工单操作记录ID")
+    private java.lang.String id;
+	/**创建者*/
+    @ApiModelProperty(value = "创建者")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新者*/
+    @ApiModelProperty(value = "更新者")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**操作节点名称*/
+	@Excel(name = "操作节点名称", width = 15)
+    @ApiModelProperty(value = "操作节点名称")
+    private java.lang.String nodename;
+	/**工单ID*/
+	@Excel(name = "工单ID", width = 15)
+    @ApiModelProperty(value = "工单ID")
+    private java.lang.String relid;
+	/**处理意见*/
+	@Excel(name = "处理意见", width = 15)
+    @ApiModelProperty(value = "处理意见")
+    private java.lang.String opinion;
+	/**处理时间*/
+	@Excel(name = "处理时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "处理时间")
+    private java.util.Date handledate;
+}

+ 18 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/mapper/CmmsOrderNodeMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.cmmsOrderNode.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 工单操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+public interface CmmsOrderNodeMapper extends BaseMapper<CmmsOrderNode> {
+
+    List<CmmsOrderNode> selectCmmsOrderNodeList(CmmsOrderNode node);
+}

+ 30 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/mapper/xml/CmmsOrderNodeMapper.xml

@@ -0,0 +1,30 @@
+<?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.cmmsOrderNode.mapper.CmmsOrderNodeMapper">
+
+    <resultMap type="org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode" id="CmmsOrderNodeResult">
+        <result property="id"    column="id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="nodename"    column="nodename"    />
+        <result property="relid"    column="relid"    />
+        <result property="opinion"    column="opinion"    />
+        <result property="handledate"    column="handledate"    />
+    </resultMap>
+
+    <sql id="selectCmmsOrderNodeVo">
+        select id, create_by, create_time, update_by, update_time, remark, nodename, relid, opinion, handledate
+        from ems_cmms_order_node
+    </sql>
+
+    <select id="selectCmmsOrderNodeList" parameterType="org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode" resultMap="CmmsOrderNodeResult">
+        <include refid="selectCmmsOrderNodeVo"/>
+        <where>
+            <if test="relid != null"> and relid = #{relid}</if>
+        </where>
+    </select>
+
+</mapper>

+ 17 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/service/ICmmsOrderNodeService.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.cmmsOrderNode.service;
+
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: 工单操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+public interface ICmmsOrderNodeService extends IService<CmmsOrderNode> {
+
+    List<CmmsOrderNode> selectCmmsOrderNodeList(CmmsOrderNode node);
+}

+ 30 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsOrderNode/service/impl/CmmsOrderNodeServiceImpl.java

@@ -0,0 +1,30 @@
+package org.jeecg.modules.cmmsOrderNode.service.impl;
+
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+import org.jeecg.modules.cmmsOrderNode.mapper.CmmsOrderNodeMapper;
+import org.jeecg.modules.cmmsOrderNode.service.ICmmsOrderNodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: 工单操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Service
+public class CmmsOrderNodeServiceImpl extends ServiceImpl<CmmsOrderNodeMapper, CmmsOrderNode> implements ICmmsOrderNodeService {
+
+    @Autowired
+    @SuppressWarnings("all")
+    private CmmsOrderNodeMapper cmmsOrderNodeMapper;
+
+    @Override
+    public List<CmmsOrderNode> selectCmmsOrderNodeList(CmmsOrderNode node) {
+        return cmmsOrderNodeMapper.selectCmmsOrderNodeList(node);
+    }
+}

+ 248 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/controller/CmmsRepairController.java

@@ -0,0 +1,248 @@
+package org.jeecg.modules.cmmsRepair.controller;
+
+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 lombok.extern.java.Log;
+import org.apache.ibatis.annotations.Param;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.subject.Subject;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepair;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepairVo;
+import org.jeecg.modules.cmmsRepair.service.ICmmsRepairService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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:   2024-01-09
+ * @Version: V1.0
+ */
+@Api(tags="维修工单")
+@RestController
+@RequestMapping("/cmmsRepair/cmmsRepair")
+@Slf4j
+public class CmmsRepairController extends JeecgController<CmmsRepair, ICmmsRepairService> {
+	@Autowired
+	private ICmmsRepairService cmmsRepairService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param cmmsRepair
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "维修工单-分页列表查询")
+	@ApiOperation(value="维修工单-分页列表查询", notes="维修工单-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CmmsRepair>> queryPageList(CmmsRepair cmmsRepair,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CmmsRepair> queryWrapper = QueryGenerator.initQueryWrapper(cmmsRepair, req.getParameterMap());
+		Page<CmmsRepair> page = new Page<CmmsRepair>(pageNo, pageSize);
+		IPage<CmmsRepair> pageList = cmmsRepairService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param cmmsRepair
+	 * @return
+	 */
+	@AutoLog(value = "维修工单-添加")
+	@ApiOperation(value="维修工单-添加", notes="维修工单-添加")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_repair:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CmmsRepairVo cmmsRepair) {
+		boolean b = cmmsRepairService.addCmmsRepair(cmmsRepair);
+		if (b){
+			return Result.OK("添加成功!");
+		}
+		return Result.error("添加失败!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param cmmsRepair
+	 * @return
+	 */
+	@AutoLog(value = "维修工单-编辑")
+	@ApiOperation(value="维修工单-编辑", notes="维修工单-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_repair:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CmmsRepair cmmsRepair) {
+		cmmsRepairService.updateById(cmmsRepair);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "维修工单-通过id删除")
+	@ApiOperation(value="维修工单-通过id删除", notes="维修工单-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_repair:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cmmsRepairService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "维修工单-批量删除")
+	@ApiOperation(value="维修工单-批量删除", notes="维修工单-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_cmms_repair:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cmmsRepairService.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<CmmsRepairVo> queryById(@RequestParam(name="id",required=true) String id) {
+		CmmsRepairVo cmmsRepair = cmmsRepairService.selectById(id);
+		if(cmmsRepair==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(cmmsRepair);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param cmmsRepair
+    */
+    //@RequiresPermissions("org.jeecg.modules:ems_cmms_repair:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CmmsRepair cmmsRepair) {
+        return super.exportXls(request, cmmsRepair, CmmsRepair.class, "维修工单");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ems_cmms_repair:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CmmsRepair.class);
+    }
+
+	 /**
+	  * 查询列表(我的)
+	  */
+	 @ApiOperation(value="我的维修工单-查询", notes="我的维修工单-查询")
+	 @GetMapping("/listMy")
+	 public Result<IPage<CmmsRepair>> selectMyList(@Param("cmmsrepair") CmmsRepair cmmsRepair,
+												   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+												   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+												   HttpServletRequest req) {
+		 Subject subject = SecurityUtils.getSubject();
+		 LoginUser loginUser = (LoginUser)subject.getPrincipal();
+		 String username = loginUser.getUsername();
+		 cmmsRepair.setRepairuser(username);
+		 Page<CmmsRepair> page = new Page<CmmsRepair>(pageNo, pageSize);
+		 List<CmmsRepair> list = cmmsRepairService.selectList(page,cmmsRepair);
+		 page.setRecords(list);
+		 return Result.OK(page);
+	 }
+
+
+	 /**
+	  * 处理
+	  */
+	 @ApiOperation(value="维修工单-派单", notes="维修工单-派单")
+	 //@RequiresPermissions("@ss.hasPermi('cmms:repairOrder:handle')")
+	 @PutMapping("/repair")
+	 public Result<String> repair(@RequestBody CmmsRepairVo cmmsRepair) throws Exception {
+		 Subject subject = SecurityUtils.getSubject();
+		 LoginUser loginUser = (LoginUser)subject.getPrincipal();
+		 String username = loginUser.getUsername();
+		 cmmsRepair.setUpdateBy(username);
+		 cmmsRepair.setUpdateTime(DateUtils.getDate());
+		 int row = cmmsRepairService.repair(cmmsRepair);
+		 if (row > 0){
+			 return Result.OK("派单成功!");
+		 }
+		 return Result.error("派单失败!");
+	 }
+
+	 /**
+	  *  冻结
+	  *
+	  * @param cmmsRepair
+	  * @return
+	  */
+	 @AutoLog(value = "维修工单-冻结")
+	 @ApiOperation(value="维修工单-冻结", notes="维修工单-冻结")
+	 //@RequiresPermissions("org.jeecg.modules:ems_cmms_repair:freeze")
+	 @RequestMapping(value = "/freeze", method = {RequestMethod.PUT,RequestMethod.POST})
+	 public Result<String> Freeze(@RequestBody CmmsRepair cmmsRepair) {
+		 int i = cmmsRepairService.updateRepairStatus(cmmsRepair);
+		 if (i>0){
+		 	return Result.OK("操作成功!");
+		 }
+		 return Result.error("操作失败!");
+	 }
+
+
+
+}

+ 21 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/convert/CmmsRepairConvert.java

@@ -0,0 +1,21 @@
+//package org.jeecg.modules.cmmsRepair.convert;
+//
+//
+//import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+//import org.jeecg.modules.cmmsRepair.entity.CmmsRepair;
+//import org.jeecg.modules.cmmsRepair.entity.CmmsRepairVo;
+//import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+//
+//import org.springframework.util.CollectionUtils;
+//
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+//(unmappedTargetPolicy = ReportingPolicy.IGNORE,imports ={ CollectionUtils.class, Collectors.class})
+//public interface CmmsRepairConvert {
+//
+//    CmmsRepairConvert INSTANCE = Mappers.getMapper(CmmsRepairConvert.class);
+//
+//    CmmsRepairVo toCmmsRepairVO(CmmsRepair cmmsRepair, List<CmmsOrderNode> nodeList, List<SysUploadFile> files);
+//
+//}

+ 128 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/entity/CmmsRepair.java

@@ -0,0 +1,128 @@
+package org.jeecg.modules.cmmsRepair.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 维修工单
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Data
+@TableName("ems_cmms_repair")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ems_cmms_repair对象", description="维修工单")
+public class CmmsRepair implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**维修工单ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "维修工单ID")
+    private java.lang.String id;
+	/**创建者*/
+    @ApiModelProperty(value = "创建者")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新者*/
+    @ApiModelProperty(value = "更新者")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**维修工单编号*/
+	@Excel(name = "维修工单编号", width = 15)
+    @ApiModelProperty(value = "维修工单编号")
+    private java.lang.String repaircode;
+	/**工单名称*/
+	@Excel(name = "工单名称", width = 15)
+    @ApiModelProperty(value = "工单名称")
+    private java.lang.String repairname;
+	/**设备ID*/
+	@Excel(name = "设备ID", width = 15)
+    @ApiModelProperty(value = "设备ID")
+    private java.lang.String equipmentid;
+	/**设备编号*/
+	@Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private java.lang.String equipmentcode;
+	/**设备名称*/
+	@Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private java.lang.String equipmentname;
+	/**优先级:0普通,1紧急,2特急*/
+	@Excel(name = "优先级:0普通,1紧急,2特急", width = 15)
+    @ApiModelProperty(value = "优先级:0普通,1紧急,2特急")
+    private java.lang.String priority;
+	/**故障日期*/
+	@Excel(name = "故障日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "故障日期")
+    private java.util.Date faultdate;
+	/**故障描述*/
+	@Excel(name = "故障描述", width = 15)
+    @ApiModelProperty(value = "故障描述")
+    private java.lang.String faultdesc;
+	/**待办人*/
+	@Excel(name = "待办人", width = 15)
+    @ApiModelProperty(value = "待办人")
+    private java.lang.String repairuser;
+	/**维修时间*/
+	@Excel(name = "维修时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "维修时间")
+    private java.util.Date repairdate;
+	/**维修反馈*/
+	@Excel(name = "维修反馈", width = 15)
+    @ApiModelProperty(value = "维修反馈")
+    private java.lang.String feedback;
+	/**维修结果*/
+	@Excel(name = "维修结果", width = 15)
+    @ApiModelProperty(value = "维修结果")
+    private java.lang.String result;
+	/**状态:0待处理,1维修检查,2设备维修,3维修结束*/
+	@Excel(name = "状态:0待处理,1维修检查,2设备维修,3维修结束", width = 15)
+    @ApiModelProperty(value = "状态:0待处理,1维修检查,2设备维修,3维修结束")
+    private java.lang.String status;
+	/**关联ID:巡检、点检、保养的ID*/
+	@Excel(name = "关联ID:巡检、点检、保养的ID", width = 15)
+    @ApiModelProperty(value = "关联ID:巡检、点检、保养的ID")
+    private java.lang.String relid;
+	/**维修工单状态: 0正常、1冻结、2拒绝*/
+	@Excel(name = "维修工单状态: 0正常、1冻结、2拒绝", width = 15)
+    @ApiModelProperty(value = "维修工单状态: 0正常、1冻结、2拒绝")
+    private java.lang.String repairstatus;
+
+}

+ 27 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/entity/CmmsRepairVo.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.cmmsRepair.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+
+import java.util.List;
+
+/**
+ * @author dzc
+ * @date 2024/1/10 11:26
+ * @package org.jeecg.modules.cmmsRepair.entity
+ * @project EMS_server
+ * @des
+ */
+@Data
+public class CmmsRepairVo extends CmmsRepair{
+
+    /**操作记录信息*/
+    @ApiModelProperty(value = "操作记录信息")
+    private List<CmmsOrderNode> nodeList;
+
+    /**图片*/
+    @ApiModelProperty(value = "图片")
+    private List<SysUploadFile> files;
+}

+ 23 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/mapper/CmmsRepairMapper.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.cmmsRepair.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepair;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 维修工单
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+public interface CmmsRepairMapper extends BaseMapper<CmmsRepair> {
+
+    List<CmmsRepair> selectListByObj(IPage page,@Param("cmmsRepair") CmmsRepair cmmsRepair);
+
+    int updateCmmsRepair(CmmsRepair cmmsRepair);
+
+    int updateRepairStatus(@Param("id") String id,@Param("repairstatus") String repairstatus);
+}

+ 85 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/mapper/xml/CmmsRepairMapper.xml

@@ -0,0 +1,85 @@
+<?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.cmmsRepair.mapper.CmmsRepairMapper">
+
+    <resultMap id="cmmsRepairResult" type="org.jeecg.modules.cmmsRepair.entity.CmmsRepair">
+        <id column="id" property="id" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="remark" property="remark" />
+        <result column="repaircode" property="repaircode" />
+        <result column="repairname" property="repairname" />
+        <result column="equipmentid" property="equipmentid" />
+        <result column="equipmentcode" property="equipmentcode" />
+        <result column="equipmentname" property="equipmentname" />
+        <result column="priority" property="priority" />
+        <result column="faultdate" property="faultdate" />
+        <result column="faultdesc" property="faultdesc" />
+        <result column="repairuser" property="repairuser" />
+        <result column="repairdate" property="repairdate" />
+        <result column="feedback" property="feedback" />
+        <result column="result" property="result" />
+        <result column="status" property="status" />
+        <result column="relid" property="relid" />
+        <result column="repairstatus" property="repairstatus" />
+    </resultMap>
+
+
+    <!--   根据客户名语句-->
+    <select id="selectListByObj" parameterType="org.jeecg.modules.cmmsRepair.entity.CmmsRepair" resultMap="cmmsRepairResult">
+        select id,create_by,create_time,update_by,update_time,remark,repaircode,repairname,equipmentid,
+        equipmentcode,equipmentname,priority,faultdate,faultdesc,repairuser,repairdate,feedback,result,status,relid,repairstatus
+        from ems_cmms_repair
+        <where>
+            <if test="cmmsRepair.repaircode !=null and cmmsRepair.repaircode !=''">
+                AND (repaircode like CONCAT('%', #{cmmsRepair.repaircode}, '%') or repairname like CONCAT('%', #{cmmsRepair.repaircode}, '%'))
+            </if>
+            <if test="cmmsRepair.repairuser !=null and cmmsRepair.repairuser !=''">
+                AND CONCAT(repairuser) like CONCAT('%', #{cmmsRepair.repairuser}, '%')
+            </if>
+            <if test="cmmsRepair.equipmentcode !=null and cmmsRepair.equipmentcode !=''">
+                AND (equipmentcode like CONCAT('%', #{cmmsRepair.equipmentcode}, '%') or equipmentname like CONCAT('%', #{cmmsRepair.equipmentcode}, '%'))
+            </if>
+            <if test="cmmsRepair.priority !=null and cmmsRepair.priority !=''">
+                AND priority = #{cmmsRepair.priority}
+            </if>
+            <if test="cmmsRepair.faultdate !=null">
+                AND DATE_FORMAT(faultdate, '%Y-%m-%d') = DATE_FORMAT(#{cmmsRepair.faultdate}, '%Y-%m-%d')
+            </if>
+        </where>
+        order by id desc
+    </select>
+
+    <!--    根据Id修改客户列表-->
+    <update id="updateCmmsRepair" parameterType="org.jeecg.modules.cmmsRepair.entity.CmmsRepair">
+        update ems_cmms_repair
+        <set>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="remark != null">remark=#{remark},</if>
+            <if test="repaircode != null">repaircode=#{repaircode},</if>
+            <if test="repairname != null">repairname=#{repairname},</if>
+            <if test="equipmentid != null">equipmentid=#{equipmentid},</if>
+            <if test="equipmentcode != null">equipmentcode=#{equipmentcode},</if>
+            <if test="equipmentname != null">equipmentname=#{equipmentname},</if>
+            <if test="priority != null">priority=#{priority},</if>
+            <if test="faultdate != null">faultdate=#{faultdate},</if>
+            <if test="faultdesc != null">faultdesc=#{faultdesc},</if>
+            <if test="repairuser != null">repairuser=#{repairuser},</if>
+            <if test="repairdate != null">repairdate=#{repairdate},</if>
+            <if test="feedback != null">feedback=#{feedback},</if>
+            <if test="result != null">result=#{result},</if>
+            <if test="status != null">status=#{status},</if>
+            <if test="relid != null">relid=#{relid},</if>
+            update_time=sysdate()
+        </set>
+        where id=#{id}
+    </update>
+
+
+    <update id="updateRepairStatus">
+        update ems_cmms_repair set repairstatus = #{repairstatus} where id = #{id}
+    </update>
+
+</mapper>

+ 57 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/service/ICmmsRepairService.java

@@ -0,0 +1,57 @@
+package org.jeecg.modules.cmmsRepair.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepair;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepairVo;
+
+import java.util.List;
+
+/**
+ * @Description: 维修工单
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+public interface ICmmsRepairService extends IService<CmmsRepair> {
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 新增维修工单
+    *   date: 2024/1/10
+    */
+    public boolean addCmmsRepair(CmmsRepairVo cmsRepair);
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 维修工单查看详情
+    *   date: 2024/1/10
+    */
+    CmmsRepairVo selectById(String id);
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 查看我的维修工单
+    *   date: 2024/1/10
+    */
+    List<CmmsRepair> selectList(IPage page,CmmsRepair cmmsRepair);
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 处理、派单
+    *   date: 2024/1/10
+    */
+    int repair(CmmsRepairVo cmmsRepair);
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 维修工单冻结、解冻
+    *   date: 2024/1/10
+    */
+    int updateRepairStatus(CmmsRepair cmmsRepair);
+}

+ 153 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/cmmsRepair/service/impl/CmmsRepairServiceImpl.java

@@ -0,0 +1,153 @@
+package org.jeecg.modules.cmmsRepair.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.cmmsOrderNode.entity.CmmsOrderNode;
+import org.jeecg.modules.cmmsOrderNode.service.ICmmsOrderNodeService;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepair;
+import org.jeecg.modules.cmmsRepair.entity.CmmsRepairVo;
+import org.jeecg.modules.cmmsRepair.mapper.CmmsRepairMapper;
+import org.jeecg.modules.cmmsRepair.service.ICmmsRepairService;
+import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+import org.jeecg.modules.sysUploadFile.service.ISysUploadFileService;
+import org.jeecg.modules.util.AutoCodeUtil;
+import org.jeecg.modules.util.UserConstants;
+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.UUID;
+
+/**
+ * @Description: 维修工单
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Service
+public class CmmsRepairServiceImpl extends ServiceImpl<CmmsRepairMapper, CmmsRepair> implements ICmmsRepairService {
+
+    @Autowired
+    @SuppressWarnings("all")
+    private CmmsRepairMapper cmmsRepairMapper;
+
+    @Autowired
+    @SuppressWarnings("all")
+    private ICmmsOrderNodeService cmmsOrderNodeService;
+    @Autowired
+    @SuppressWarnings("all")
+    private AutoCodeUtil autoCodeUtil;
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysUploadFileService fileService;
+
+
+
+    @Override
+    public boolean addCmmsRepair(CmmsRepairVo cmmsRepair) {
+        Subject subject = SecurityUtils.getSubject();
+        LoginUser loginUser = (LoginUser)subject.getPrincipal();
+        String username = loginUser.getUsername();
+        cmmsRepair.setCreateBy(username);
+        cmmsRepair.setCreateTime(DateUtils.getDate());
+        if (cmmsRepair.getRepaircode() == null || "".equals(cmmsRepair.getRepaircode())){
+            cmmsRepair.setRepaircode(autoCodeUtil.genSerialCode(UserConstants.CMMSREPAIR_CODE, null));
+        }
+
+        if (cmmsRepair.getId() == null || "".equals(cmmsRepair.getId())){
+            cmmsRepair.setId(UUID.randomUUID().toString());
+        }
+
+        CmmsOrderNode cmmsOrderNode = new CmmsOrderNode();
+        //cmmsOrderNode.setId(SnowFlakeUtils.snowFlakeId());
+        cmmsOrderNode.setNodename("0");
+        cmmsOrderNode.setRelid(cmmsRepair.getId());
+        cmmsOrderNode.setCreateBy(cmmsRepair.getCreateBy());
+        cmmsOrderNode.setCreateTime(DateUtils.getDate());
+        cmmsOrderNode.setHandledate(DateUtils.getDate());
+        cmmsOrderNode.setOpinion("——");
+        cmmsOrderNodeService.save(cmmsOrderNode);
+
+        // 附件
+        fileService.batchSave(cmmsRepair.getFiles(), cmmsRepair.getId(), "");
+
+        return this.save(cmmsRepair);
+    }
+
+
+    @Override
+    public CmmsRepairVo selectById(String id) {
+        CmmsRepairVo cmmsRepairVo = new CmmsRepairVo();
+        // 工单记录
+        CmmsRepair obj = this.getById(id);
+
+        if (obj != null) {
+            cmmsRepairVo.setId(obj.getId());
+            cmmsRepairVo.setCreateBy(obj.getCreateBy());
+            cmmsRepairVo.setCreateTime(obj.getCreateTime());
+            cmmsRepairVo.setUpdateBy(obj.getUpdateBy());
+            cmmsRepairVo.setUpdateTime(obj.getUpdateTime());
+            cmmsRepairVo.setRemark(obj.getRemark());
+            cmmsRepairVo.setRepaircode(obj.getRepaircode());
+            cmmsRepairVo.setRepairname(obj.getRepairname());
+            cmmsRepairVo.setEquipmentid(obj.getEquipmentid());
+            cmmsRepairVo.setEquipmentcode(obj.getEquipmentcode());
+            cmmsRepairVo.setEquipmentname(obj.getEquipmentname());
+            cmmsRepairVo.setPriority(obj.getPriority());
+            cmmsRepairVo.setFaultdate(obj.getFaultdate());
+            cmmsRepairVo.setFaultdesc(obj.getFaultdesc());
+            cmmsRepairVo.setRepairuser(obj.getRepairuser());
+            cmmsRepairVo.setRepairdate(obj.getRepairdate());
+            cmmsRepairVo.setFeedback(obj.getFeedback());
+            cmmsRepairVo.setResult(obj.getResult());
+            cmmsRepairVo.setStatus(obj.getStatus());
+            cmmsRepairVo.setRelid(obj.getRelid());
+            cmmsRepairVo.setRepairstatus(obj.getRepairstatus());
+        }
+
+        // 维修操作记录
+        CmmsOrderNode node = new CmmsOrderNode();
+        node.setRelid(id);
+        cmmsRepairVo.setNodeList(cmmsOrderNodeService.selectCmmsOrderNodeList(node));
+
+        // 附件
+        cmmsRepairVo.setFiles(fileService.selectFileList(new SysUploadFile(id, "")));
+
+        return cmmsRepairVo;
+    }
+
+    @Override
+    public List<CmmsRepair> selectList(IPage page,CmmsRepair cmmsRepair) {
+        return cmmsRepairMapper.selectListByObj(page,cmmsRepair);
+    }
+
+    @Override
+    public int repair(CmmsRepairVo cmmsRepair) {
+        Subject subject = SecurityUtils.getSubject();
+        LoginUser loginUser = (LoginUser)subject.getPrincipal();
+        String username = loginUser.getUsername();
+        // 操作记录信息
+        if (cmmsRepair.getNodeList() != null && cmmsRepair.getNodeList().size() > 0) {
+            CmmsOrderNode node = cmmsRepair.getNodeList().get(0);
+            node.setRelid(cmmsRepair.getId());
+            node.setCreateBy(username);
+            node.setCreateTime(DateUtils.getDate());
+            cmmsOrderNodeService.save(node);
+        }
+
+        // 附件
+        fileService.batchSave(cmmsRepair.getFiles(), cmmsRepair.getId(), "");
+        // 维修信息
+        return cmmsRepairMapper.updateCmmsRepair(cmmsRepair);
+    }
+
+    @Override
+    public int updateRepairStatus(CmmsRepair cmmsRepair) {
+        return cmmsRepairMapper.updateRepairStatus(cmmsRepair.getId(),cmmsRepair.getRepairstatus());
+    }
+}

+ 177 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/controller/SysAutoCodePartController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.sysAutoCodePart.controller;
+
+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.sysAutoCodePart.entity.SysAutoCodePart;
+import org.jeecg.modules.sysAutoCodePart.service.ISysAutoCodePartService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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: ems_sys_auto_code_part
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Api(tags="ems_sys_auto_code_part")
+@RestController
+@RequestMapping("/sysAutoCodePart/sysAutoCodePart")
+@Slf4j
+public class SysAutoCodePartController extends JeecgController<SysAutoCodePart, ISysAutoCodePartService> {
+	@Autowired
+	private ISysAutoCodePartService sysAutoCodePartService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param sysAutoCodePart
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_auto_code_part-分页列表查询")
+	@ApiOperation(value="ems_sys_auto_code_part-分页列表查询", notes="ems_sys_auto_code_part-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SysAutoCodePart>> queryPageList(SysAutoCodePart sysAutoCodePart,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SysAutoCodePart> queryWrapper = QueryGenerator.initQueryWrapper(sysAutoCodePart, req.getParameterMap());
+		Page<SysAutoCodePart> page = new Page<SysAutoCodePart>(pageNo, pageSize);
+		IPage<SysAutoCodePart> pageList = sysAutoCodePartService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param sysAutoCodePart
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_part-添加")
+	@ApiOperation(value="ems_sys_auto_code_part-添加", notes="ems_sys_auto_code_part-添加")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_part:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SysAutoCodePart sysAutoCodePart) {
+		sysAutoCodePartService.save(sysAutoCodePart);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param sysAutoCodePart
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_part-编辑")
+	@ApiOperation(value="ems_sys_auto_code_part-编辑", notes="ems_sys_auto_code_part-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_part:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SysAutoCodePart sysAutoCodePart) {
+		sysAutoCodePartService.updateById(sysAutoCodePart);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_part-通过id删除")
+	@ApiOperation(value="ems_sys_auto_code_part-通过id删除", notes="ems_sys_auto_code_part-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_part:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		sysAutoCodePartService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_part-批量删除")
+	@ApiOperation(value="ems_sys_auto_code_part-批量删除", notes="ems_sys_auto_code_part-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_part:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.sysAutoCodePartService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_auto_code_part-通过id查询")
+	@ApiOperation(value="ems_sys_auto_code_part-通过id查询", notes="ems_sys_auto_code_part-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SysAutoCodePart> queryById(@RequestParam(name="id",required=true) String id) {
+		SysAutoCodePart sysAutoCodePart = sysAutoCodePartService.getById(id);
+		if(sysAutoCodePart==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(sysAutoCodePart);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param sysAutoCodePart
+    */
+    //@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_part:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SysAutoCodePart sysAutoCodePart) {
+        return super.exportXls(request, sysAutoCodePart, SysAutoCodePart.class, "ems_sys_auto_code_part");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ems_sys_auto_code_part:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SysAutoCodePart.class);
+    }
+
+}

+ 131 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/entity/SysAutoCodePart.java

@@ -0,0 +1,131 @@
+package org.jeecg.modules.sysAutoCodePart.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: ems_sys_auto_code_part
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Data
+@TableName("ems_sys_auto_code_part")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ems_sys_auto_code_part对象", description="ems_sys_auto_code_part")
+public class SysAutoCodePart implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**分段ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "分段ID")
+    private java.lang.String id;
+	/**规则ID*/
+	@Excel(name = "规则ID", width = 15)
+    @ApiModelProperty(value = "规则ID")
+    private java.lang.String ruleId;
+	/**分段序号*/
+	@Excel(name = "分段序号", width = 15)
+    @ApiModelProperty(value = "分段序号")
+    private java.lang.Integer partIndex;
+	/**分段类型,INPUTCHAR:输入字符,NOWDATE:当前日期时间,FIXCHAR:固定字符,SERIALNO:流水号*/
+	@Excel(name = "分段类型,INPUTCHAR:输入字符,NOWDATE:当前日期时间,FIXCHAR:固定字符,SERIALNO:流水号", width = 15)
+    @ApiModelProperty(value = "分段类型,INPUTCHAR:输入字符,NOWDATE:当前日期时间,FIXCHAR:固定字符,SERIALNO:流水号")
+    private java.lang.String partType;
+	/**分段编号*/
+	@Excel(name = "分段编号", width = 15)
+    @ApiModelProperty(value = "分段编号")
+    private java.lang.String partCode;
+	/**分段名称*/
+	@Excel(name = "分段名称", width = 15)
+    @ApiModelProperty(value = "分段名称")
+    private java.lang.String partName;
+	/**分段长度*/
+	@Excel(name = "分段长度", width = 15)
+    @ApiModelProperty(value = "分段长度")
+    private java.lang.Integer partLength;
+	/**dateFormat*/
+	@Excel(name = "dateFormat", width = 15)
+    @ApiModelProperty(value = "dateFormat")
+    private java.lang.String dateFormat;
+	/**输入字符*/
+	@Excel(name = "输入字符", width = 15)
+    @ApiModelProperty(value = "输入字符")
+    private java.lang.String inputCharacter;
+	/**固定字符*/
+	@Excel(name = "固定字符", width = 15)
+    @ApiModelProperty(value = "固定字符")
+    private java.lang.String fixCharacter;
+	/**流水号起始值*/
+	@Excel(name = "流水号起始值", width = 15)
+    @ApiModelProperty(value = "流水号起始值")
+    private java.lang.Integer seriaStartNo;
+	/**流水号步长*/
+	@Excel(name = "流水号步长", width = 15)
+    @ApiModelProperty(value = "流水号步长")
+    private java.lang.Integer seriaStep;
+	/**流水号当前值*/
+	@Excel(name = "流水号当前值", width = 15)
+    @ApiModelProperty(value = "流水号当前值")
+    private java.lang.Integer seriaNowNo;
+	/**流水号是否循环*/
+	@Excel(name = "流水号是否循环", width = 15)
+    @ApiModelProperty(value = "流水号是否循环")
+    private java.lang.String cycleFlag;
+	/**循环方式,YEAR:按年,MONTH:按月,DAY:按天,HOUR:按小时,MINITE:按分钟,OTHER:按传入字符变*/
+	@Excel(name = "循环方式,YEAR:按年,MONTH:按月,DAY:按天,HOUR:按小时,MINITE:按分钟,OTHER:按传入字符变", width = 15)
+    @ApiModelProperty(value = "循环方式,YEAR:按年,MONTH:按月,DAY:按天,HOUR:按小时,MINITE:按分钟,OTHER:按传入字符变")
+    private java.lang.String cycleMethod;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**预留字段1*/
+	@Excel(name = "预留字段1", width = 15)
+    @ApiModelProperty(value = "预留字段1")
+    private java.lang.String attr1;
+	/**预留字段2*/
+	@Excel(name = "预留字段2", width = 15)
+    @ApiModelProperty(value = "预留字段2")
+    private java.lang.String attr2;
+	/**预留字段3*/
+	@Excel(name = "预留字段3", width = 15)
+    @ApiModelProperty(value = "预留字段3")
+    private java.lang.Integer attr3;
+	/**预留字段4*/
+	@Excel(name = "预留字段4", width = 15)
+    @ApiModelProperty(value = "预留字段4")
+    private java.lang.Integer attr4;
+	/**创建者*/
+    @ApiModelProperty(value = "创建者")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新者*/
+    @ApiModelProperty(value = "更新者")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+}

+ 18 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/mapper/SysAutoCodePartMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.sysAutoCodePart.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: ems_sys_auto_code_part
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+public interface SysAutoCodePartMapper extends BaseMapper<SysAutoCodePart> {
+
+    List<SysAutoCodePart> listPart(SysAutoCodePart partParam);
+}

+ 60 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/mapper/xml/SysAutoCodePartMapper.xml

@@ -0,0 +1,60 @@
+<?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.sysAutoCodePart.mapper.SysAutoCodePartMapper">
+
+
+    <resultMap type="org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart" id="SysAutoCodePartResult">
+        <id     property="id"     column="id"     />
+        <result property="ruleId"     column="rule_id"   />
+        <result property="partIndex"    column="part_index"   />
+        <result property="partType"   column="part_type"   />
+        <result property="partCode" column="part_code"   />
+        <result property="partName"     column="part_name"  />
+        <result property="partLength"    column="part_length" />
+        <result property="dateFormat"    column="date_format" />
+        <result property="inputCharacter"    column="input_character" />
+        <result property="fixCharacter"    column="fix_character" />
+        <result property="seriaStartNo"    column="seria_start_no" />
+        <result property="seriaStep"    column="seria_step" />
+        <result property="seriaNowNo"    column="seria_now_no" />
+        <result property="cycleFlag"    column="cycle_flag" />
+        <result property="cycleMethod"    column="cycle_method" />
+        <result property="remark"   column="remark"   />
+        <result property="createBy"   column="create_by"   />
+        <result property="createTime" column="create_time" />
+        <result property="updateBy"   column="update_by"   />
+        <result property="updateTime" column="update_time" />
+    </resultMap>
+
+    <sql id="selectSysAutoCodePartVo">
+        select d.id,d.rule_id,d.part_index,d.part_type,d.part_code, d.part_name,
+               d.part_length, d.date_format,d.input_character,d.fix_character,d.seria_start_no,
+               d.seria_step,d.seria_now_no,d.cycle_flag,d.cycle_method,d.remark,d.create_by,
+               d.create_time,d.update_by,d.update_time
+        from ems_sys_auto_code_part d
+    </sql>
+
+    <select id="listPart" parameterType="org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart" resultMap="SysAutoCodePartResult">
+        <include refid="selectSysAutoCodePartVo" />
+        where 1=1
+        <if test="id != null and id != 0">
+            AND id = #{id}
+        </if>
+        <if test="ruleId != null and ruleId != 0">
+            AND rule_id = #{ruleId}
+        </if>
+        <if test="partIndex != null and partIndex != 0">
+            AND part_index = #{partIndex}
+        </if>
+        <if test="partType != null and partType != ''">
+            AND part_type = #{partType}
+        </if>
+        <if test="partCode != null and partCode != ''">
+            AND part_code = #{partCode}
+        </if>
+        <if test="partName != null and partName != ''">
+            AND part_name like concat('%', #{partName}, '%')
+        </if>
+        order by part_index asc
+    </select>
+</mapper>

+ 17 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/service/ISysAutoCodePartService.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.sysAutoCodePart.service;
+
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_auto_code_part
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+public interface ISysAutoCodePartService extends IService<SysAutoCodePart> {
+
+    List<SysAutoCodePart> listPart(SysAutoCodePart partParam);
+}

+ 31 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodePart/service/impl/SysAutoCodePartServiceImpl.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.sysAutoCodePart.service.impl;
+
+import net.bytebuddy.asm.Advice;
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.jeecg.modules.sysAutoCodePart.mapper.SysAutoCodePartMapper;
+import org.jeecg.modules.sysAutoCodePart.service.ISysAutoCodePartService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_auto_code_part
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Service
+public class SysAutoCodePartServiceImpl extends ServiceImpl<SysAutoCodePartMapper, SysAutoCodePart> implements ISysAutoCodePartService {
+
+    @Autowired
+    @SuppressWarnings("all")
+    private SysAutoCodePartMapper codePartMapper;
+
+    @Override
+    public List<SysAutoCodePart> listPart(SysAutoCodePart partParam) {
+        return codePartMapper.listPart(partParam);
+    }
+}

+ 177 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/controller/SysAutoCodeResultController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.sysAutoCodeResult.controller;
+
+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.sysAutoCodeResult.entity.SysAutoCodeResult;
+import org.jeecg.modules.sysAutoCodeResult.service.ISysAutoCodeResultService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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: ems_sys_auto_code_result
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Api(tags="ems_sys_auto_code_result")
+@RestController
+@RequestMapping("/sysAutoCodeResult/sysAutoCodeResult")
+@Slf4j
+public class SysAutoCodeResultController extends JeecgController<SysAutoCodeResult, ISysAutoCodeResultService> {
+	@Autowired
+	private ISysAutoCodeResultService sysAutoCodeResultService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param sysAutoCodeResult
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_auto_code_result-分页列表查询")
+	@ApiOperation(value="ems_sys_auto_code_result-分页列表查询", notes="ems_sys_auto_code_result-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SysAutoCodeResult>> queryPageList(SysAutoCodeResult sysAutoCodeResult,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SysAutoCodeResult> queryWrapper = QueryGenerator.initQueryWrapper(sysAutoCodeResult, req.getParameterMap());
+		Page<SysAutoCodeResult> page = new Page<SysAutoCodeResult>(pageNo, pageSize);
+		IPage<SysAutoCodeResult> pageList = sysAutoCodeResultService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param sysAutoCodeResult
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_result-添加")
+	@ApiOperation(value="ems_sys_auto_code_result-添加", notes="ems_sys_auto_code_result-添加")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_result:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SysAutoCodeResult sysAutoCodeResult) {
+		sysAutoCodeResultService.save(sysAutoCodeResult);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param sysAutoCodeResult
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_result-编辑")
+	@ApiOperation(value="ems_sys_auto_code_result-编辑", notes="ems_sys_auto_code_result-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_result:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SysAutoCodeResult sysAutoCodeResult) {
+		sysAutoCodeResultService.updateById(sysAutoCodeResult);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_result-通过id删除")
+	@ApiOperation(value="ems_sys_auto_code_result-通过id删除", notes="ems_sys_auto_code_result-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_result:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		sysAutoCodeResultService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_result-批量删除")
+	@ApiOperation(value="ems_sys_auto_code_result-批量删除", notes="ems_sys_auto_code_result-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_result:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.sysAutoCodeResultService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_auto_code_result-通过id查询")
+	@ApiOperation(value="ems_sys_auto_code_result-通过id查询", notes="ems_sys_auto_code_result-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SysAutoCodeResult> queryById(@RequestParam(name="id",required=true) String id) {
+		SysAutoCodeResult sysAutoCodeResult = sysAutoCodeResultService.getById(id);
+		if(sysAutoCodeResult==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(sysAutoCodeResult);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param sysAutoCodeResult
+    */
+    //@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_result:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SysAutoCodeResult sysAutoCodeResult) {
+        return super.exportXls(request, sysAutoCodeResult, SysAutoCodeResult.class, "ems_sys_auto_code_result");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ems_sys_auto_code_result:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SysAutoCodeResult.class);
+    }
+
+}

+ 99 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/entity/SysAutoCodeResult.java

@@ -0,0 +1,99 @@
+package org.jeecg.modules.sysAutoCodeResult.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: ems_sys_auto_code_result
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Data
+@TableName("ems_sys_auto_code_result")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ems_sys_auto_code_result对象", description="ems_sys_auto_code_result")
+public class SysAutoCodeResult implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**记录ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "记录ID")
+    private java.lang.String id;
+	/**规则ID*/
+	@Excel(name = "规则ID", width = 15)
+    @ApiModelProperty(value = "规则ID")
+    private java.lang.String ruleId;
+	/**生成日期时间*/
+	@Excel(name = "生成日期时间", width = 15)
+    @ApiModelProperty(value = "生成日期时间")
+    private java.lang.String genDate;
+	/**最后产生的序号*/
+	@Excel(name = "最后产生的序号", width = 15)
+    @ApiModelProperty(value = "最后产生的序号")
+    private java.lang.Integer genIndex;
+	/**最后产生的值*/
+	@Excel(name = "最后产生的值", width = 15)
+    @ApiModelProperty(value = "最后产生的值")
+    private java.lang.String lastResult;
+	/**最后产生的流水号*/
+	@Excel(name = "最后产生的流水号", width = 15)
+    @ApiModelProperty(value = "最后产生的流水号")
+    private java.lang.Integer lastSerialNo;
+	/**最后传入的参数*/
+	@Excel(name = "最后传入的参数", width = 15)
+    @ApiModelProperty(value = "最后传入的参数")
+    private java.lang.String lastInputChar;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**预留字段1*/
+	@Excel(name = "预留字段1", width = 15)
+    @ApiModelProperty(value = "预留字段1")
+    private java.lang.String attr1;
+	/**预留字段2*/
+	@Excel(name = "预留字段2", width = 15)
+    @ApiModelProperty(value = "预留字段2")
+    private java.lang.String attr2;
+	/**预留字段3*/
+	@Excel(name = "预留字段3", width = 15)
+    @ApiModelProperty(value = "预留字段3")
+    private java.lang.Integer attr3;
+	/**预留字段4*/
+	@Excel(name = "预留字段4", width = 15)
+    @ApiModelProperty(value = "预留字段4")
+    private java.lang.Integer attr4;
+	/**创建者*/
+    @ApiModelProperty(value = "创建者")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新者*/
+    @ApiModelProperty(value = "更新者")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+}

+ 18 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/mapper/SysAutoCodeResultMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.sysAutoCodeResult.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: ems_sys_auto_code_result
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+public interface SysAutoCodeResultMapper extends BaseMapper<SysAutoCodeResult> {
+
+    List<SysAutoCodeResult> selectByAutoCodeResult(@Param("bo") SysAutoCodeResult bo);
+}

+ 41 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/mapper/xml/SysAutoCodeResultMapper.xml

@@ -0,0 +1,41 @@
+<?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.sysAutoCodeResult.mapper.SysAutoCodeResultMapper">
+
+
+    <resultMap type="org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult" id="SysAutoCodeResultResult">
+        <id     property="id"     column="id"     />
+        <result property="ruleId"     column="rule_id"   />
+        <result property="genDate"    column="gen_date"   />
+        <result property="genIndex"   column="gen_index"   />
+        <result property="lastResult" column="last_result"   />
+        <result property="lastSerialNo"     column="last_serial_no"  />
+        <result property="lastInputChar"    column="last_input_char" />
+        <result property="remark"   column="remark"   />
+        <result property="createBy"   column="create_by"   />
+        <result property="createTime" column="create_time" />
+        <result property="updateBy"   column="update_by"   />
+        <result property="updateTime" column="update_time" />
+    </resultMap>
+
+    <sql id="selectSysAutoCodeResultVo">
+        select d.id, d.rule_id, d.gen_date, d.gen_index, d.last_result, d.last_serial_no, d.last_input_char
+        from ems_sys_auto_code_result d
+    </sql>
+
+    <select id="selectByAutoCodeResult" parameterType="org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult" resultMap="SysAutoCodeResultResult">
+        <include refid="selectSysAutoCodeResultVo"/>
+        where 1=1
+        <if test="bo.ruleId != null and bo.ruleId != 0">
+            AND rule_id = #{bo.ruleId}
+        </if>
+        <if test="bo.lastInputChar != null and bo.lastInputChar != ''">
+            AND last_input_char = #{bo.lastInputChar}
+        </if>
+
+        <if test="bo.genDate != null and bo.genDate != ''">
+            AND gen_date like concat(#{bo.genDate},'%')
+        </if>
+        order by gen_date desc
+    </select>
+</mapper>

+ 17 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/service/ISysAutoCodeResultService.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.sysAutoCodeResult.service;
+
+import org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_auto_code_result
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+public interface ISysAutoCodeResultService extends IService<SysAutoCodeResult> {
+
+    List<SysAutoCodeResult> selectByAutoCodeResult(SysAutoCodeResult bo);
+}

+ 31 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeResult/service/impl/SysAutoCodeResultServiceImpl.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.sysAutoCodeResult.service.impl;
+
+import org.checkerframework.checker.units.qual.A;
+import org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult;
+import org.jeecg.modules.sysAutoCodeResult.mapper.SysAutoCodeResultMapper;
+import org.jeecg.modules.sysAutoCodeResult.service.ISysAutoCodeResultService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_auto_code_result
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Service
+public class SysAutoCodeResultServiceImpl extends ServiceImpl<SysAutoCodeResultMapper, SysAutoCodeResult> implements ISysAutoCodeResultService {
+
+    @Autowired
+    @SuppressWarnings("all")
+    private SysAutoCodeResultMapper autoCodeResultMapper;
+
+    @Override
+    public List<SysAutoCodeResult> selectByAutoCodeResult(SysAutoCodeResult bo) {
+        return autoCodeResultMapper.selectByAutoCodeResult(bo);
+    }
+}

+ 177 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/controller/SysAutoCodeRuleController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.sysAutoCodeRule.controller;
+
+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.sysAutoCodeRule.entity.SysAutoCodeRule;
+import org.jeecg.modules.sysAutoCodeRule.service.ISysAutoCodeRuleService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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: ems_sys_auto_code_rule
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Api(tags="ems_sys_auto_code_rule")
+@RestController
+@RequestMapping("/sysAutoCodeRule/sysAutoCodeRule")
+@Slf4j
+public class SysAutoCodeRuleController extends JeecgController<SysAutoCodeRule, ISysAutoCodeRuleService> {
+	@Autowired
+	private ISysAutoCodeRuleService sysAutoCodeRuleService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param sysAutoCodeRule
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_auto_code_rule-分页列表查询")
+	@ApiOperation(value="ems_sys_auto_code_rule-分页列表查询", notes="ems_sys_auto_code_rule-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SysAutoCodeRule>> queryPageList(SysAutoCodeRule sysAutoCodeRule,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SysAutoCodeRule> queryWrapper = QueryGenerator.initQueryWrapper(sysAutoCodeRule, req.getParameterMap());
+		Page<SysAutoCodeRule> page = new Page<SysAutoCodeRule>(pageNo, pageSize);
+		IPage<SysAutoCodeRule> pageList = sysAutoCodeRuleService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param sysAutoCodeRule
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_rule-添加")
+	@ApiOperation(value="ems_sys_auto_code_rule-添加", notes="ems_sys_auto_code_rule-添加")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_rule:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SysAutoCodeRule sysAutoCodeRule) {
+		sysAutoCodeRuleService.save(sysAutoCodeRule);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param sysAutoCodeRule
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_rule-编辑")
+	@ApiOperation(value="ems_sys_auto_code_rule-编辑", notes="ems_sys_auto_code_rule-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_rule:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SysAutoCodeRule sysAutoCodeRule) {
+		sysAutoCodeRuleService.updateById(sysAutoCodeRule);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_rule-通过id删除")
+	@ApiOperation(value="ems_sys_auto_code_rule-通过id删除", notes="ems_sys_auto_code_rule-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_rule:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		sysAutoCodeRuleService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_auto_code_rule-批量删除")
+	@ApiOperation(value="ems_sys_auto_code_rule-批量删除", notes="ems_sys_auto_code_rule-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_rule:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.sysAutoCodeRuleService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_auto_code_rule-通过id查询")
+	@ApiOperation(value="ems_sys_auto_code_rule-通过id查询", notes="ems_sys_auto_code_rule-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SysAutoCodeRule> queryById(@RequestParam(name="id",required=true) String id) {
+		SysAutoCodeRule sysAutoCodeRule = sysAutoCodeRuleService.getById(id);
+		if(sysAutoCodeRule==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(sysAutoCodeRule);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param sysAutoCodeRule
+    */
+    //@RequiresPermissions("org.jeecg.modules:ems_sys_auto_code_rule:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SysAutoCodeRule sysAutoCodeRule) {
+        return super.exportXls(request, sysAutoCodeRule, SysAutoCodeRule.class, "ems_sys_auto_code_rule");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ems_sys_auto_code_rule:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SysAutoCodeRule.class);
+    }
+
+}

+ 107 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/entity/SysAutoCodeRule.java

@@ -0,0 +1,107 @@
+package org.jeecg.modules.sysAutoCodeRule.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: ems_sys_auto_code_rule
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Data
+@TableName("ems_sys_auto_code_rule")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ems_sys_auto_code_rule对象", description="ems_sys_auto_code_rule")
+public class SysAutoCodeRule implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**规则ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "规则ID")
+    private java.lang.String id;
+	/**规则编码*/
+	@Excel(name = "规则编码", width = 15)
+    @ApiModelProperty(value = "规则编码")
+    private java.lang.String ruleCode;
+	/**规则名称*/
+	@Excel(name = "规则名称", width = 15)
+    @ApiModelProperty(value = "规则名称")
+    private java.lang.String ruleName;
+	/**描述*/
+	@Excel(name = "描述", width = 15)
+    @ApiModelProperty(value = "描述")
+    private java.lang.String ruleDesc;
+	/**最大长度*/
+	@Excel(name = "最大长度", width = 15)
+    @ApiModelProperty(value = "最大长度")
+    private java.lang.Integer maxLength;
+	/**是否补齐*/
+	@Excel(name = "是否补齐", width = 15)
+    @ApiModelProperty(value = "是否补齐")
+    private java.lang.String isPadded;
+	/**补齐字符*/
+	@Excel(name = "补齐字符", width = 15)
+    @ApiModelProperty(value = "补齐字符")
+    private java.lang.String paddedChar;
+	/**补齐方式*/
+	@Excel(name = "补齐方式", width = 15)
+    @ApiModelProperty(value = "补齐方式")
+    private java.lang.String paddedMethod;
+	/**是否启用*/
+	@Excel(name = "是否启用", width = 15)
+    @ApiModelProperty(value = "是否启用")
+    private java.lang.String enableFlag;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**预留字段1*/
+	@Excel(name = "预留字段1", width = 15)
+    @ApiModelProperty(value = "预留字段1")
+    private java.lang.String attr1;
+	/**预留字段2*/
+	@Excel(name = "预留字段2", width = 15)
+    @ApiModelProperty(value = "预留字段2")
+    private java.lang.String attr2;
+	/**预留字段3*/
+	@Excel(name = "预留字段3", width = 15)
+    @ApiModelProperty(value = "预留字段3")
+    private java.lang.Integer attr3;
+	/**预留字段4*/
+	@Excel(name = "预留字段4", width = 15)
+    @ApiModelProperty(value = "预留字段4")
+    private java.lang.Integer attr4;
+	/**创建者*/
+    @ApiModelProperty(value = "创建者")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新者*/
+    @ApiModelProperty(value = "更新者")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+}

+ 19 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/mapper/SysAutoCodeRuleMapper.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.sysAutoCodeRule.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.sysAutoCodeRule.entity.SysAutoCodeRule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: ems_sys_auto_code_rule
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+public interface SysAutoCodeRuleMapper extends BaseMapper<SysAutoCodeRule> {
+
+
+    List<SysAutoCodeRule> selectSysAutoCodeResultList(SysAutoCodeRule param);
+}

+ 42 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/mapper/xml/SysAutoCodeRuleMapper.xml

@@ -0,0 +1,42 @@
+<?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.sysAutoCodeRule.mapper.SysAutoCodeRuleMapper">
+
+    <resultMap type="org.jeecg.modules.sysAutoCodeRule.entity.SysAutoCodeRule" id="SysAutoCodeRuleResult">
+        <id     property="id"     column="id"     />
+        <result property="ruleCode"     column="rule_code"   />
+        <result property="ruleName"    column="rule_name"   />
+        <result property="ruleDesc"   column="rule_desc"   />
+        <result property="maxLength" column="max_length"   />
+        <result property="isPadded"     column="is_padded"  />
+        <result property="paddedChar"    column="padded_char" />
+        <result property="paddedMethod"    column="padded_method" />
+        <result property="enableFlag"    column="enable_flag" />
+        <result property="remark"   column="remark"   />
+        <result property="createBy"   column="create_by"   />
+        <result property="createTime" column="create_time" />
+        <result property="updateBy"   column="update_by"   />
+        <result property="updateTime" column="update_time" />
+    </resultMap>
+
+    <sql id="selectSysAutoCodeRuleVo">
+        select d.id, d.rule_code, d.rule_name, d.rule_desc, d.max_length,
+               is_padded,padded_char,padded_method,enable_flag,remark,create_by,create_time
+        from ems_sys_auto_code_rule d
+    </sql>
+
+    <select id="selectSysAutoCodeResultList" parameterType="org.jeecg.modules.sysAutoCodeRule.entity.SysAutoCodeRule" resultMap="SysAutoCodeRuleResult">
+        <include refid="selectSysAutoCodeRuleVo"/>
+        where 1=1
+        <if test="id != null and id != 0">
+            AND id = #{id}
+        </if>
+        <if test="ruleCode != null and ruleCode != ''">
+            AND rule_code = #{ruleCode}
+        </if>
+
+        <if test="ruleName != null and ruleName != ''">
+            AND rule_name like concat('%', #{ruleName}, '%')
+        </if>
+    </select>
+</mapper>

+ 15 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/service/ISysAutoCodeRuleService.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.sysAutoCodeRule.service;
+
+import org.jeecg.modules.sysAutoCodeRule.entity.SysAutoCodeRule;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: ems_sys_auto_code_rule
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+public interface ISysAutoCodeRuleService extends IService<SysAutoCodeRule> {
+
+    SysAutoCodeRule getOneByCode(String ruleCode);
+}

+ 38 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysAutoCodeRule/service/impl/SysAutoCodeRuleServiceImpl.java

@@ -0,0 +1,38 @@
+package org.jeecg.modules.sysAutoCodeRule.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import org.checkerframework.checker.units.qual.A;
+import org.jeecg.modules.sysAutoCodeRule.entity.SysAutoCodeRule;
+import org.jeecg.modules.sysAutoCodeRule.mapper.SysAutoCodeRuleMapper;
+import org.jeecg.modules.sysAutoCodeRule.service.ISysAutoCodeRuleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_auto_code_rule
+ * @Author: jeecg-boot
+ * @Date:   2024-01-10
+ * @Version: V1.0
+ */
+@Service
+public class SysAutoCodeRuleServiceImpl extends ServiceImpl<SysAutoCodeRuleMapper, SysAutoCodeRule> implements ISysAutoCodeRuleService {
+
+    @Autowired
+    @SuppressWarnings("all")
+    private SysAutoCodeRuleMapper autoCodeRuleMapper;
+
+    @Override
+    public SysAutoCodeRule getOneByCode(String ruleCode) {
+        SysAutoCodeRule param = new SysAutoCodeRule();
+        param.setRuleCode(ruleCode);
+        List<SysAutoCodeRule> rules = autoCodeRuleMapper.selectSysAutoCodeResultList(param);
+        if(CollectionUtil.isNotEmpty(rules)){
+            return rules.get(0);
+        }
+        return null;
+    }
+}

+ 177 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/controller/SysUploadFileController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.sysUploadFile.controller;
+
+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.sysUploadFile.entity.SysUploadFile;
+import org.jeecg.modules.sysUploadFile.service.ISysUploadFileService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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: ems_sys_upload_file
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Api(tags="ems_sys_upload_file")
+@RestController
+@RequestMapping("/sysUploadFile/sysUploadFile")
+@Slf4j
+public class SysUploadFileController extends JeecgController<SysUploadFile, ISysUploadFileService> {
+	@Autowired
+	private ISysUploadFileService sysUploadFileService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param sysUploadFile
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_upload_file-分页列表查询")
+	@ApiOperation(value="ems_sys_upload_file-分页列表查询", notes="ems_sys_upload_file-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SysUploadFile>> queryPageList(SysUploadFile sysUploadFile,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SysUploadFile> queryWrapper = QueryGenerator.initQueryWrapper(sysUploadFile, req.getParameterMap());
+		Page<SysUploadFile> page = new Page<SysUploadFile>(pageNo, pageSize);
+		IPage<SysUploadFile> pageList = sysUploadFileService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param sysUploadFile
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_upload_file-添加")
+	@ApiOperation(value="ems_sys_upload_file-添加", notes="ems_sys_upload_file-添加")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_upload_file:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SysUploadFile sysUploadFile) {
+		sysUploadFileService.save(sysUploadFile);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param sysUploadFile
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_upload_file-编辑")
+	@ApiOperation(value="ems_sys_upload_file-编辑", notes="ems_sys_upload_file-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_upload_file:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SysUploadFile sysUploadFile) {
+		sysUploadFileService.updateById(sysUploadFile);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_upload_file-通过id删除")
+	@ApiOperation(value="ems_sys_upload_file-通过id删除", notes="ems_sys_upload_file-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_upload_file:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		sysUploadFileService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "ems_sys_upload_file-批量删除")
+	@ApiOperation(value="ems_sys_upload_file-批量删除", notes="ems_sys_upload_file-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ems_sys_upload_file:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.sysUploadFileService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "ems_sys_upload_file-通过id查询")
+	@ApiOperation(value="ems_sys_upload_file-通过id查询", notes="ems_sys_upload_file-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SysUploadFile> queryById(@RequestParam(name="id",required=true) String id) {
+		SysUploadFile sysUploadFile = sysUploadFileService.getById(id);
+		if(sysUploadFile==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(sysUploadFile);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param sysUploadFile
+    */
+    //@RequiresPermissions("org.jeecg.modules:ems_sys_upload_file:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SysUploadFile sysUploadFile) {
+        return super.exportXls(request, sysUploadFile, SysUploadFile.class, "ems_sys_upload_file");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ems_sys_upload_file:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SysUploadFile.class);
+    }
+
+}

+ 87 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/entity/SysUploadFile.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.sysUploadFile.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: ems_sys_upload_file
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Data
+@TableName("ems_sys_upload_file")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ems_sys_upload_file对象", description="ems_sys_upload_file")
+public class SysUploadFile implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**文件ID*/
+	@Excel(name = "文件ID", width = 15)
+    @ApiModelProperty(value = "文件ID")
+    private java.lang.Long fileid;
+	/**创建者*/
+    @ApiModelProperty(value = "创建者")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新者*/
+    @ApiModelProperty(value = "更新者")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**关联ID*/
+	@Excel(name = "关联ID", width = 15)
+    @ApiModelProperty(value = "关联ID")
+    private java.lang.String relid;
+	/**储存地址*/
+	@Excel(name = "储存地址", width = 15)
+    @ApiModelProperty(value = "储存地址")
+    private java.lang.String url;
+	/**原文件名*/
+	@Excel(name = "原文件名", width = 15)
+    @ApiModelProperty(value = "原文件名")
+    private java.lang.String filename;
+	/**扩展名*/
+	@Excel(name = "扩展名", width = 15)
+    @ApiModelProperty(value = "扩展名")
+    private java.lang.String extname;
+	/**文件大小*/
+	@Excel(name = "文件大小", width = 15)
+    @ApiModelProperty(value = "文件大小")
+    private java.lang.Integer filesize;
+
+    public SysUploadFile(String relId, String remark) {
+        this.relid = relId;
+        this.setRemark(remark);
+    }
+
+    public SysUploadFile() {
+    }
+}

+ 87 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/mapper/SysUploadFileMapper.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.sysUploadFile.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: ems_sys_upload_file
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+public interface SysUploadFileMapper extends BaseMapper<SysUploadFile> {
+    /**
+     * 查询数据集合
+     *
+     * @param File 信息
+     * @return 数据集合
+     */
+    public List<SysUploadFile> selectFileList(SysUploadFile File);
+
+    /**
+     * 通过文件ID查询文件信息
+     *
+     * @param fileId 文件ID
+     * @return 文件对象信息
+     */
+    public SysUploadFile selectFileById(Long fileId);
+
+    /**
+     * 删除文件信息
+     *
+     * @param fileId 文件ID
+     * @return 结果
+     */
+    public int deleteFileById(Long fileId);
+
+    /**
+     * 删除文件信息
+     *
+     * @param relId 关联ID
+     * @return 结果
+     */
+    public int deleteFileByRelId(Long relId);
+
+    /**
+     * 删除文件信息
+     *
+     * @param file 主要是根据relId和remark(类型)来删除
+     * @return 结果
+     */
+    public int deleteFile(SysUploadFile file);
+
+    /**
+     * 删除文件信息
+     *
+     * @param relIds 关联IDs
+     * @return 结果
+     */
+    public int deleteFileByRelIds(String[] relIds);
+
+    /**
+     * 批量删除文件信息
+     *
+     * @param fileIds 需要删除的文件ID
+     * @return 结果
+     */
+    public int deleteFileByIds(Long[] fileIds);
+
+    /**
+     * 修改文件信息
+     *
+     * @param File 文件信息
+     * @return 结果
+     */
+    public int updateFile(SysUploadFile File);
+
+    /**
+     * 新增文件信息
+     *
+     * @param File 文件信息
+     * @return 结果
+     */
+    public int insertFile(SysUploadFile File);
+}

+ 109 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/mapper/xml/SysUploadFileMapper.xml

@@ -0,0 +1,109 @@
+<?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.sysUploadFile.mapper.SysUploadFileMapper">
+
+    <resultMap type="org.jeecg.modules.sysUploadFile.entity.SysUploadFile" id="SysUploadFileResult">
+        <result property="fileid"       column="fileid"     />
+        <result property="relid"        column="relid"      />
+        <result property="url"          column="url"        />
+        <result property="filename"     column="filename"   />
+        <result property="extname"      column="extname"    />
+        <result property="filesize"     column="filesize"   />
+        <result property="createBy"     column="create_by"  />
+        <result property="createTime"   column="create_time"/>
+        <result property="updateBy"     column="update_by"  />
+        <result property="updateTime"   column="update_time"/>
+        <result property="remark"       column="remark"     />
+    </resultMap>
+
+    <sql id="selectFileVo">
+        select fileId, relId, url, filename, extname, filesize, create_by, create_time, update_by, update_time, remark
+        from ems_sys_upload_file
+    </sql>
+
+    <select id="selectFileById" parameterType="Long" resultMap="SysUploadFileResult">
+        <include refid="selectFileVo"/>
+        where fileId = #{fileId}
+    </select>
+
+    <select id="selectFileList" parameterType="org.jeecg.modules.sysUploadFile.entity.SysUploadFile" resultMap="SysUploadFileResult">
+        <include refid="selectFileVo"/>
+        <where>
+            <if test="relid != null">
+                AND relId = #{relid}
+            </if>
+            <if test="remark != null and remark != ''">
+                AND remark = #{remark}
+            </if>
+            <if test="createBy != null and createBy != ''">
+                AND create_by like concat('%', #{createBy}, '%')
+            </if>
+        </where>
+    </select>
+
+    <insert id="insertFile" parameterType="org.jeecg.modules.sysUploadFile.entity.SysUploadFile">
+        insert into ems_sys_upload_file (
+        <if test="fileid != null">fileId, </if>
+        <if test="relid != null">relId, </if>
+        <if test="url != null and url != '' ">url, </if>
+        <if test="filename != null and filename != '' ">filename, </if>
+        <if test="extname != null and extname != '' ">extname, </if>
+        <if test="filesize != null">filesize, </if>
+        <if test="remark != null and remark != ''">remark,</if>
+        <if test="createBy != null and createBy != ''">create_by,</if>
+        create_time
+        )values(
+        <if test="fileid != null">#{fileid}, </if>
+        <if test="relid != null">#{relid}, </if>
+        <if test="url != null and url != ''">#{url}, </if>
+        <if test="filename != null and filename != ''">#{filename}, </if>
+        <if test="extname != null and extname != ''">#{extname}, </if>
+        <if test="filesize != null">#{filesize}, </if>
+        <if test="remark != null and remark != ''">#{remark},</if>
+        <if test="createBy != null and createBy != ''">#{createBy},</if>
+        sysdate()
+        )
+    </insert>
+
+    <update id="updateFile" parameterType="org.jeecg.modules.sysUploadFile.entity.SysUploadFile">
+        update ems_sys_upload_file
+        <set>
+            <if test="relid != null">relId = #{relid}, </if>
+            <if test="url != null and url != ''">url = #{url}, </if>
+            <if test="filename != null and filename != ''">filename = #{filename},</if>
+            <if test="extname != null and extname != ''">extname = #{extname},</if>
+            <if test="filesize != null">filesize = #{filesize},</if>
+            <if test="remark != null and remark != ''">remark = #{remark},</if>
+            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+            update_time = sysdate()
+        </set>
+        where File_id = #{Fileid}
+    </update>
+
+    <delete id="deleteFileById" parameterType="Long">
+        delete from ems_sys_upload_file where fileId = #{fileId}
+    </delete>
+
+    <delete id="deleteFileByRelId" parameterType="Long">
+        delete from ems_sys_upload_file where relId = #{relId}
+    </delete>
+
+    <delete id="deleteFile" parameterType="org.jeecg.modules.sysUploadFile.entity.SysUploadFile">
+        delete from ems_sys_upload_file where relId = #{relid} and ifnull(remark,'') = ifnull(#{remark},'')
+    </delete>
+
+    <delete id="deleteFileByIds" parameterType="Long">
+        delete from ems_sys_upload_file where fileId in
+        <foreach item="fileId" collection="array" open="(" separator="," close=")">
+            #{fileId}
+        </foreach>
+    </delete>
+
+    <delete id="deleteFileByRelIds" parameterType="Long">
+        delete from ems_sys_upload_filee where relid in
+        <foreach item="relid" collection="array" open="(" separator="," close=")">
+            #{relid}
+        </foreach>
+    </delete>
+
+</mapper>

+ 89 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/service/ISysUploadFileService.java

@@ -0,0 +1,89 @@
+package org.jeecg.modules.sysUploadFile.service;
+
+import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_upload_file
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+public interface ISysUploadFileService extends IService<SysUploadFile> {
+
+    /**
+     * 查询文件信息
+     *
+     * @param fileId 文件ID
+     * @return 文件信息
+     */
+    public SysUploadFile selectFileById(Long fileId);
+
+    /**
+     * 查询文件列表
+     *
+     * @param file 文件信息
+     * @return 文件集合
+     */
+    public List<SysUploadFile> selectFileList(SysUploadFile file);
+
+    /**
+     * 新增文件
+     *
+     * @param file 文件信息
+     * @return 结果
+     */
+    public int insertFile(SysUploadFile file);
+
+    /**
+     * 新增文件
+     * @param files
+     * @param relId
+     * @param remark
+     * @return
+     */
+    public int batchSave(List<SysUploadFile> files, String relId, String remark);
+
+    /**
+     * 修改文件
+     *
+     * @param file 文件信息
+     * @return 结果
+     */
+    public int updateFile(SysUploadFile file);
+
+    /**
+     * 删除文件信息
+     *
+     * @param fileId 文件ID
+     * @return 结果
+     */
+    public int deleteFileById(Long fileId);
+
+    /**
+     * 删除文件信息
+     *
+     * @param relId 文件ID
+     * @return 结果
+     */
+    public int deleteFileByRelId(Long relId);
+
+    /**
+     * 删除文件信息
+     *
+     * @param relIds 关联IDs
+     * @return 结果
+     */
+    public int deleteFileByRelIds(String[] relIds);
+
+    /**
+     * 批量删除文件信息
+     *
+     * @param fileIds 需要删除的文件ID
+     * @return 结果
+     */
+    public int deleteFileByIds(Long[] fileIds);
+
+}

+ 158 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/sysUploadFile/service/impl/SysUploadFileServiceImpl.java

@@ -0,0 +1,158 @@
+package org.jeecg.modules.sysUploadFile.service.impl;
+
+import cn.hutool.core.lang.Snowflake;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.sysUploadFile.entity.SysUploadFile;
+import org.jeecg.modules.sysUploadFile.mapper.SysUploadFileMapper;
+import org.jeecg.modules.sysUploadFile.service.ISysUploadFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description: ems_sys_upload_file
+ * @Author: jeecg-boot
+ * @Date:   2024-01-09
+ * @Version: V1.0
+ */
+@Service
+public class SysUploadFileServiceImpl extends ServiceImpl<SysUploadFileMapper, SysUploadFile> implements ISysUploadFileService {
+
+    @Autowired
+    @SuppressWarnings("all")
+    private SysUploadFileMapper fileMapper;
+
+
+    /**
+     * 查询文件信息
+     *
+     * @param fileId 文件ID
+     * @return 文件信息
+     */
+    @Override
+    public SysUploadFile selectFileById(Long fileId)
+    {
+        return fileMapper.selectFileById(fileId);
+    }
+
+    /**
+     * 查询文件列表
+     *
+     * @param file 文件信息
+     * @return 文件集合
+     */
+    @Override
+    public List<SysUploadFile> selectFileList(SysUploadFile file)
+    {
+        return fileMapper.selectFileList(file);
+    }
+
+    /**
+     * 新增文件
+     *
+     * @param file 文件信息
+     * @return 结果
+     */
+    @Override
+    public int insertFile(SysUploadFile file) {
+        if (file.getFileid() == null || file.getFileid() == 0) {
+            //file.setFileid(Snowflake.snowFlakeId());
+        }
+        return fileMapper.insertFile(file);
+    }
+
+    /**
+     * 保存文件
+     * @param files 文件信息
+     * @param relId
+     * @param remark
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int batchSave(List<SysUploadFile> files, String relId, String remark) {
+        // 删除以前的文件
+        SysUploadFile deletefile = new SysUploadFile();
+        deletefile.setRelid(relId+"");
+        deletefile.setRemark(remark);
+        fileMapper.deleteFile(deletefile);
+        // 新增当前的文件
+        if (files != null && files.size() > 0) {
+            for(SysUploadFile f:files) {
+                if (f.getFileid() == null || f.getFileid() == 0) {
+                    //f.setFileid(SnowFlakeUtils.snowFlakeId());
+                }
+                f.setRelid(relId);
+                f.setRemark(remark);
+                //f.setCreateBy(SecurityUtils.getUsername());
+                if (fileMapper.insertFile(f) < 1){
+                    return 0;
+                }
+            }
+        }
+        return 1;
+    }
+
+    /**
+     * 修改文件
+     *
+     * @param file 文件信息
+     * @return 结果
+     */
+    @Override
+    public int updateFile(SysUploadFile file)
+    {
+        return fileMapper.updateFile(file);
+    }
+
+    /**
+     * 删除文件对象
+     *
+     * @param fileId 文件ID
+     * @return 结果
+     */
+    @Override
+    public int deleteFileById(Long fileId)
+    {
+        return fileMapper.deleteFileById(fileId);
+    }
+
+    /**
+     * 删除文件对象
+     *
+     * @param relId 关联ID
+     * @return 结果
+     */
+    @Override
+    public int deleteFileByRelId(Long relId)
+    {
+        return fileMapper.deleteFileById(relId);
+    }
+
+    /**
+     * 删除文件信息
+     *
+     * @param relIds 关联IDs
+     * @return 结果
+     */
+    public int deleteFileByRelIds(String[] relIds) {
+        return fileMapper.deleteFileByRelIds(relIds);
+    }
+
+    /**
+     * 批量删除文件信息
+     *
+     * @param fileIds 需要删除的文件ID
+     * @return 结果
+     */
+    @Override
+    public int deleteFileByIds(Long[] fileIds)
+    {
+        return fileMapper.deleteFileByIds(fileIds);
+    }
+
+}

+ 142 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/AutoCodeUtil.java

@@ -0,0 +1,142 @@
+package org.jeecg.modules.util;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.Assert;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.jeecg.modules.sysAutoCodePart.service.ISysAutoCodePartService;
+import org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult;
+import org.jeecg.modules.sysAutoCodeResult.service.ISysAutoCodeResultService;
+import org.jeecg.modules.sysAutoCodeRule.entity.SysAutoCodeRule;
+import org.jeecg.modules.sysAutoCodeRule.service.ISysAutoCodeRuleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class AutoCodeUtil {
+    public static ThreadLocal<Boolean> threadLocal = new ThreadLocal<>();
+
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysAutoCodeRuleService iAutoCodeRuleService;
+
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysAutoCodePartService iAutoCodePartService;
+
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysAutoCodeResultService iAutoCodeResultService;
+
+    @Autowired
+    @SuppressWarnings("all")
+    private PartTypeHandler partTypeHandler;
+
+    private String lastSerialNo;
+
+//    @Log(title = "生成业务编号",businessType = BusinessType.INSERT)
+    synchronized
+    public String genSerialCode(String ruleCode,String inputCharacter){
+
+        //查找编码规则
+        SysAutoCodeRule rule = iAutoCodeRuleService.getOneByCode(ruleCode);
+        Assert.notNull(rule,"未获取到指定类型:[{}]的业务编码生成规则",ruleCode);
+
+        //查找规则组成
+        SysAutoCodePart partParam = new SysAutoCodePart();
+        partParam.setRuleId(rule.getId());
+        List<SysAutoCodePart> parts = iAutoCodePartService.listPart(partParam);
+        List<SysAutoCodePart> collect = parts.stream().filter(part->PartTypeEnum.PART_TYPE_SERIALNO.getCode().equals(part.getPartType())).collect(Collectors.toList());
+
+        Assert.isTrue(collect.size()<2,"编码规则[{}]流水号方式的组成只能存在一个",ruleCode);
+
+        StringBuilder buff = new StringBuilder();
+        parts.forEach(codePart ->{
+            codePart.setInputCharacter(inputCharacter);
+            //根据当前组成部分,获取当前组成部分的结果
+            String partStr = partTypeHandler.choiceExecute(codePart);
+
+            //如果是流水号部分,则进行记录
+            if(StringUtils.equals(codePart.getPartType(),PartTypeEnum.PART_TYPE_SERIALNO.getCode())){
+                lastSerialNo = partStr;
+            }
+            //将获取到的部分组装进整体编码中
+            buff.append(partStr);
+        });
+
+        Assert.notBlank(buff.toString(),"规则:[{}]生成的编码为空!",ruleCode);
+
+        String autoCode = paddingStr(rule,buff);
+
+        //将生成结果保存到数据库
+        saveAutoCodeResult(rule,autoCode,inputCharacter);
+        return autoCode;
+    }
+
+    /**
+     * 根据编码规则的配置进行补齐操作
+     * @param rule
+     * @param sb
+     * @return
+     */
+    private String paddingStr(SysAutoCodeRule rule,StringBuilder sb){
+        String isPadding = rule.getIsPadded();
+        if("Y".equals(isPadding)){
+            int maxLength = rule.getMaxLength();
+            String paddingChar = rule.getPaddedChar();
+            StringBuilder resultStr = new StringBuilder();
+            long length = maxLength - sb.length();
+            Assert.isTrue(maxLength>sb.length(),"生成的编码[{}]已经超出规则中配置的最大长度:[{}]",sb.toString(),maxLength);
+
+            if("L".equals(rule.getPaddedMethod())){
+                //左补齐
+                //使用指定字符补齐左侧后,再将生成的编码添加到右侧
+                for(;length>0;length --){
+                    resultStr.append(paddingChar);
+                }
+                resultStr.append(sb);
+            }else{
+                //右补齐
+                //将生成的编码添加到左侧后,再使用指定字符补齐右侧
+                resultStr.append(sb);
+                for(;length>0;length --){
+                    resultStr.append(paddingChar);
+                }
+            }
+            return resultStr.toString();
+        }
+        return sb.toString(); //如果不需要补齐,则直接返回
+    }
+
+    private void saveAutoCodeResult(SysAutoCodeRule rule,String autoCode,String inputChar){
+        Boolean flag = threadLocal.get(); //针对当前线程的判断 flag = true则数据库中没有当前规则的生成记录
+        if(flag !=null && flag){
+            SysAutoCodeResult rs = new SysAutoCodeResult();
+            rs.setRuleId(rule.getId());
+            rs.setGenDate(DateUtil.format(LocalDateTime.now(),"yyyyMMddHHmmss"));
+            rs.setLastResult(autoCode);
+            rs.setGenIndex(1);
+            rs.setLastSerialNo(Integer.parseInt(lastSerialNo));
+            rs.setLastInputChar(inputChar);
+            iAutoCodeResultService.save(rs);
+        }else{
+            //直接更新对应的记录(我们默认非流水号模式下一个RULE_CODE只有一种方式)
+            SysAutoCodeResult bo = new SysAutoCodeResult();
+            bo.setRuleId(rule.getId());
+            List<SysAutoCodeResult> results = iAutoCodeResultService.selectByAutoCodeResult(bo);
+            Assert.notEmpty(results,"未查询到规则{[]}对应的结果记录",rule.getRuleCode());
+            SysAutoCodeResult rs = results.get(0);
+            rs.setLastResult(autoCode);
+            rs.setGenDate(DateUtil.format(LocalDateTime.now(),"yyyyMMddHHmmss"));
+            rs.setGenIndex(rs.getGenIndex()+1);
+            rs.setLastSerialNo(Integer.parseInt(lastSerialNo));
+            rs.setLastInputChar(inputChar);
+            iAutoCodeResultService.updateById(rs);
+        }
+
+    }
+}

+ 44 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/CycleMethodMnum.java

@@ -0,0 +1,44 @@
+package org.jeecg.modules.util;
+
+public enum CycleMethodMnum {
+
+    CYCLE_METHOD_YEAR("YEAR","按年"),
+    CYCLE_METHOD_MONTH("MONTH","按月"),
+    CYCLE_METHOD_DAY("DAY","按日"),
+    CYCLE_METHOD_HOUR("HOUR","按小时"),
+    CYCLE_METHOD_MINUTE("MINUTE","按分钟"),
+    CYCLE_METHOD_OTHER("OTHER","其他");
+
+    private String code;
+    private String name;
+
+    CycleMethodMnum(String code, String name){
+        this.code=code;
+        this.name=name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public static CycleMethodMnum getByCode(String code){
+        for(CycleMethodMnum value : CycleMethodMnum.values()){
+            if(value.getCode().equals(code)){
+                return value;
+            }
+        }
+        return CYCLE_METHOD_OTHER;
+    }
+}

+ 42 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeEnum.java

@@ -0,0 +1,42 @@
+package org.jeecg.modules.util;
+
+public enum PartTypeEnum {
+
+    PART_TYPE_INPUTCHAR("INPUTCHAR","传入字符",0),
+    PART_TYPE_NOWDATE("NOWDATE","当前日期",1),
+    PART_TYPE_FIXCHAR("FIXCHAR","固定字符",2),
+    PART_TYPE_SERIALNO("SERIALNO","流水号",3),
+    PART_TYPE_OTHER("OTHER","其他",99);
+
+    private final String code;
+    private final String name;
+    private final Integer beanIndex;
+
+    PartTypeEnum(String code, String name, Integer beanIndex){
+        this.code = code;
+        this.name = name;
+        this.beanIndex = beanIndex;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getBeanIndex() {
+        return beanIndex;
+    }
+
+    public static PartTypeEnum getByCode(String code){
+        for(PartTypeEnum value: PartTypeEnum.values()){
+            if(value.getCode().equals(code)){
+                return value;
+            }
+        }
+        return PART_TYPE_OTHER;
+    }
+
+}

+ 14 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeFixCharHandler.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.util;
+
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Component
+@Order(2)
+public class PartTypeFixCharHandler implements PartTypeTemplate {
+    @Override
+    public String partHandle(SysAutoCodePart sysAutoCodePart) {
+        return sysAutoCodePart.getFixCharacter();
+    }
+}

+ 22 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeHandler.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.util;
+
+
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+@Component
+public class PartTypeHandler {
+
+    @Autowired
+    List<PartTypeTemplate> partTypeTemplates;
+
+    public String choiceExecute(SysAutoCodePart sysAutoCodePart){
+        String partType = sysAutoCodePart.getPartType();
+        return partTypeTemplates.get(PartTypeEnum.getByCode(partType).getBeanIndex()).partHandle(sysAutoCodePart);
+    }
+
+}

+ 20 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeInputCharHandler.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.util;
+
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+@Component
+@Order(0)
+public class PartTypeInputCharHandler implements PartTypeTemplate {
+
+
+    @Override
+    public String partHandle(SysAutoCodePart sysAutoCodePart) {
+        String inputCharacter = sysAutoCodePart.getInputCharacter();
+        Assert.notNull(inputCharacter,"编码规则传入字符不能为空!");
+        Assert.isTrue(inputCharacter.length() == sysAutoCodePart.getPartLength(),"传入字符的长度错误!");
+        return inputCharacter;
+    }
+}

+ 20 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeNowDateHandler.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.util;
+
+
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Component
+@Order(1)
+public class PartTypeNowDateHandler implements PartTypeTemplate {
+
+    @Override
+    public String partHandle(SysAutoCodePart sysAutoCodePart) {
+        String formatDate = sysAutoCodePart.getDateFormat();
+        return DateTimeFormatter.ofPattern(formatDate).format(LocalDateTime.now());
+    }
+}

+ 101 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeSerialNoHandler.java

@@ -0,0 +1,101 @@
+package org.jeecg.modules.util;
+
+import cn.hutool.core.collection.CollectionUtil;
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+import org.jeecg.modules.sysAutoCodeResult.entity.SysAutoCodeResult;
+import org.jeecg.modules.sysAutoCodeResult.service.ISysAutoCodeResultService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Component
+@Order(3)
+public class PartTypeSerialNoHandler implements PartTypeTemplate {
+
+    @Autowired
+    private ISysAutoCodeResultService iAutoCodeResultService;
+
+    @Override
+    public String partHandle(SysAutoCodePart sysAutoCodePart) {
+
+        if("Y".equals(sysAutoCodePart.getCycleFlag())){
+            return cycleY(sysAutoCodePart);
+        }else{
+            return cycleN(sysAutoCodePart);
+        }
+    }
+
+    //循环方式(要传入当前的循环规则参数)
+    private  String cycleY(SysAutoCodePart sysAutoCodePart){
+        String method = sysAutoCodePart.getCycleMethod();
+        String param ="";
+        if(CycleMethodMnum.CYCLE_METHOD_OTHER.getCode().equals(method)){
+            param = sysAutoCodePart.getInputCharacter();
+        }else{
+            switch (CycleMethodMnum.getByCode(method)){
+                case CYCLE_METHOD_YEAR:
+                    param = cn.hutool.core.date.DateUtil.format(LocalDateTime.now(),"yyyy");
+                    break;
+                case CYCLE_METHOD_MONTH:
+                    param = cn.hutool.core.date.DateUtil.format(LocalDateTime.now(),"yyyyMM");
+                    break;
+                case CYCLE_METHOD_DAY:
+                    param = cn.hutool.core.date.DateUtil.format(LocalDateTime.now(),"yyyyMMdd");
+                    break;
+                case CYCLE_METHOD_HOUR:
+                    param = cn.hutool.core.date.DateUtil.format(LocalDateTime.now(),"yyyyMMddHH");
+                    break;
+                case CYCLE_METHOD_MINUTE:
+                    param = cn.hutool.core.date.DateUtil.format(LocalDateTime.now(),"yyyyMMddHHmm");
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        List<SysAutoCodeResult> rs = getAutoCodeResult(sysAutoCodePart.getRuleId(),param,method);
+        if(CollectionUtil.isNotEmpty(rs)){
+            //如果在编码记录表中有记录,则在最后一个流水号上加上步长,返回新的流水号
+            AutoCodeUtil.threadLocal.set(false);
+            Integer lastSerialNo = rs.get(0).getLastSerialNo();
+            return String.format("%0"+sysAutoCodePart.getPartLength()+"d",lastSerialNo+sysAutoCodePart.getSeriaStep());
+        }else {
+            //如果在编码记录表中不存在,则直接返回起始流水号
+            AutoCodeUtil.threadLocal.set(true);
+            return String.format("%0"+sysAutoCodePart.getPartLength()+"d",sysAutoCodePart.getSeriaStartNo());
+        }
+    }
+
+    //不循环方式
+    private String cycleN(SysAutoCodePart sysAutoCodePart){
+        List<SysAutoCodeResult> rs = getAutoCodeResult(sysAutoCodePart.getRuleId(),"","");
+        if(CollectionUtil.isNotEmpty(rs)){
+            //存在记录则在当前记录加上步长
+            Integer lastSerialNo = rs.get(0).getLastSerialNo();
+            return String.format("%0"+sysAutoCodePart.getPartLength()+"d",lastSerialNo+sysAutoCodePart.getSeriaStep());
+        }else{
+            //不存在记录则从头开始
+            AutoCodeUtil.threadLocal.set(true);
+            return String.format("%0"+sysAutoCodePart.getPartLength()+"d",sysAutoCodePart.getSeriaStartNo());
+        }
+
+    }
+
+    //从编码结果记录表中查找当前指定循环规则的流水号记录
+    private List<SysAutoCodeResult> getAutoCodeResult(String ruleId,String param,String cycleMethod){
+        SysAutoCodeResult queryParam = new SysAutoCodeResult();
+        queryParam.setRuleId(ruleId);//ruleId要一致
+
+        if(CycleMethodMnum.CYCLE_METHOD_OTHER.getCode().equals(cycleMethod)){
+            //如果循环方式是手工输入指定的字符
+            queryParam.setLastInputChar(param);
+        }else{
+            //如果循环方式是按格式化的日期
+            queryParam.setGenDate(param);//这里的param将按照 gen_date like #{param}+'%' 的方式进行模糊查询,数据库中记录的永远都是yyyMMddHHmmss格式的
+        }
+        return iAutoCodeResultService.selectByAutoCodeResult(queryParam);
+    }
+}

+ 13 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/PartTypeTemplate.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.util;
+
+
+import org.jeecg.modules.sysAutoCodePart.entity.SysAutoCodePart;
+
+public interface PartTypeTemplate {
+    /**
+     * 分段的处理规则
+     * @param sysAutoCodePart
+     * @return
+     */
+    String partHandle(SysAutoCodePart sysAutoCodePart);
+}

+ 125 - 0
jeecg_module_ems/src/main/java/org/jeecg/modules/util/UserConstants.java

@@ -0,0 +1,125 @@
+package org.jeecg.modules.util;
+
+/**
+ * 用户常量信息
+ *
+ * @author ruoyi
+ */
+public class UserConstants
+{
+    /**
+     * 平台内系统用户的唯一标志
+     */
+    public static final String SYS_USER = "SYS_USER";
+
+    /** 正常状态 */
+    public static final String NORMAL = "0";
+
+    /** 异常状态 */
+    public static final String EXCEPTION = "1";
+
+    /** 用户封禁状态 */
+    public static final String USER_DISABLE = "1";
+
+    /** 角色封禁状态 */
+    public static final String ROLE_DISABLE = "1";
+
+    /** 部门正常状态 */
+    public static final String DEPT_NORMAL = "0";
+
+    /** 部门停用状态 */
+    public static final String DEPT_DISABLE = "1";
+
+    /** 字典正常状态 */
+    public static final String DICT_NORMAL = "0";
+
+    /** 是否为系统默认(是) */
+    public static final String YES = "Y";
+
+    /** 是否菜单外链(是) */
+    public static final String YES_FRAME = "0";
+
+    /** 是否菜单外链(否) */
+    public static final String NO_FRAME = "1";
+
+    /** 菜单类型(目录) */
+    public static final String TYPE_DIR = "M";
+
+    /** 菜单类型(菜单) */
+    public static final String TYPE_MENU = "C";
+
+    /** 菜单类型(按钮) */
+    public static final String TYPE_BUTTON = "F";
+
+    /** Layout组件标识 */
+    public final static String LAYOUT = "Layout";
+
+    /** ParentView组件标识 */
+    public final static String PARENT_VIEW = "ParentView";
+
+    /** InnerLink组件标识 */
+    public final static String INNER_LINK = "InnerLink";
+
+    /** 校验返回结果码 */
+    public final static String UNIQUE = "0";
+    public final static String NOT_UNIQUE = "1";
+
+    /**
+     * 用户名长度限制
+     */
+    public static final int USERNAME_MIN_LENGTH = 2;
+    public static final int USERNAME_MAX_LENGTH = 20;
+
+    /**
+     * 密码长度限制
+     */
+    public static final int PASSWORD_MIN_LENGTH = 5;
+    public static final int PASSWORD_MAX_LENGTH = 20;
+
+    /**
+     * 各种业务单据的内定自动编码规则标识
+     */
+    public static final String ITEM_TYPE_CODE ="ITEM_TYPE_CODE";
+    public static final String ITEM_CODE ="ITEM_CODE";
+    // 能源计划编码规则
+    public static final String EMSENERGYQUOTA_CODE="EMSENERGYQUOTA_CODE";
+    // 维修工单编码规则
+    public static final String CMMSREPAIR_CODE="CMMSREPAIR_CODE";
+    // 保养计划编码规则
+    public static final String CMMSUPKEEPPLAN_CODE="CMMSUPKEEPPLAN_CODE";
+    // 保养工单编码规则
+    public static final String CMMSUPKEEP_CODE="CMMSUPKEEP_CODE";
+    // 巡检项编码规则
+    public static final String CMMSINSPECTITEM_CODE="CMMSINSPECTITEM_CODE";
+    // 巡检内容编码规则
+    public static final String CMMSINSPECTCONT_CODE="CMMSINSPECTCONT_CODE";
+    // 巡检路线编码规则
+    public static final String CMMSINSPECTLINE_CODE="CMMSINSPECTLINE_CODE";
+    // 巡检计划编码规则
+    public static final String CMMSINSPECTPLAN_CODE="CMMSINSPECTPLAN_CODE";
+    // 巡检工单编码规则
+    public static final String CMMSINSPECT_CODE="CMMSINSPECT_CODE";
+    // 设备编码规则
+    public static final String MACHINERY_CODE="MACHINERY_CODE";
+    // 点检项编码规则
+    public static final String CMMSSPOTCHECKITEM_CODE="CMMSSPOTCHECKITEM_CODE";
+    // 点检内容编码规则
+    public static final String CMMSSPOTCHECKCONTENT_CODE="CMMSSPOTCHECKCONTENT_CODE";
+    // 区域编码规则
+    public static final String EMSSPACE_CODE="EMSSPACE_CODE";
+
+
+
+    public static final String TASK_CODE="TASK_CODE";
+    public static final String DEFECT_CODE = "DEFECT_CODE";
+
+    /**
+     * 单据的状态类型
+     */
+    public static final String ORDER_STATUS_PREPARE="PREPARE";
+    public static final String ORDER_STATUS_CONFIRMED="CONFIRMED";
+    public static final String ORDER_STATUS_APPROVING="APPROVING";
+    public static final String ORDER_STATUS_APPROVED="APPROVED";
+    public static final String ORDER_STATUS_FINISHED="FINISHED";
+
+}