From e8a215989fdd9dd6f24f46bf51f60174a1088b5b Mon Sep 17 00:00:00 2001
From: zenglf <18502938215@163.com>
Date: 星期三, 18 十月 2023 09:32:30 +0800
Subject: [PATCH] 操作证管理 操作证申请、操作证计分规则提交

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateDetailMapper.java                 |   31 
 lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml                                      |   10 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/DeductionItem.java                                    |   54 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApply.java                        |  100 +++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/DeductionItemMapper.java                              |   17 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateApplyController.java          |  265 ++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyDetailService.java         |   22 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateDetailServiceImpl.java      |   27 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyDetailMapper.java            |   31 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyMapper.xml               |    5 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateDetailMapper.xml              |   16 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IDeductionItemService.java                           |   14 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyService.java               |   48 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyMapper.java                  |   17 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificate.java                             |  112 +++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApplyDetail.java                  |  103 +++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificatePage.java                             |  130 +++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateDetail.java                       |   71 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java               |  265 ++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/DeductionItemMapper.xml                           |    5 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateMapper.xml                    |    5 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyDetailMapper.xml         |   16 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificateApplyPage.java                        |  117 +++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateService.java                    |   48 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateServiceImpl.java            |   77 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/DeductionItemServiceImpl.java                   |   19 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyDetailServiceImpl.java |   27 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateDetailService.java              |   22 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DeductionItemController.java                      |  177 +++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateMapper.java                       |   17 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyServiceImpl.java       |   77 ++
 31 files changed, 1,943 insertions(+), 2 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DeductionItemController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DeductionItemController.java
new file mode 100644
index 0000000..5542aa2
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DeductionItemController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.eam.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.eam.entity.DeductionItem;
+import org.jeecg.modules.eam.service.IDeductionItemService;
+
+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:   2023-10-17
+ * @Version: V1.0
+ */
+@Api(tags="鎿嶄綔璁″垎瑙勫垯")
+@RestController
+@RequestMapping("/eam/deductionItem")
+@Slf4j
+public class DeductionItemController extends JeecgController<DeductionItem, IDeductionItemService> {
+	@Autowired
+	private IDeductionItemService deductionItemService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param deductionItem
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璁″垎瑙勫垯-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璁″垎瑙勫垯-鍒嗛〉鍒楄〃鏌ヨ", notes="鎿嶄綔璁″垎瑙勫垯-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<DeductionItem>> queryPageList(DeductionItem deductionItem,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<DeductionItem> queryWrapper = QueryGenerator.initQueryWrapper(deductionItem, req.getParameterMap());
+		Page<DeductionItem> page = new Page<DeductionItem>(pageNo, pageSize);
+		IPage<DeductionItem> pageList = deductionItemService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param deductionItem
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璁″垎瑙勫垯-娣诲姞")
+	@ApiOperation(value="鎿嶄綔璁″垎瑙勫垯-娣诲姞", notes="鎿嶄綔璁″垎瑙勫垯-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_base_deduction_item:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody DeductionItem deductionItem) {
+		deductionItemService.save(deductionItem);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param deductionItem
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璁″垎瑙勫垯-缂栬緫")
+	@ApiOperation(value="鎿嶄綔璁″垎瑙勫垯-缂栬緫", notes="鎿嶄綔璁″垎瑙勫垯-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_base_deduction_item:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody DeductionItem deductionItem) {
+		deductionItemService.updateById(deductionItem);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璁″垎瑙勫垯-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鎿嶄綔璁″垎瑙勫垯-閫氳繃id鍒犻櫎", notes="鎿嶄綔璁″垎瑙勫垯-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_base_deduction_item:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		deductionItemService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璁″垎瑙勫垯-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鎿嶄綔璁″垎瑙勫垯-鎵归噺鍒犻櫎", notes="鎿嶄綔璁″垎瑙勫垯-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_base_deduction_item:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.deductionItemService.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<DeductionItem> queryById(@RequestParam(name="id",required=true) String id) {
+		DeductionItem deductionItem = deductionItemService.getById(id);
+		if(deductionItem==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(deductionItem);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param deductionItem
+    */
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_base_deduction_item:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, DeductionItem deductionItem) {
+        return super.exportXls(request, deductionItem, DeductionItem.class, "鎿嶄綔璁″垎瑙勫垯");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("mom_eam_base_deduction_item:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, DeductionItem.class);
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateApplyController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateApplyController.java
new file mode 100644
index 0000000..336cd01
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateApplyController.java
@@ -0,0 +1,265 @@
+package org.jeecg.modules.eam.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+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.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import org.jeecg.modules.eam.entity.OperationCertificateApply;
+import org.jeecg.modules.eam.vo.OperationCertificateApplyPage;
+import org.jeecg.modules.eam.service.IOperationCertificateApplyService;
+import org.jeecg.modules.eam.service.IOperationCertificateApplyDetailService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+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 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:   2023-10-17
+ * @Version: V1.0
+ */
+@Api(tags="鎿嶄綔璇佺敵璇疯〃")
+@RestController
+@RequestMapping("/eam/operationCertificateApply")
+@Slf4j
+public class OperationCertificateApplyController {
+	@Autowired
+	private IOperationCertificateApplyService operationCertificateApplyService;
+	@Autowired
+	private IOperationCertificateApplyDetailService operationCertificateApplyDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param operationCertificateApply
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璇佺敵璇疯〃-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇疯〃-鍒嗛〉鍒楄〃鏌ヨ", notes="鎿嶄綔璇佺敵璇疯〃-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<OperationCertificateApply>> queryPageList(OperationCertificateApply operationCertificateApply,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OperationCertificateApply> queryWrapper = QueryGenerator.initQueryWrapper(operationCertificateApply, req.getParameterMap());
+		Page<OperationCertificateApply> page = new Page<OperationCertificateApply>(pageNo, pageSize);
+		IPage<OperationCertificateApply> pageList = operationCertificateApplyService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param operationCertificateApplyPage
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佺敵璇疯〃-娣诲姞")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇疯〃-娣诲姞", notes="鎿嶄綔璇佺敵璇疯〃-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate_apply:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OperationCertificateApplyPage operationCertificateApplyPage) {
+		OperationCertificateApply operationCertificateApply = new OperationCertificateApply();
+		BeanUtils.copyProperties(operationCertificateApplyPage, operationCertificateApply);
+		operationCertificateApplyService.saveMain(operationCertificateApply, operationCertificateApplyPage.getOperationCertificateApplyDetailList());
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param operationCertificateApplyPage
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佺敵璇疯〃-缂栬緫")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇疯〃-缂栬緫", notes="鎿嶄綔璇佺敵璇疯〃-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate_apply:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OperationCertificateApplyPage operationCertificateApplyPage) {
+		OperationCertificateApply operationCertificateApply = new OperationCertificateApply();
+		BeanUtils.copyProperties(operationCertificateApplyPage, operationCertificateApply);
+		OperationCertificateApply operationCertificateApplyEntity = operationCertificateApplyService.getById(operationCertificateApply.getId());
+		if(operationCertificateApplyEntity==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		operationCertificateApplyService.updateMain(operationCertificateApply, operationCertificateApplyPage.getOperationCertificateApplyDetailList());
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佺敵璇疯〃-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇疯〃-閫氳繃id鍒犻櫎", notes="鎿嶄綔璇佺敵璇疯〃-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate_apply:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		operationCertificateApplyService.delMain(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佺敵璇疯〃-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇疯〃-鎵归噺鍒犻櫎", notes="鎿嶄綔璇佺敵璇疯〃-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate_apply:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.operationCertificateApplyService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�");
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璇佺敵璇疯〃-閫氳繃id鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇疯〃-閫氳繃id鏌ヨ", notes="鎿嶄綔璇佺敵璇疯〃-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<OperationCertificateApply> queryById(@RequestParam(name="id",required=true) String id) {
+		OperationCertificateApply operationCertificateApply = operationCertificateApplyService.getById(id);
+		if(operationCertificateApply==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(operationCertificateApply);
+
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璇佺敵璇锋槑缁嗚〃閫氳繃涓昏〃ID鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璇佺敵璇锋槑缁嗚〃涓昏〃ID鏌ヨ", notes="鎿嶄綔璇佺敵璇锋槑缁嗚〃-閫氫富琛↖D鏌ヨ")
+	@GetMapping(value = "/queryOperationCertificateApplyDetailByMainId")
+	public Result<List<OperationCertificateApplyDetail>> queryOperationCertificateApplyDetailListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OperationCertificateApplyDetail> operationCertificateApplyDetailList = operationCertificateApplyDetailService.selectByMainId(id);
+		return Result.OK(operationCertificateApplyDetailList);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param operationCertificateApply
+    */
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate_apply:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OperationCertificateApply operationCertificateApply) {
+      // Step.1 缁勮鏌ヨ鏉′欢鏌ヨ鏁版嵁
+      QueryWrapper<OperationCertificateApply> queryWrapper = QueryGenerator.initQueryWrapper(operationCertificateApply, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //閰嶇疆閫変腑鏁版嵁鏌ヨ鏉′欢
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 鑾峰彇瀵煎嚭鏁版嵁
+      List<OperationCertificateApply> operationCertificateApplyList = operationCertificateApplyService.list(queryWrapper);
+
+      // Step.3 缁勮pageList
+      List<OperationCertificateApplyPage> pageList = new ArrayList<OperationCertificateApplyPage>();
+      for (OperationCertificateApply main : operationCertificateApplyList) {
+          OperationCertificateApplyPage vo = new OperationCertificateApplyPage();
+          BeanUtils.copyProperties(main, vo);
+          List<OperationCertificateApplyDetail> operationCertificateApplyDetailList = operationCertificateApplyDetailService.selectByMainId(main.getId());
+          vo.setOperationCertificateApplyDetailList(operationCertificateApplyDetailList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 瀵煎嚭Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "鎿嶄綔璇佺敵璇疯〃鍒楄〃");
+      mv.addObject(NormalExcelConstants.CLASS, OperationCertificateApplyPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("鎿嶄綔璇佺敵璇疯〃鏁版嵁", "瀵煎嚭浜�:"+sysUser.getRealname(), "鎿嶄綔璇佺敵璇疯〃"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate_apply:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<OperationCertificateApplyPage> list = ExcelImportUtil.importExcel(file.getInputStream(), OperationCertificateApplyPage.class, params);
+              for (OperationCertificateApplyPage page : list) {
+                  OperationCertificateApply po = new OperationCertificateApply();
+                  BeanUtils.copyProperties(page, po);
+                  operationCertificateApplyService.saveMain(po, page.getOperationCertificateApplyDetailList());
+              }
+              return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁�:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("鏂囦欢瀵煎叆澶辫触:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("鏂囦欢瀵煎叆澶辫触锛�");
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java
new file mode 100644
index 0000000..601d2a2
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java
@@ -0,0 +1,265 @@
+package org.jeecg.modules.eam.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+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.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import org.jeecg.modules.eam.entity.OperationCertificate;
+import org.jeecg.modules.eam.vo.OperationCertificatePage;
+import org.jeecg.modules.eam.service.IOperationCertificateService;
+import org.jeecg.modules.eam.service.IOperationCertificateDetailService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+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 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:   2023-10-17
+ * @Version: V1.0
+ */
+@Api(tags="鎿嶄綔璇佷功绠$悊")
+@RestController
+@RequestMapping("/eam/operationCertificate")
+@Slf4j
+public class OperationCertificateController {
+	@Autowired
+	private IOperationCertificateService operationCertificateService;
+	@Autowired
+	private IOperationCertificateDetailService operationCertificateDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param operationCertificate
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璇佷功绠$悊-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璇佷功绠$悊-鍒嗛〉鍒楄〃鏌ヨ", notes="鎿嶄綔璇佷功绠$悊-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<OperationCertificate>> queryPageList(OperationCertificate operationCertificate,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OperationCertificate> queryWrapper = QueryGenerator.initQueryWrapper(operationCertificate, req.getParameterMap());
+		Page<OperationCertificate> page = new Page<OperationCertificate>(pageNo, pageSize);
+		IPage<OperationCertificate> pageList = operationCertificateService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param operationCertificatePage
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佷功绠$悊-娣诲姞")
+	@ApiOperation(value="鎿嶄綔璇佷功绠$悊-娣诲姞", notes="鎿嶄綔璇佷功绠$悊-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OperationCertificatePage operationCertificatePage) {
+		OperationCertificate operationCertificate = new OperationCertificate();
+		BeanUtils.copyProperties(operationCertificatePage, operationCertificate);
+		operationCertificateService.saveMain(operationCertificate, operationCertificatePage.getOperationCertificateDetailList());
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param operationCertificatePage
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佷功绠$悊-缂栬緫")
+	@ApiOperation(value="鎿嶄綔璇佷功绠$悊-缂栬緫", notes="鎿嶄綔璇佷功绠$悊-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OperationCertificatePage operationCertificatePage) {
+		OperationCertificate operationCertificate = new OperationCertificate();
+		BeanUtils.copyProperties(operationCertificatePage, operationCertificate);
+		OperationCertificate operationCertificateEntity = operationCertificateService.getById(operationCertificate.getId());
+		if(operationCertificateEntity==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		operationCertificateService.updateMain(operationCertificate, operationCertificatePage.getOperationCertificateDetailList());
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佷功绠$悊-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鎿嶄綔璇佷功绠$悊-閫氳繃id鍒犻櫎", notes="鎿嶄綔璇佷功绠$悊-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		operationCertificateService.delMain(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鎿嶄綔璇佷功绠$悊-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鎿嶄綔璇佷功绠$悊-鎵归噺鍒犻櫎", notes="鎿嶄綔璇佷功绠$悊-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.operationCertificateService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�");
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璇佷功绠$悊-閫氳繃id鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璇佷功绠$悊-閫氳繃id鏌ヨ", notes="鎿嶄綔璇佷功绠$悊-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<OperationCertificate> queryById(@RequestParam(name="id",required=true) String id) {
+		OperationCertificate operationCertificate = operationCertificateService.getById(id);
+		if(operationCertificate==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(operationCertificate);
+
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鎿嶄綔璇佺鐞嗘槑缁嗛�氳繃涓昏〃ID鏌ヨ")
+	@ApiOperation(value="鎿嶄綔璇佺鐞嗘槑缁嗕富琛↖D鏌ヨ", notes="鎿嶄綔璇佺鐞嗘槑缁�-閫氫富琛↖D鏌ヨ")
+	@GetMapping(value = "/queryOperationCertificateDetailByMainId")
+	public Result<List<OperationCertificateDetail>> queryOperationCertificateDetailListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OperationCertificateDetail> operationCertificateDetailList = operationCertificateDetailService.selectByMainId(id);
+		return Result.OK(operationCertificateDetailList);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param operationCertificate
+    */
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OperationCertificate operationCertificate) {
+      // Step.1 缁勮鏌ヨ鏉′欢鏌ヨ鏁版嵁
+      QueryWrapper<OperationCertificate> queryWrapper = QueryGenerator.initQueryWrapper(operationCertificate, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //閰嶇疆閫変腑鏁版嵁鏌ヨ鏉′欢
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 鑾峰彇瀵煎嚭鏁版嵁
+      List<OperationCertificate> operationCertificateList = operationCertificateService.list(queryWrapper);
+
+      // Step.3 缁勮pageList
+      List<OperationCertificatePage> pageList = new ArrayList<OperationCertificatePage>();
+      for (OperationCertificate main : operationCertificateList) {
+          OperationCertificatePage vo = new OperationCertificatePage();
+          BeanUtils.copyProperties(main, vo);
+          List<OperationCertificateDetail> operationCertificateDetailList = operationCertificateDetailService.selectByMainId(main.getId());
+          vo.setOperationCertificateDetailList(operationCertificateDetailList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 瀵煎嚭Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "鎿嶄綔璇佷功绠$悊鍒楄〃");
+      mv.addObject(NormalExcelConstants.CLASS, OperationCertificatePage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("鎿嶄綔璇佷功绠$悊鏁版嵁", "瀵煎嚭浜�:"+sysUser.getRealname(), "鎿嶄綔璇佷功绠$悊"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<OperationCertificatePage> list = ExcelImportUtil.importExcel(file.getInputStream(), OperationCertificatePage.class, params);
+              for (OperationCertificatePage page : list) {
+                  OperationCertificate po = new OperationCertificate();
+                  BeanUtils.copyProperties(page, po);
+                  operationCertificateService.saveMain(po, page.getOperationCertificateDetailList());
+              }
+              return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁�:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("鏂囦欢瀵煎叆澶辫触:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("鏂囦欢瀵煎叆澶辫触锛�");
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/DeductionItem.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/DeductionItem.java
new file mode 100644
index 0000000..ac8cdb9
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/DeductionItem.java
@@ -0,0 +1,54 @@
+package org.jeecg.modules.eam.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.jeecg.common.system.base.entity.JeecgEntity;
+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:   2023-10-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("mom_eam_base_deduction_item")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="mom_eam_base_deduction_item瀵硅薄", description="鎿嶄綔璁″垎瑙勫垯")
+public class DeductionItem extends JeecgEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+	/**缂栧彿*/
+	@Excel(name = "缂栧彿", width = 15)
+    @ApiModelProperty(value = "缂栧彿")
+    private String num;
+	/**鍐呭*/
+	@Excel(name = "鍐呭", width = 15)
+    @ApiModelProperty(value = "鍐呭")
+    private String content;
+	/**鍒嗘暟*/
+	@Excel(name = "鍒嗘暟", width = 15)
+    @ApiModelProperty(value = "鍒嗘暟")
+    private Integer deductionScore;
+	/**鍒涘缓浜�*/
+
+	/**鎵�灞為儴闂�*/
+    @ApiModelProperty(value = "鎵�灞為儴闂�")
+    private String sysOrgCode;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificate.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificate.java
new file mode 100644
index 0000000..b1f80de
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificate.java
@@ -0,0 +1,112 @@
+package org.jeecg.modules.eam.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+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.common.constant.CommonConstant;
+import org.jeecg.common.system.base.entity.JeecgEntity;
+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;
+
+/**
+ * @Description: 鎿嶄綔璇佷功绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@ApiModel(value="mom_eam_operation_certificate瀵硅薄", description="鎿嶄綔璇佷功绠$悊")
+@Data
+@TableName("mom_eam_operation_certificate")
+public class OperationCertificate  extends JeecgEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+	/**鎿嶄綔璇佺紪鍙�*/
+	@Excel(name = "鎿嶄綔璇佺紪鍙�", width = 15)
+    @ApiModelProperty(value = "鎿嶄綔璇佺紪鍙�")
+    private String num;
+	/**鐢ㄦ埛ID*/
+	@Excel(name = "鐢ㄦ埛ID", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
+    @ApiModelProperty(value = "鐢ㄦ埛ID")
+    private String userId;
+	/**鍙戣瘉鏃ユ湡*/
+	@Excel(name = "鍙戣瘉鏃ユ湡", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍙戣瘉鏃ユ湡")
+    private Date issueDate;
+	/**寮�濮嬫椂闂�*/
+	@Excel(name = "寮�濮嬫椂闂�", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    private Date startTime;
+	/**缁撴潫鏃堕棿*/
+	@Excel(name = "缁撴潫鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    private Date endTime;
+	/**褰撳墠鍛ㄦ湡鍒嗘暟*/
+	@Excel(name = "褰撳墠鍛ㄦ湡鍒嗘暟", width = 15)
+    @ApiModelProperty(value = "褰撳墠鍛ㄦ湡鍒嗘暟")
+    private Integer currentCycleScore;
+	/**璁惧ids*/
+	@Excel(name = "璁惧ids", width = 15, dictTable = "mom_eam_equipment", dicText = "num", dicCode = "id")
+    @Dict(dictTable = "mom_eam_equipment", dicText = "num", dicCode = "id")
+    @ApiModelProperty(value = "璁惧ids")
+    private String equipmentIds;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+	/**绉熸埛ID*/
+	@Excel(name = "绉熸埛ID", width = 15)
+    @ApiModelProperty(value = "绉熸埛ID")
+    private String tenantId;
+    /**鍒犻櫎鏍囧織*/
+    @Excel(name = "鍒犻櫎鏍囧織", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+    /**鐘舵��*/
+    @Excel(name = "鐘舵��", width = 15, dicCode = "certificate_status")
+    @Dict(dicCode = "certificate_status")
+    @ApiModelProperty(value = "鐘舵��")
+    private String status   ;
+	/**enterpriseId*/
+	@Excel(name = "enterpriseId", width = 15)
+    @ApiModelProperty(value = "enterpriseId")
+    private String enterpriseId;
+	/**灞炴�у瓧娈�1*/
+	@Excel(name = "灞炴�у瓧娈�1", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�1")
+    private String uda1;
+	/**灞炴�у瓧娈�2*/
+	@Excel(name = "灞炴�у瓧娈�2", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�2")
+    private String uda2;
+	/**灞炴�у瓧娈�3*/
+	@Excel(name = "灞炴�у瓧娈�3", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�3")
+    private String uda3;
+	/**灞炴�у瓧娈�4*/
+	@Excel(name = "灞炴�у瓧娈�4", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�4")
+    private String uda4;
+	/**灞炴�у瓧娈�5*/
+	@Excel(name = "灞炴�у瓧娈�5", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�5")
+    private String uda5;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApply.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApply.java
new file mode 100644
index 0000000..4742e6b
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApply.java
@@ -0,0 +1,100 @@
+package org.jeecg.modules.eam.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+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.common.constant.CommonConstant;
+import org.jeecg.common.system.base.entity.JeecgEntity;
+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;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇疯〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@ApiModel(value="mom_eam_operation_certificate_apply瀵硅薄", description="鎿嶄綔璇佺敵璇疯〃")
+@Data
+@TableName("mom_eam_operation_certificate_apply")
+public class OperationCertificateApply extends JeecgEntity  implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+	/**鐢宠鍗曠紪鍙�*/
+	@Excel(name = "鐢宠鍗曠紪鍙�", width = 15)
+    @ApiModelProperty(value = "鐢宠鍗曠紪鍙�")
+    private String num;
+	/**绫诲瀷*/
+	@Excel(name = "绫诲瀷", width = 15, dicCode = "apply_type")
+    @Dict(dicCode = "apply_type")
+    @ApiModelProperty(value = "绫诲瀷")
+    private String type;
+	/**鎵�鍦ㄥ崟浣�*/
+	@Excel(name = "鎵�鍦ㄥ崟浣�", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
+    @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
+    @ApiModelProperty(value = "鎵�鍦ㄥ崟浣�")
+    private String departId;
+	/**鐢宠鍗曚綅鑱旂郴鐢佃瘽*/
+	@Excel(name = "鐢宠鍗曚綅鑱旂郴鐢佃瘽", width = 15)
+    @ApiModelProperty(value = "鐢宠鍗曚綅鑱旂郴鐢佃瘽")
+    private String contactNumber;
+	/**鐢宠浜�*/
+	@Excel(name = "鐢宠浜�", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
+    @ApiModelProperty(value = "鐢宠浜�")
+    private String applicant;
+	/**瀹℃牳鐘舵��*/
+	@Excel(name = "瀹℃牳鐘舵��", width = 15, dicCode = "certificate_apply_status")
+    @Dict(dicCode = "certificate_apply_status")
+    @ApiModelProperty(value = "瀹℃牳鐘舵��")
+    private String auditStatus;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+	/**绉熸埛ID*/
+	@Excel(name = "绉熸埛ID", width = 15)
+    @ApiModelProperty(value = "绉熸埛ID")
+    private String tenantId;
+    /**鍒犻櫎鏍囧織*/
+    @Excel(name = "鍒犻櫎鏍囧織", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+    /**鐘舵��*/
+    @Excel(name = "鐘舵��", width = 15, dicCode = "certificate_status")
+    @Dict(dicCode = "certificate_status")
+    @ApiModelProperty(value = "鐘舵��")
+    private String status ;
+	/**灞炴�у瓧娈�1*/
+	@Excel(name = "灞炴�у瓧娈�1", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�1")
+    private String uda1;
+	/**灞炴�у瓧娈�2*/
+	@Excel(name = "灞炴�у瓧娈�2", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�2")
+    private String uda2;
+	/**灞炴�у瓧娈�3*/
+	@Excel(name = "灞炴�у瓧娈�3", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�3")
+    private String uda3;
+	/**灞炴�у瓧娈�4*/
+	@Excel(name = "灞炴�у瓧娈�4", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�4")
+    private String uda4;
+	/**灞炴�у瓧娈�5*/
+	@Excel(name = "灞炴�у瓧娈�5", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�5")
+    private String uda5;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApplyDetail.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApplyDetail.java
new file mode 100644
index 0000000..3794802
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateApplyDetail.java
@@ -0,0 +1,103 @@
+package org.jeecg.modules.eam.entity;
+
+import java.io.Serializable;
+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.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.base.entity.JeecgEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇锋槑缁嗚〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@ApiModel(value="mom_eam_operation_certificate_apply_detail瀵硅薄", description="鎿嶄綔璇佺敵璇锋槑缁嗚〃")
+@Data
+@TableName("mom_eam_operation_certificate_apply_detail")
+public class OperationCertificateApplyDetail extends JeecgEntity  implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+	/**鎿嶄綔璇佺敵璇疯〃ID*/
+    @ApiModelProperty(value = "鎿嶄綔璇佺敵璇疯〃ID")
+    private String operationCertificateApplyId;
+	/**鐢ㄦ埛ID*/
+	@Excel(name = "鐢ㄦ埛ID", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
+    @ApiModelProperty(value = "鐢ㄦ埛ID")
+    private String userId;
+	/**璁惧ID*/
+	@Excel(name = "璁惧ID", width = 15, dictTable = "mom_eam_equipment", dicText = "num", dicCode = "id ")
+    @ApiModelProperty(value = "璁惧ID")
+    private String equipmentIds;
+	/**涓婂矖璇佸彿*/
+	@Excel(name = "涓婂矖璇佸彿", width = 15)
+    @ApiModelProperty(value = "涓婂矖璇佸彿")
+    private String appointmentCardNum;
+	/**琛ュ姙鍘熷洜*/
+	@Excel(name = "琛ュ姙鍘熷洜", width = 15)
+    @ApiModelProperty(value = "琛ュ姙鍘熷洜")
+    private String replaceReason;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+	/**鐞嗚鎴愮哗*/
+	@Excel(name = "鐞嗚鎴愮哗", width = 15)
+    @ApiModelProperty(value = "鐞嗚鎴愮哗")
+    private Integer theoreticalResults;
+	/**瀹炴搷鎴愮哗*/
+	@Excel(name = "瀹炴搷鎴愮哗", width = 15)
+    @ApiModelProperty(value = "瀹炴搷鎴愮哗")
+    private Integer actualPerformance;
+	/**鑰冭瘯缁撹*/
+	@Excel(name = "鑰冭瘯缁撹", width = 15)
+    @ApiModelProperty(value = "鑰冭瘯缁撹")
+    @Dict(dicCode="examinationConclusion")
+    private String examinationConclusion;
+
+	/**绉熸埛ID*/
+	@Excel(name = "绉熸埛ID", width = 15)
+    @ApiModelProperty(value = "绉熸埛ID")
+    private String tenantId;
+	/**鍒犻櫎鏍囧織*/
+	@Excel(name = "鍒犻櫎鏍囧織", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織")
+    @TableLogic
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鐘舵��*/
+	@Excel(name = "鐘舵��", width = 15)
+    @ApiModelProperty(value = "鐘舵��")
+    private String  status  = CommonConstant.STATUS_1;
+	/**灞炴�у瓧娈�1*/
+	@Excel(name = "灞炴�у瓧娈�1", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�1")
+    private String uda1;
+	/**灞炴�у瓧娈�2*/
+	@Excel(name = "灞炴�у瓧娈�2", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�2")
+    private String uda2;
+	/**灞炴�у瓧娈�3*/
+	@Excel(name = "灞炴�у瓧娈�3", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�3")
+    private String uda3;
+	/**灞炴�у瓧娈�4*/
+	@Excel(name = "灞炴�у瓧娈�4", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�4")
+    private String uda4;
+	/**灞炴�у瓧娈�5*/
+	@Excel(name = "灞炴�у瓧娈�5", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�5")
+    private String uda5;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateDetail.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateDetail.java
new file mode 100644
index 0000000..5146352
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/OperationCertificateDetail.java
@@ -0,0 +1,71 @@
+package org.jeecg.modules.eam.entity;
+
+import java.io.Serializable;
+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.common.system.base.entity.JeecgEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 鎿嶄綔璇佺鐞嗘槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@ApiModel(value="mom_eam_operation_certificate_detail瀵硅薄", description="鎿嶄綔璇佺鐞嗘槑缁�")
+@Data
+@TableName("mom_eam_operation_certificate_detail")
+public class OperationCertificateDetail  extends JeecgEntity  implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+	/**璇佷功ID*/
+    @ApiModelProperty(value = "璇佷功ID")
+    private String operationCertificateId;
+	/**绫诲瀷*/
+	@Excel(name = "绫诲瀷", width = 15)
+    @ApiModelProperty(value = "绫诲瀷")
+    private String type;
+	/**璁惧id*/
+	@Excel(name = "璁惧id", width = 15)
+    @ApiModelProperty(value = "璁惧id")
+    private String equipmentId;
+	/**鎵e垎椤�*/
+	@Excel(name = "鎵e垎椤�", width = 15)
+    @ApiModelProperty(value = "鎵e垎椤�")
+    private String deductionItem;
+	/**鎵e垎鍛ㄦ湡*/
+	@Excel(name = "鎵e垎鍛ㄦ湡", width = 15)
+    @ApiModelProperty(value = "鎵e垎鍛ㄦ湡")
+    private String period;
+
+	/**灞炴�у瓧娈�1*/
+	@Excel(name = "灞炴�у瓧娈�1", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�1")
+    private String uda1;
+	/**灞炴�у瓧娈�2*/
+	@Excel(name = "灞炴�у瓧娈�2", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�2")
+    private String uda2;
+	/**灞炴�у瓧娈�3*/
+	@Excel(name = "灞炴�у瓧娈�3", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�3")
+    private String uda3;
+	/**灞炴�у瓧娈�4*/
+	@Excel(name = "灞炴�у瓧娈�4", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�4")
+    private String uda4;
+	/**灞炴�у瓧娈�5*/
+	@Excel(name = "灞炴�у瓧娈�5", width = 15)
+    @ApiModelProperty(value = "灞炴�у瓧娈�5")
+    private String uda5;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/DeductionItemMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/DeductionItemMapper.java
new file mode 100644
index 0000000..0cd65bc
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/DeductionItemMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.eam.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.eam.entity.DeductionItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鎿嶄綔璁″垎瑙勫垯
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface DeductionItemMapper extends BaseMapper<DeductionItem> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyDetailMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyDetailMapper.java
new file mode 100644
index 0000000..13775b0
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyDetailMapper.java
@@ -0,0 +1,31 @@
+package org.jeecg.modules.eam.mapper;
+
+import java.util.List;
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇锋槑缁嗚〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface OperationCertificateApplyDetailMapper extends BaseMapper<OperationCertificateApplyDetail> {
+
+	/**
+	 * 閫氳繃涓昏〃id鍒犻櫎瀛愯〃鏁版嵁
+	 *
+	 * @param mainId 涓昏〃id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁
+   *
+   * @param mainId 涓昏〃id
+   * @return List<OperationCertificateApplyDetail>
+   */
+	public List<OperationCertificateApplyDetail> selectByMainId(@Param("mainId") String mainId);
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyMapper.java
new file mode 100644
index 0000000..daf594f
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateApplyMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.eam.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.eam.entity.OperationCertificateApply;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇疯〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface OperationCertificateApplyMapper extends BaseMapper<OperationCertificateApply> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateDetailMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateDetailMapper.java
new file mode 100644
index 0000000..d3925ed
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateDetailMapper.java
@@ -0,0 +1,31 @@
+package org.jeecg.modules.eam.mapper;
+
+import java.util.List;
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 鎿嶄綔璇佺鐞嗘槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface OperationCertificateDetailMapper extends BaseMapper<OperationCertificateDetail> {
+
+	/**
+	 * 閫氳繃涓昏〃id鍒犻櫎瀛愯〃鏁版嵁
+	 *
+	 * @param mainId 涓昏〃id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁
+   *
+   * @param mainId 涓昏〃id
+   * @return List<OperationCertificateDetail>
+   */
+	public List<OperationCertificateDetail> selectByMainId(@Param("mainId") String mainId);
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateMapper.java
new file mode 100644
index 0000000..fcdb629
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/OperationCertificateMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.eam.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.eam.entity.OperationCertificate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鎿嶄綔璇佷功绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface OperationCertificateMapper extends BaseMapper<OperationCertificate> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/DeductionItemMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/DeductionItemMapper.xml
new file mode 100644
index 0000000..6b9f77d
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/DeductionItemMapper.xml
@@ -0,0 +1,5 @@
+<?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.eam.mapper.DeductionItemMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyDetailMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyDetailMapper.xml
new file mode 100644
index 0000000..f56a720
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyDetailMapper.xml
@@ -0,0 +1,16 @@
+<?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.eam.mapper.OperationCertificateApplyDetailMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  mom_eam_operation_certificate_apply_detail 
+		WHERE
+			 operation_certificate_apply_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.eam.entity.OperationCertificateApplyDetail">
+		SELECT * 
+		FROM  mom_eam_operation_certificate_apply_detail
+		WHERE
+			 operation_certificate_apply_id = #{mainId} 	</select>
+</mapper>
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyMapper.xml
new file mode 100644
index 0000000..acf6221
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateApplyMapper.xml
@@ -0,0 +1,5 @@
+<?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.eam.mapper.OperationCertificateApplyMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateDetailMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateDetailMapper.xml
new file mode 100644
index 0000000..6fca9a7
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateDetailMapper.xml
@@ -0,0 +1,16 @@
+<?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.eam.mapper.OperationCertificateDetailMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  mom_eam_operation_certificate_detail 
+		WHERE
+			 operation_certificate_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.eam.entity.OperationCertificateDetail">
+		SELECT * 
+		FROM  mom_eam_operation_certificate_detail
+		WHERE
+			 operation_certificate_id = #{mainId} 	</select>
+</mapper>
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateMapper.xml
new file mode 100644
index 0000000..05f49d0
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/OperationCertificateMapper.xml
@@ -0,0 +1,5 @@
+<?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.eam.mapper.OperationCertificateMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IDeductionItemService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IDeductionItemService.java
new file mode 100644
index 0000000..702357a
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IDeductionItemService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.eam.service;
+
+import org.jeecg.modules.eam.entity.DeductionItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鎿嶄綔璁″垎瑙勫垯
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface IDeductionItemService extends IService<DeductionItem> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyDetailService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyDetailService.java
new file mode 100644
index 0000000..be7150d
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyDetailService.java
@@ -0,0 +1,22 @@
+package org.jeecg.modules.eam.service;
+
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇锋槑缁嗚〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface IOperationCertificateApplyDetailService extends IService<OperationCertificateApplyDetail> {
+
+	/**
+	 * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁
+	 *
+	 * @param mainId 涓昏〃id
+	 * @return List<OperationCertificateApplyDetail>
+	 */
+	public List<OperationCertificateApplyDetail> selectByMainId(String mainId);
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyService.java
new file mode 100644
index 0000000..1dc7b8b
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateApplyService.java
@@ -0,0 +1,48 @@
+package org.jeecg.modules.eam.service;
+
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import org.jeecg.modules.eam.entity.OperationCertificateApply;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇疯〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface IOperationCertificateApplyService extends IService<OperationCertificateApply> {
+
+	/**
+	 * 娣诲姞涓�瀵瑰
+	 *
+	 * @param operationCertificateApply
+	 * @param operationCertificateApplyDetailList
+	 */
+	public void saveMain(OperationCertificateApply operationCertificateApply,List<OperationCertificateApplyDetail> operationCertificateApplyDetailList) ;
+	
+	/**
+	 * 淇敼涓�瀵瑰
+	 *
+   * @param operationCertificateApply
+   * @param operationCertificateApplyDetailList
+	 */
+	public void updateMain(OperationCertificateApply operationCertificateApply,List<OperationCertificateApplyDetail> operationCertificateApplyDetailList);
+	
+	/**
+	 * 鍒犻櫎涓�瀵瑰
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 鎵归噺鍒犻櫎涓�瀵瑰
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+	
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateDetailService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateDetailService.java
new file mode 100644
index 0000000..f93a6cb
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateDetailService.java
@@ -0,0 +1,22 @@
+package org.jeecg.modules.eam.service;
+
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 鎿嶄綔璇佺鐞嗘槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface IOperationCertificateDetailService extends IService<OperationCertificateDetail> {
+
+	/**
+	 * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁
+	 *
+	 * @param mainId 涓昏〃id
+	 * @return List<OperationCertificateDetail>
+	 */
+	public List<OperationCertificateDetail> selectByMainId(String mainId);
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateService.java
new file mode 100644
index 0000000..76ac943
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IOperationCertificateService.java
@@ -0,0 +1,48 @@
+package org.jeecg.modules.eam.service;
+
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import org.jeecg.modules.eam.entity.OperationCertificate;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 鎿嶄綔璇佷功绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+public interface IOperationCertificateService extends IService<OperationCertificate> {
+
+	/**
+	 * 娣诲姞涓�瀵瑰
+	 *
+	 * @param operationCertificate
+	 * @param operationCertificateDetailList
+	 */
+	public void saveMain(OperationCertificate operationCertificate,List<OperationCertificateDetail> operationCertificateDetailList) ;
+	
+	/**
+	 * 淇敼涓�瀵瑰
+	 *
+   * @param operationCertificate
+   * @param operationCertificateDetailList
+	 */
+	public void updateMain(OperationCertificate operationCertificate,List<OperationCertificateDetail> operationCertificateDetailList);
+	
+	/**
+	 * 鍒犻櫎涓�瀵瑰
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 鎵归噺鍒犻櫎涓�瀵瑰
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+	
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/DeductionItemServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/DeductionItemServiceImpl.java
new file mode 100644
index 0000000..a9a0c05
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/DeductionItemServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.eam.service.impl;
+
+import org.jeecg.modules.eam.entity.DeductionItem;
+import org.jeecg.modules.eam.mapper.DeductionItemMapper;
+import org.jeecg.modules.eam.service.IDeductionItemService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鎿嶄綔璁″垎瑙勫垯
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Service
+public class DeductionItemServiceImpl extends ServiceImpl<DeductionItemMapper, DeductionItem> implements IDeductionItemService {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyDetailServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyDetailServiceImpl.java
new file mode 100644
index 0000000..71ca6e7
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyDetailServiceImpl.java
@@ -0,0 +1,27 @@
+package org.jeecg.modules.eam.service.impl;
+
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import org.jeecg.modules.eam.mapper.OperationCertificateApplyDetailMapper;
+import org.jeecg.modules.eam.service.IOperationCertificateApplyDetailService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇锋槑缁嗚〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Service
+public class OperationCertificateApplyDetailServiceImpl extends ServiceImpl<OperationCertificateApplyDetailMapper, OperationCertificateApplyDetail> implements IOperationCertificateApplyDetailService {
+	
+	@Autowired
+	private OperationCertificateApplyDetailMapper operationCertificateApplyDetailMapper;
+	
+	@Override
+	public List<OperationCertificateApplyDetail> selectByMainId(String mainId) {
+		return operationCertificateApplyDetailMapper.selectByMainId(mainId);
+	}
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyServiceImpl.java
new file mode 100644
index 0000000..6f1e59b
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateApplyServiceImpl.java
@@ -0,0 +1,77 @@
+package org.jeecg.modules.eam.service.impl;
+
+import org.jeecg.modules.eam.entity.OperationCertificateApply;
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import org.jeecg.modules.eam.mapper.OperationCertificateApplyDetailMapper;
+import org.jeecg.modules.eam.mapper.OperationCertificateApplyMapper;
+import org.jeecg.modules.eam.service.IOperationCertificateApplyService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇疯〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Service
+public class OperationCertificateApplyServiceImpl extends ServiceImpl<OperationCertificateApplyMapper, OperationCertificateApply> implements IOperationCertificateApplyService {
+
+	@Autowired
+	private OperationCertificateApplyMapper operationCertificateApplyMapper;
+	@Autowired
+	private OperationCertificateApplyDetailMapper operationCertificateApplyDetailMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(OperationCertificateApply operationCertificateApply, List<OperationCertificateApplyDetail> operationCertificateApplyDetailList) {
+		operationCertificateApplyMapper.insert(operationCertificateApply);
+		if(operationCertificateApplyDetailList!=null && operationCertificateApplyDetailList.size()>0) {
+			for(OperationCertificateApplyDetail entity:operationCertificateApplyDetailList) {
+				//澶栭敭璁剧疆
+				entity.setOperationCertificateApplyId(operationCertificateApply.getId());
+				operationCertificateApplyDetailMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(OperationCertificateApply operationCertificateApply,List<OperationCertificateApplyDetail> operationCertificateApplyDetailList) {
+		operationCertificateApplyMapper.updateById(operationCertificateApply);
+		
+		//1.鍏堝垹闄ゅ瓙琛ㄦ暟鎹�
+		operationCertificateApplyDetailMapper.deleteByMainId(operationCertificateApply.getId());
+		
+		//2.瀛愯〃鏁版嵁閲嶆柊鎻掑叆
+		if(operationCertificateApplyDetailList!=null && operationCertificateApplyDetailList.size()>0) {
+			for(OperationCertificateApplyDetail entity:operationCertificateApplyDetailList) {
+				//澶栭敭璁剧疆
+				entity.setOperationCertificateApplyId(operationCertificateApply.getId());
+				operationCertificateApplyDetailMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		operationCertificateApplyDetailMapper.deleteByMainId(id);
+		operationCertificateApplyMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			operationCertificateApplyDetailMapper.deleteByMainId(id.toString());
+			operationCertificateApplyMapper.deleteById(id);
+		}
+	}
+	
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateDetailServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateDetailServiceImpl.java
new file mode 100644
index 0000000..0a29179
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateDetailServiceImpl.java
@@ -0,0 +1,27 @@
+package org.jeecg.modules.eam.service.impl;
+
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import org.jeecg.modules.eam.mapper.OperationCertificateDetailMapper;
+import org.jeecg.modules.eam.service.IOperationCertificateDetailService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 鎿嶄綔璇佺鐞嗘槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Service
+public class OperationCertificateDetailServiceImpl extends ServiceImpl<OperationCertificateDetailMapper, OperationCertificateDetail> implements IOperationCertificateDetailService {
+	
+	@Autowired
+	private OperationCertificateDetailMapper operationCertificateDetailMapper;
+	
+	@Override
+	public List<OperationCertificateDetail> selectByMainId(String mainId) {
+		return operationCertificateDetailMapper.selectByMainId(mainId);
+	}
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateServiceImpl.java
new file mode 100644
index 0000000..cea95d8
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateServiceImpl.java
@@ -0,0 +1,77 @@
+package org.jeecg.modules.eam.service.impl;
+
+import org.jeecg.modules.eam.entity.OperationCertificate;
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import org.jeecg.modules.eam.mapper.OperationCertificateDetailMapper;
+import org.jeecg.modules.eam.mapper.OperationCertificateMapper;
+import org.jeecg.modules.eam.service.IOperationCertificateService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 鎿嶄綔璇佷功绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Service
+public class OperationCertificateServiceImpl extends ServiceImpl<OperationCertificateMapper, OperationCertificate> implements IOperationCertificateService {
+
+	@Autowired
+	private OperationCertificateMapper operationCertificateMapper;
+	@Autowired
+	private OperationCertificateDetailMapper operationCertificateDetailMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(OperationCertificate operationCertificate, List<OperationCertificateDetail> operationCertificateDetailList) {
+		operationCertificateMapper.insert(operationCertificate);
+		if(operationCertificateDetailList!=null && operationCertificateDetailList.size()>0) {
+			for(OperationCertificateDetail entity:operationCertificateDetailList) {
+				//澶栭敭璁剧疆
+				entity.setOperationCertificateId(operationCertificate.getId());
+				operationCertificateDetailMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(OperationCertificate operationCertificate,List<OperationCertificateDetail> operationCertificateDetailList) {
+		operationCertificateMapper.updateById(operationCertificate);
+		
+		//1.鍏堝垹闄ゅ瓙琛ㄦ暟鎹�
+		operationCertificateDetailMapper.deleteByMainId(operationCertificate.getId());
+		
+		//2.瀛愯〃鏁版嵁閲嶆柊鎻掑叆
+		if(operationCertificateDetailList!=null && operationCertificateDetailList.size()>0) {
+			for(OperationCertificateDetail entity:operationCertificateDetailList) {
+				//澶栭敭璁剧疆
+				entity.setOperationCertificateId(operationCertificate.getId());
+				operationCertificateDetailMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		operationCertificateDetailMapper.deleteByMainId(id);
+		operationCertificateMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			operationCertificateDetailMapper.deleteByMainId(id.toString());
+			operationCertificateMapper.deleteById(id);
+		}
+	}
+	
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificateApplyPage.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificateApplyPage.java
new file mode 100644
index 0000000..53ce328
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificateApplyPage.java
@@ -0,0 +1,117 @@
+package org.jeecg.modules.eam.vo;
+
+import java.util.List;
+
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.modules.eam.entity.OperationCertificateApply;
+import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 鎿嶄綔璇佺敵璇疯〃
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="mom_eam_operation_certificate_applyPage瀵硅薄", description="鎿嶄綔璇佺敵璇疯〃")
+public class OperationCertificateApplyPage {
+
+	/**涓婚敭ID*/
+	@ApiModelProperty(value = "涓婚敭ID")
+    private String id;
+	/**鐢宠鍗曠紪鍙�*/
+	@Excel(name = "鐢宠鍗曠紪鍙�", width = 15)
+	@ApiModelProperty(value = "鐢宠鍗曠紪鍙�")
+    private String num;
+	/**绫诲瀷*/
+	@Excel(name = "绫诲瀷", width = 15, dicCode = "apply_type")
+    @Dict(dicCode = "apply_type")
+	@ApiModelProperty(value = "绫诲瀷")
+    private String type;
+	/**鎵�鍦ㄥ崟浣�*/
+	@Excel(name = "鎵�鍦ㄥ崟浣�", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
+    @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
+	@ApiModelProperty(value = "鎵�鍦ㄥ崟浣�")
+    private String departId;
+	/**鐢宠鍗曚綅鑱旂郴鐢佃瘽*/
+	@Excel(name = "鐢宠鍗曚綅鑱旂郴鐢佃瘽", width = 15)
+	@ApiModelProperty(value = "鐢宠鍗曚綅鑱旂郴鐢佃瘽")
+    private String contactNumber;
+	/**鐢宠浜�*/
+	@Excel(name = "鐢宠浜�", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
+	@ApiModelProperty(value = "鐢宠浜�")
+    private String applicant;
+	/**瀹℃牳鐘舵��*/
+	@Excel(name = "瀹℃牳鐘舵��", width = 15, dicCode = "certificate_apply_status")
+    @Dict(dicCode = "certificate_apply_status")
+	@ApiModelProperty(value = "瀹℃牳鐘舵��")
+    private String auditStatus;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+	@ApiModelProperty(value = "澶囨敞")
+    private String remark;
+	/**鍒涘缓浜�*/
+	@ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+	@ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**绉熸埛ID*/
+	@Excel(name = "绉熸埛ID", width = 15)
+	@ApiModelProperty(value = "绉熸埛ID")
+    private String tenantId;
+	/**鍒犻櫎鏍囪瘑*/
+	@Excel(name = "鍒犻櫎鏍囪瘑", width = 15)
+	@ApiModelProperty(value = "鍒犻櫎鏍囪瘑")
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鐘舵��*/
+	@Excel(name = "鐘舵��", width = 15)
+	@ApiModelProperty(value = "鐘舵��")
+    private String status ;
+	/**灞炴�у瓧娈�1*/
+	@Excel(name = "灞炴�у瓧娈�1", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�1")
+    private String uda1;
+	/**灞炴�у瓧娈�2*/
+	@Excel(name = "灞炴�у瓧娈�2", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�2")
+    private String uda2;
+	/**灞炴�у瓧娈�3*/
+	@Excel(name = "灞炴�у瓧娈�3", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�3")
+    private String uda3;
+	/**灞炴�у瓧娈�4*/
+	@Excel(name = "灞炴�у瓧娈�4", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�4")
+    private String uda4;
+	/**灞炴�у瓧娈�5*/
+	@Excel(name = "灞炴�у瓧娈�5", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�5")
+    private String uda5;
+
+	@ExcelCollection(name="鎿嶄綔璇佺敵璇锋槑缁嗚〃")
+	@ApiModelProperty(value = "鎿嶄綔璇佺敵璇锋槑缁嗚〃")
+	private List<OperationCertificateApplyDetail> operationCertificateApplyDetailList;
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificatePage.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificatePage.java
new file mode 100644
index 0000000..8c36a4a
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/OperationCertificatePage.java
@@ -0,0 +1,130 @@
+package org.jeecg.modules.eam.vo;
+
+import java.util.List;
+
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.modules.eam.entity.OperationCertificate;
+import org.jeecg.modules.eam.entity.OperationCertificateDetail;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 鎿嶄綔璇佷功绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2023-10-17
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="mom_eam_operation_certificatePage瀵硅薄", description="鎿嶄綔璇佷功绠$悊")
+public class OperationCertificatePage {
+
+	/**id*/
+	@ApiModelProperty(value = "id")
+    private String id;
+	/**鎿嶄綔璇佺紪鍙�*/
+	@Excel(name = "鎿嶄綔璇佺紪鍙�", width = 15)
+	@ApiModelProperty(value = "鎿嶄綔璇佺紪鍙�")
+    private String num;
+	/**鐢ㄦ埛ID*/
+	@Excel(name = "鐢ㄦ埛ID", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
+	@ApiModelProperty(value = "鐢ㄦ埛ID")
+    private String userId;
+	/**鍙戣瘉鏃ユ湡*/
+	@Excel(name = "鍙戣瘉鏃ユ湡", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "鍙戣瘉鏃ユ湡")
+    private Date issueDate;
+	/**寮�濮嬫椂闂�*/
+	@Excel(name = "寮�濮嬫椂闂�", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "寮�濮嬫椂闂�")
+    private Date startTime;
+	/**缁撴潫鏃堕棿*/
+	@Excel(name = "缁撴潫鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "缁撴潫鏃堕棿")
+    private Date endTime;
+	/**褰撳墠鍛ㄦ湡鍒嗘暟*/
+	@Excel(name = "褰撳墠鍛ㄦ湡鍒嗘暟", width = 15)
+	@ApiModelProperty(value = "褰撳墠鍛ㄦ湡鍒嗘暟")
+    private Integer currentCycleScore;
+	/**璁惧ids*/
+	@Excel(name = "璁惧ids", width = 15, dictTable = "mom_eam_equipment", dicText = "num", dicCode = "id")
+    @Dict(dictTable = "mom_eam_equipment", dicText = "num", dicCode = "id")
+	@ApiModelProperty(value = "璁惧ids")
+    private String equipmentIds;
+	/**澶囨敞*/
+	@Excel(name = "澶囨敞", width = 15)
+	@ApiModelProperty(value = "澶囨敞")
+    private String remark;
+	/**鍒涘缓浜�*/
+	@ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**鏇存柊浜�*/
+	@ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+	/**绉熸埛ID*/
+	@Excel(name = "绉熸埛ID", width = 15)
+	@ApiModelProperty(value = "绉熸埛ID")
+    private String tenantId;
+	/**鍒犻櫎鏍囧織*/
+	@Excel(name = "鍒犻櫎鏍囧織", width = 15)
+	@ApiModelProperty(value = "鍒犻櫎鏍囧織")
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
+	/**鐘舵��*/
+	@Excel(name = "鐘舵��", width = 15, dicCode = "certificate_status")
+    @Dict(dicCode = "certificate_status")
+	@ApiModelProperty(value = "鐘舵��")
+    private String status ;
+	/**enterpriseId*/
+	@Excel(name = "enterpriseId", width = 15)
+	@ApiModelProperty(value = "enterpriseId")
+    private String enterpriseId;
+	/**灞炴�у瓧娈�1*/
+	@Excel(name = "灞炴�у瓧娈�1", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�1")
+    private String uda1;
+	/**灞炴�у瓧娈�2*/
+	@Excel(name = "灞炴�у瓧娈�2", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�2")
+    private String uda2;
+	/**灞炴�у瓧娈�3*/
+	@Excel(name = "灞炴�у瓧娈�3", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�3")
+    private String uda3;
+	/**灞炴�у瓧娈�4*/
+	@Excel(name = "灞炴�у瓧娈�4", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�4")
+    private String uda4;
+	/**灞炴�у瓧娈�5*/
+	@Excel(name = "灞炴�у瓧娈�5", width = 15)
+	@ApiModelProperty(value = "灞炴�у瓧娈�5")
+    private String uda5;
+
+	@ExcelCollection(name="鎿嶄綔璇佺鐞嗘槑缁�")
+	@ApiModelProperty(value = "鎿嶄綔璇佺鐞嗘槑缁�")
+	private List<OperationCertificateDetail> operationCertificateDetailList;
+
+}
diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
index 1a5e2ab..1b67b12 100644
--- a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
+++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
@@ -133,10 +133,15 @@
       datasource:
         master:
 #          url: jdbc:sqlserver://192.168.0.29:1433;databasename=LXZN_TEST_430
-          url: jdbc:sqlserver://30036q420j.yicp.fun:11047;databasename=LXZN_TEST_430
+#          url: jdbc:sqlserver://30036q420j.yicp.fun:11047;databasename=LXZN_TEST_430
+#          url: jdbc:sqlserver://localhost:1433;databasename=LXZN_TEST_430
+#          url: jdbc:sqlserver://192.168.0.118:1433;databasename=LXZN_TEST_430
+          url: jdbc:sqlserver://192.168.0.118:1433;databasename=EAM_430_TEST
+#          url: jdbc:sqlserver://30036q420j.yicp.fun:11047;databasename=EAM_430_TEST
           username: sa
 #          password: LXZN@1688
           password: 123
+#          password: 123456
           driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
           #url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
           #username: root
@@ -179,7 +184,8 @@
   # 绛惧悕瀵嗛挜涓�(鍓嶅悗绔涓�鑷达紝姝e紡鍙戝竷璇疯嚜琛屼慨鏀�)
   signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
   # 绛惧悕鎷︽埅鎺ュ彛
-  signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys
+#  signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys
+  signUrls: /sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys
   #local銆乵inio銆乤lioss
   uploadType: local
   # 鍓嶇璁块棶鍦板潃

--
Gitblit v1.9.3