Browse Source

Merge remote-tracking branch 'origin/master'

wyh 1 year ago
parent
commit
58d5ef61a2
57 changed files with 4021 additions and 0 deletions
  1. 8 0
      itdmServer/module-iTDM/pom.xml
  2. 177 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/controller/ItdmChuanganqiController.java
  3. 71 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/entity/ItdmChuanganqi.java
  4. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/mapper/ItdmChuanganqiMapper.java
  5. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/mapper/xml/ItdmChuanganqiMapper.xml
  6. 14 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/service/IItdmChuanganqiService.java
  7. 19 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/service/impl/ItdmChuanganqiServiceImpl.java
  8. 209 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/ItdmChuanganqiList.vue
  9. 26 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/ItdmChuanganqi_menu_insert.sql
  10. 131 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/modules/ItdmChuanganqiForm.vue
  11. 84 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/modules/ItdmChuanganqiModal.Style#Drawer.vue
  12. 60 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/modules/ItdmChuanganqiModal.vue
  13. 177 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/controller/ItdmDeviceController.java
  14. 125 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/entity/ItdmDevice.java
  15. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/mapper/ItdmDeviceMapper.java
  16. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/mapper/xml/ItdmDeviceMapper.xml
  17. 14 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/service/IItdmDeviceService.java
  18. 19 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/service/impl/ItdmDeviceServiceImpl.java
  19. 177 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/controller/ItdmPersonManageController.java
  20. 83 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/entity/ItdmPersonManage.java
  21. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/mapper/ItdmPersonManageMapper.java
  22. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/mapper/xml/ItdmPersonManageMapper.xml
  23. 14 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/service/IItdmPersonManageService.java
  24. 19 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/service/impl/ItdmPersonManageServiceImpl.java
  25. 181 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/controller/ItdmWeituoInfoController.java
  26. 74 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/convert/WeituoConvert.java
  27. 104 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/dto/WeituoInsertCommand.java
  28. 106 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/dto/WeituoUpdateCommand.java
  29. 110 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/entity/ItdmWeituoInfo.java
  30. 86 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/entity/ItdmWeituoYangpin.java
  31. 84 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/entity/ItdmWeituoYangpinExtend.java
  32. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/ItdmWeituoInfoMapper.java
  33. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/ItdmWeituoYangpinExtendMapper.java
  34. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/ItdmWeituoYangpinMapper.java
  35. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/xml/ItdmWeituoInfoMapper.xml
  36. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/xml/ItdmWeituoYangpinExtendMapper.xml
  37. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/xml/ItdmWeituoYangpinMapper.xml
  38. 34 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/service/IItdmWeituoInfoService.java
  39. 132 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/service/impl/ItdmWeituoInfoServiceImpl.java
  40. 119 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vo/ItdmWeituoInfoInfoVO.java
  41. 277 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/ItdmWeituoInfoList.vue
  42. 26 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/ItdmWeituoInfo_menu_insert.sql
  43. 167 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/modules/ItdmWeituoInfoForm.vue
  44. 84 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/modules/ItdmWeituoInfoModal.Style#Drawer.vue
  45. 60 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/modules/ItdmWeituoInfoModal.vue
  46. 177 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/controller/ItdmWeituoYijuController.java
  47. 66 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/entity/ItdmWeituoYiju.java
  48. 17 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/mapper/ItdmWeituoYijuMapper.java
  49. 5 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/mapper/xml/ItdmWeituoYijuMapper.xml
  50. 14 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/service/IItdmWeituoYijuService.java
  51. 19 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/service/impl/ItdmWeituoYijuServiceImpl.java
  52. 197 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/ItdmWeituoYijuList.vue
  53. 26 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/ItdmWeituoYiju_menu_insert.sql
  54. 115 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/modules/ItdmWeituoYijuForm.vue
  55. 84 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/modules/ItdmWeituoYijuModal.Style#Drawer.vue
  56. 60 0
      itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/modules/ItdmWeituoYijuModal.vue
  57. 38 0
      itdmServer/pom.xml

+ 8 - 0
itdmServer/module-iTDM/pom.xml

@@ -16,6 +16,14 @@
             <groupId>org.jeecgframework.boot</groupId>
             <artifactId>jeecg-boot-base-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-jdk8</artifactId> <!-- use mapstruct-jdk8 for Java 8 or higher -->
+        </dependency>
     </dependencies>
 
 </project>

+ 177 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/controller/ItdmChuanganqiController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.chuanganqi.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.chuanganqi.entity.ItdmChuanganqi;
+import org.jeecg.modules.chuanganqi.service.IItdmChuanganqiService;
+
+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-05-17
+ * @Version: V1.0
+ */
+@Api(tags="传感器管理")
+@RestController
+@RequestMapping("/chuanganqi/itdmChuanganqi")
+@Slf4j
+public class ItdmChuanganqiController extends JeecgController<ItdmChuanganqi, IItdmChuanganqiService> {
+	@Autowired
+	private IItdmChuanganqiService itdmChuanganqiService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param itdmChuanganqi
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "传感器管理-分页列表查询")
+	@ApiOperation(value="传感器管理-分页列表查询", notes="传感器管理-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<ItdmChuanganqi>> queryPageList(ItdmChuanganqi itdmChuanganqi,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ItdmChuanganqi> queryWrapper = QueryGenerator.initQueryWrapper(itdmChuanganqi, req.getParameterMap());
+		Page<ItdmChuanganqi> page = new Page<ItdmChuanganqi>(pageNo, pageSize);
+		IPage<ItdmChuanganqi> pageList = itdmChuanganqiService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param itdmChuanganqi
+	 * @return
+	 */
+	@AutoLog(value = "传感器管理-添加")
+	@ApiOperation(value="传感器管理-添加", notes="传感器管理-添加")
+	//@RequiresPermissions("org.jeecg.modules:itdm_chuanganqi:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ItdmChuanganqi itdmChuanganqi) {
+		itdmChuanganqiService.save(itdmChuanganqi);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param itdmChuanganqi
+	 * @return
+	 */
+	@AutoLog(value = "传感器管理-编辑")
+	@ApiOperation(value="传感器管理-编辑", notes="传感器管理-编辑")
+	//@RequiresPermissions("org.jeecg.modules:itdm_chuanganqi:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ItdmChuanganqi itdmChuanganqi) {
+		itdmChuanganqiService.updateById(itdmChuanganqi);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "传感器管理-通过id删除")
+	@ApiOperation(value="传感器管理-通过id删除", notes="传感器管理-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_chuanganqi:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		itdmChuanganqiService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "传感器管理-批量删除")
+	@ApiOperation(value="传感器管理-批量删除", notes="传感器管理-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_chuanganqi:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.itdmChuanganqiService.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<ItdmChuanganqi> queryById(@RequestParam(name="id",required=true) String id) {
+		ItdmChuanganqi itdmChuanganqi = itdmChuanganqiService.getById(id);
+		if(itdmChuanganqi==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(itdmChuanganqi);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param itdmChuanganqi
+    */
+    //@RequiresPermissions("org.jeecg.modules:itdm_chuanganqi:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ItdmChuanganqi itdmChuanganqi) {
+        return super.exportXls(request, itdmChuanganqi, ItdmChuanganqi.class, "传感器管理");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("itdm_chuanganqi:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ItdmChuanganqi.class);
+    }
+
+}

+ 71 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/entity/ItdmChuanganqi.java

@@ -0,0 +1,71 @@
+package org.jeecg.modules.chuanganqi.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:   2023-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_chuanganqi")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_chuanganqi对象", description="传感器管理")
+public class ItdmChuanganqi implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**型号*/
+	@Excel(name = "型号", width = 15)
+    @ApiModelProperty(value = "型号")
+    private java.lang.String xinghao;
+	/**序列号*/
+	@Excel(name = "序列号", width = 15)
+    @ApiModelProperty(value = "序列号")
+    private java.lang.String xuliehao;
+	/**灵敏度*/
+	@Excel(name = "灵敏度", width = 15)
+    @ApiModelProperty(value = "灵敏度")
+    private java.lang.String lingmindu;
+	/**有效期*/
+	@Excel(name = "有效期", width = 15)
+    @ApiModelProperty(value = "有效期")
+    private java.lang.String youxiaoqi;
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/mapper/ItdmChuanganqiMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.chuanganqi.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.chuanganqi.entity.ItdmChuanganqi;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 传感器管理
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface ItdmChuanganqiMapper extends BaseMapper<ItdmChuanganqi> {
+
+}

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/mapper/xml/ItdmChuanganqiMapper.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.chuanganqi.mapper.ItdmChuanganqiMapper">
+
+</mapper>

+ 14 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/service/IItdmChuanganqiService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.chuanganqi.service;
+
+import org.jeecg.modules.chuanganqi.entity.ItdmChuanganqi;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 传感器管理
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface IItdmChuanganqiService extends IService<ItdmChuanganqi> {
+
+}

+ 19 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/service/impl/ItdmChuanganqiServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.chuanganqi.service.impl;
+
+import org.jeecg.modules.chuanganqi.entity.ItdmChuanganqi;
+import org.jeecg.modules.chuanganqi.mapper.ItdmChuanganqiMapper;
+import org.jeecg.modules.chuanganqi.service.IItdmChuanganqiService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 传感器管理
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+@Service
+public class ItdmChuanganqiServiceImpl extends ServiceImpl<ItdmChuanganqiMapper, ItdmChuanganqi> implements IItdmChuanganqiService {
+
+}

+ 209 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/ItdmChuanganqiList.vue

@@ -0,0 +1,209 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="型号">
+              <a-input placeholder="请输入型号" v-model="queryParam.xinghao"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="序列号">
+              <a-input placeholder="请输入序列号" v-model="queryParam.xuliehao"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('传感器管理')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <itdm-chuanganqi-modal ref="modalForm" @ok="modalFormOk"></itdm-chuanganqi-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import ItdmChuanganqiModal from './modules/ItdmChuanganqiModal'
+
+  export default {
+    name: 'ItdmChuanganqiList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      ItdmChuanganqiModal
+    },
+    data () {
+      return {
+        description: '传感器管理管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'型号',
+            align:"center",
+            dataIndex: 'xinghao'
+          },
+          {
+            title:'序列号',
+            align:"center",
+            dataIndex: 'xuliehao'
+          },
+          {
+            title:'灵敏度',
+            align:"center",
+            dataIndex: 'lingmindu'
+          },
+          {
+            title:'有效期',
+            align:"center",
+            dataIndex: 'youxiaoqi'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/chuanganqi/itdmChuanganqi/list",
+          delete: "/chuanganqi/itdmChuanganqi/delete",
+          deleteBatch: "/chuanganqi/itdmChuanganqi/deleteBatch",
+          exportXlsUrl: "/chuanganqi/itdmChuanganqi/exportXls",
+          importExcelUrl: "chuanganqi/itdmChuanganqi/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'xinghao',text:'型号',dictCode:''})
+        fieldList.push({type:'string',value:'xuliehao',text:'序列号',dictCode:''})
+        fieldList.push({type:'string',value:'lingmindu',text:'灵敏度',dictCode:''})
+        fieldList.push({type:'string',value:'youxiaoqi',text:'有效期',dictCode:''})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/ItdmChuanganqi_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/chuanganqi文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023051708573630080', NULL, '传感器管理', '/chuanganqi/itdmChuanganqiList', 'module-iTDM/chuanganqi/ItdmChuanganqiList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 1, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051708573630081', '2023051708573630080', '新增', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_chuanganqi:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051708573630082', '2023051708573630080', '编辑', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_chuanganqi:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051708573630083', '2023051708573630080', '删除', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_chuanganqi:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051708573630084', '2023051708573630080', '批量删除', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_chuanganqi:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051708573630085', '2023051708573630080', '导出excel', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_chuanganqi:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051708573630086', '2023051708573630080', '导入excel', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_chuanganqi:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:57:08', NULL, NULL, 0, 0, '1', 0);

+ 131 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/modules/ItdmChuanganqiForm.vue

@@ -0,0 +1,131 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="型号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="xinghao">
+              <a-input v-model="model.xinghao" placeholder="请输入型号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="序列号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="xuliehao">
+              <a-input v-model="model.xuliehao" placeholder="请输入序列号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="灵敏度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="lingmindu">
+              <a-input v-model="model.lingmindu" placeholder="请输入灵敏度"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="有效期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="youxiaoqi">
+              <a-input v-model="model.youxiaoqi" placeholder="请输入有效期"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'ItdmChuanganqiForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+           xinghao: [
+              { required: true, message: '请输入型号!'},
+           ],
+           xuliehao: [
+              { required: true, message: '请输入序列号!'},
+           ],
+           lingmindu: [
+              { required: true, message: '请输入灵敏度!'},
+           ],
+           youxiaoqi: [
+              { required: true, message: '请输入有效期!'},
+           ],
+        },
+        url: {
+          add: "/chuanganqi/itdmChuanganqi/add",
+          edit: "/chuanganqi/itdmChuanganqi/edit",
+          queryById: "/chuanganqi/itdmChuanganqi/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>

+ 84 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/modules/ItdmChuanganqiModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <itdm-chuanganqi-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></itdm-chuanganqi-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import ItdmChuanganqiForm from './ItdmChuanganqiForm'
+
+  export default {
+    name: 'ItdmChuanganqiModal',
+    components: {
+      ItdmChuanganqiForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/chuanganqi/vue/modules/ItdmChuanganqiModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <itdm-chuanganqi-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></itdm-chuanganqi-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import ItdmChuanganqiForm from './ItdmChuanganqiForm'
+  export default {
+    name: 'ItdmChuanganqiModal',
+    components: {
+      ItdmChuanganqiForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 177 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/controller/ItdmDeviceController.java

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

+ 125 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/entity/ItdmDevice.java

@@ -0,0 +1,125 @@
+package org.jeecg.modules.itdmDevice.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:   2023-05-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_device")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_device对象", description="设备表")
+public class ItdmDevice implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**设备名称*/
+	@Excel(name = "设备名称", width = 15)
+    @ApiModelProperty(value = "设备名称")
+    private java.lang.String deviceName;
+	/**设备编号*/
+	@Excel(name = "设备编号", width = 15)
+    @ApiModelProperty(value = "设备编号")
+    private java.lang.String deviceNo;
+	/**设备状态*/
+	@Excel(name = "设备状态", width = 15, dicCode = "device_status")
+	@Dict(dicCode = "device_status")
+    @ApiModelProperty(value = "设备状态")
+    private java.lang.Integer deviceStatus;
+	/**设备类型*/
+	@Excel(name = "设备类型", width = 15)
+    @ApiModelProperty(value = "设备类型")
+    private java.lang.String deviceType;
+	/**维护时间*/
+	@Excel(name = "维护时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "维护时间")
+    private java.util.Date repairTime;
+	/**维护人*/
+	@Excel(name = "维护人", width = 15)
+    @ApiModelProperty(value = "维护人")
+    private java.lang.String repairer;
+	/**本次运行开始时间*/
+	@Excel(name = "本次运行开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "本次运行开始时间")
+    private java.util.Date runStartTime;
+	/**设备运行标识*/
+	@Excel(name = "设备运行标识", width = 15, dicCode = "biaoshi")
+	@Dict(dicCode = "biaoshi")
+    @ApiModelProperty(value = "设备运行标识")
+    private java.lang.Integer biaoshi;
+	/**是否已维护*/
+	@Excel(name = "是否已维护", width = 15, dicCode = "is_repair")
+	@Dict(dicCode = "is_repair")
+    @ApiModelProperty(value = "是否已维护")
+    private java.lang.Integer isRepair;
+	/**设备树id*/
+	@Excel(name = "设备树id", width = 15)
+    @ApiModelProperty(value = "设备树id")
+    private java.lang.Integer equipmenttreeid;
+	/**计量有效期*/
+	@Excel(name = "计量有效期", width = 15)
+    @ApiModelProperty(value = "计量有效期")
+    private java.lang.String deviceLife;
+	/**规格型号*/
+	@Excel(name = "规格型号", width = 15)
+    @ApiModelProperty(value = "规格型号")
+    private java.lang.String spec;
+	/**安装地点*/
+	@Excel(name = "安装地点", width = 15)
+    @ApiModelProperty(value = "安装地点")
+    private java.lang.String address;
+	/**区域*/
+	@Excel(name = "区域", width = 15)
+    @ApiModelProperty(value = "区域")
+    private java.lang.Integer specid;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/mapper/ItdmDeviceMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.itdmDevice.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.itdmDevice.entity.ItdmDevice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 设备表
+ * @Author: jeecg-boot
+ * @Date:   2023-05-18
+ * @Version: V1.0
+ */
+public interface ItdmDeviceMapper extends BaseMapper<ItdmDevice> {
+
+}

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/mapper/xml/ItdmDeviceMapper.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.itdmDevice.mapper.ItdmDeviceMapper">
+
+</mapper>

+ 14 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/service/IItdmDeviceService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.itdmDevice.service;
+
+import org.jeecg.modules.itdmDevice.entity.ItdmDevice;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 设备表
+ * @Author: jeecg-boot
+ * @Date:   2023-05-18
+ * @Version: V1.0
+ */
+public interface IItdmDeviceService extends IService<ItdmDevice> {
+
+}

+ 19 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDevice/service/impl/ItdmDeviceServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.itdmDevice.service.impl;
+
+import org.jeecg.modules.itdmDevice.entity.ItdmDevice;
+import org.jeecg.modules.itdmDevice.mapper.ItdmDeviceMapper;
+import org.jeecg.modules.itdmDevice.service.IItdmDeviceService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 设备表
+ * @Author: jeecg-boot
+ * @Date:   2023-05-18
+ * @Version: V1.0
+ */
+@Service
+public class ItdmDeviceServiceImpl extends ServiceImpl<ItdmDeviceMapper, ItdmDevice> implements IItdmDeviceService {
+
+}

+ 177 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/controller/ItdmPersonManageController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.itdmPersonManage.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.itdmPersonManage.entity.ItdmPersonManage;
+import org.jeecg.modules.itdmPersonManage.service.IItdmPersonManageService;
+
+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-05-17
+ * @Version: V1.0
+ */
+@Api(tags="人员管理")
+@RestController
+@RequestMapping("/itdmPersonManage/itdmPersonManage")
+@Slf4j
+public class ItdmPersonManageController extends JeecgController<ItdmPersonManage, IItdmPersonManageService> {
+	@Autowired
+	private IItdmPersonManageService itdmPersonManageService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param itdmPersonManage
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "人员管理-分页列表查询")
+	@ApiOperation(value="人员管理-分页列表查询", notes="人员管理-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<ItdmPersonManage>> queryPageList(ItdmPersonManage itdmPersonManage,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ItdmPersonManage> queryWrapper = QueryGenerator.initQueryWrapper(itdmPersonManage, req.getParameterMap());
+		Page<ItdmPersonManage> page = new Page<ItdmPersonManage>(pageNo, pageSize);
+		IPage<ItdmPersonManage> pageList = itdmPersonManageService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param itdmPersonManage
+	 * @return
+	 */
+	@AutoLog(value = "人员管理-添加")
+	@ApiOperation(value="人员管理-添加", notes="人员管理-添加")
+	//@RequiresPermissions("org.jeecg.modules:itdm_person_manage:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ItdmPersonManage itdmPersonManage) {
+		itdmPersonManageService.save(itdmPersonManage);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param itdmPersonManage
+	 * @return
+	 */
+	@AutoLog(value = "人员管理-编辑")
+	@ApiOperation(value="人员管理-编辑", notes="人员管理-编辑")
+	//@RequiresPermissions("org.jeecg.modules:itdm_person_manage:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ItdmPersonManage itdmPersonManage) {
+		itdmPersonManageService.updateById(itdmPersonManage);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "人员管理-通过id删除")
+	@ApiOperation(value="人员管理-通过id删除", notes="人员管理-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_person_manage:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		itdmPersonManageService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "人员管理-批量删除")
+	@ApiOperation(value="人员管理-批量删除", notes="人员管理-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_person_manage:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.itdmPersonManageService.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<ItdmPersonManage> queryById(@RequestParam(name="id",required=true) String id) {
+		ItdmPersonManage itdmPersonManage = itdmPersonManageService.getById(id);
+		if(itdmPersonManage==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(itdmPersonManage);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param itdmPersonManage
+    */
+    //@RequiresPermissions("org.jeecg.modules:itdm_person_manage:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ItdmPersonManage itdmPersonManage) {
+        return super.exportXls(request, itdmPersonManage, ItdmPersonManage.class, "人员管理");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("itdm_person_manage:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ItdmPersonManage.class);
+    }
+
+}

+ 83 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/entity/ItdmPersonManage.java

@@ -0,0 +1,83 @@
+package org.jeecg.modules.itdmPersonManage.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:   2023-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_person_manage")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_person_manage对象", description="人员管理")
+public class ItdmPersonManage implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**人员姓名*/
+	@Excel(name = "人员姓名", width = 15)
+    @ApiModelProperty(value = "人员姓名")
+    private java.lang.String name;
+	/**人员性别*/
+	@Excel(name = "人员性别", width = 15, dicCode = "sex")
+	@Dict(dicCode = "sex")
+    @ApiModelProperty(value = "人员性别")
+    private java.lang.String sex;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**职位*/
+	@Excel(name = "职位", width = 15)
+    @ApiModelProperty(value = "职位")
+    private java.lang.String position;
+	/**工作组*/
+	@Excel(name = "工作组", width = 15)
+    @ApiModelProperty(value = "工作组")
+    private java.lang.String workGroup;
+	/**手机号*/
+	@Excel(name = "手机号", width = 15)
+    @ApiModelProperty(value = "手机号")
+    private java.lang.String tel;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/mapper/ItdmPersonManageMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.itdmPersonManage.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.itdmPersonManage.entity.ItdmPersonManage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 人员管理
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface ItdmPersonManageMapper extends BaseMapper<ItdmPersonManage> {
+
+}

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/mapper/xml/ItdmPersonManageMapper.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.itdmPersonManage.mapper.ItdmPersonManageMapper">
+
+</mapper>

+ 14 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/service/IItdmPersonManageService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.itdmPersonManage.service;
+
+import org.jeecg.modules.itdmPersonManage.entity.ItdmPersonManage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 人员管理
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface IItdmPersonManageService extends IService<ItdmPersonManage> {
+
+}

+ 19 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmPersonManage/service/impl/ItdmPersonManageServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.itdmPersonManage.service.impl;
+
+import org.jeecg.modules.itdmPersonManage.entity.ItdmPersonManage;
+import org.jeecg.modules.itdmPersonManage.mapper.ItdmPersonManageMapper;
+import org.jeecg.modules.itdmPersonManage.service.IItdmPersonManageService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 人员管理
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+@Service
+public class ItdmPersonManageServiceImpl extends ServiceImpl<ItdmPersonManageMapper, ItdmPersonManage> implements IItdmPersonManageService {
+
+}

+ 181 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/controller/ItdmWeituoInfoController.java

@@ -0,0 +1,181 @@
+package org.jeecg.modules.weituo.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.weituo.dto.WeituoInsertCommand;
+import org.jeecg.modules.weituo.dto.WeituoUpdateCommand;
+import org.jeecg.modules.weituo.entity.ItdmWeituoInfo;
+import org.jeecg.modules.weituo.service.IItdmWeituoInfoService;
+
+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.jeecg.modules.weituo.vo.ItdmWeituoInfoInfoVO;
+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-05-17
+ * @Version: V1.0
+ */
+@Api(tags="委托信息")
+@RestController
+@RequestMapping("/weituo/itdmWeituoInfo")
+@Slf4j
+public class ItdmWeituoInfoController extends JeecgController<ItdmWeituoInfo, IItdmWeituoInfoService> {
+	@Autowired
+	private IItdmWeituoInfoService itdmWeituoInfoService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param itdmWeituoInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "委托信息-分页列表查询")
+	@ApiOperation(value="委托信息-分页列表查询", notes="委托信息-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<ItdmWeituoInfo>> queryPageList(ItdmWeituoInfo itdmWeituoInfo,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ItdmWeituoInfo> queryWrapper = QueryGenerator.initQueryWrapper(itdmWeituoInfo, req.getParameterMap());
+		Page<ItdmWeituoInfo> page = new Page<ItdmWeituoInfo>(pageNo, pageSize);
+		IPage<ItdmWeituoInfo> pageList = itdmWeituoInfoService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param itdmWeituoInfo
+	 * @return
+	 */
+	@AutoLog(value = "委托信息-添加")
+	@ApiOperation(value="委托信息-添加", notes="委托信息-添加")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_info:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody WeituoInsertCommand itdmWeituoInfo) {
+		itdmWeituoInfoService.saveWeituo(itdmWeituoInfo);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param itdmWeituoInfo
+	 * @return
+	 */
+	@AutoLog(value = "委托信息-编辑")
+	@ApiOperation(value="委托信息-编辑", notes="委托信息-编辑")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_info:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody WeituoUpdateCommand itdmWeituoInfo) {
+		itdmWeituoInfoService.updateWeituo(itdmWeituoInfo);
+
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "委托信息-通过id删除")
+	@ApiOperation(value="委托信息-通过id删除", notes="委托信息-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_info:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		itdmWeituoInfoService.deleteById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "委托信息-批量删除")
+	@ApiOperation(value="委托信息-批量删除", notes="委托信息-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_info:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.itdmWeituoInfoService.deleteByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "委托信息-通过id查询")
+	@ApiOperation(value="委托信息-通过id查询", notes="委托信息-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<ItdmWeituoInfoInfoVO> queryById(@RequestParam(name="id",required=true) String id) {
+		ItdmWeituoInfoInfoVO itdmWeituoInfo = itdmWeituoInfoService.findById(id);
+		if(itdmWeituoInfo==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(itdmWeituoInfo);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param itdmWeituoInfo
+    */
+    //@RequiresPermissions("org.jeecg.modules:itdm_weituo_info:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ItdmWeituoInfo itdmWeituoInfo) {
+        return super.exportXls(request, itdmWeituoInfo, ItdmWeituoInfo.class, "委托信息");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("itdm_weituo_info:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ItdmWeituoInfo.class);
+    }
+
+}

+ 74 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/convert/WeituoConvert.java

@@ -0,0 +1,74 @@
+package org.jeecg.modules.weituo.convert;
+
+import org.jeecg.modules.weituo.dto.WeituoInsertCommand;
+import org.jeecg.modules.weituo.dto.WeituoUpdateCommand;
+import org.jeecg.modules.weituo.entity.ItdmWeituoInfo;
+import org.jeecg.modules.weituo.entity.ItdmWeituoYangpin;
+import org.jeecg.modules.weituo.entity.ItdmWeituoYangpinExtend;
+import org.jeecg.modules.weituo.vo.ItdmWeituoInfoInfoVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 敏感词 Convert
+ *
+ * @author 永不言败
+ */
+@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
+
+public interface WeituoConvert {
+
+    WeituoConvert INSTANCE = Mappers.getMapper(WeituoConvert.class);
+
+    ItdmWeituoInfo convert(WeituoInsertCommand convert);
+
+
+    ItdmWeituoYangpin convert(WeituoInsertCommand.WeituoYangpin convert, String weituoId);
+
+    ItdmWeituoYangpinExtend convert(WeituoInsertCommand.WeituoYangPinShiYan convert,String yangpinId,String weituoId);
+
+
+
+
+
+
+
+    ItdmWeituoInfo convert(WeituoUpdateCommand convert);
+
+
+    ItdmWeituoYangpin convert(WeituoUpdateCommand.WeituoYangpin convert, String weituoId);
+
+    ItdmWeituoYangpinExtend convert(WeituoUpdateCommand.WeituoYangPinShiYan convert,String yangpinId,String weituoId);
+
+
+    ItdmWeituoInfoInfoVO convert(String id);
+
+
+    ItdmWeituoInfoInfoVO.WeituoInfoVO convert(ItdmWeituoInfo id);
+
+
+
+
+    @Mapping(target = "key",source = "id")
+    ItdmWeituoInfoInfoVO.WeituoYangpin convert(ItdmWeituoYangpin info);
+
+
+
+    @Mapping(target = "key",source = "id")
+
+    @Mapping(target = "yangpinKeyId",source = "yangpinId")
+    ItdmWeituoInfoInfoVO.WeituoYangPinShiYan convert(ItdmWeituoYangpinExtend info);
+
+
+
+
+
+
+    List<ItdmWeituoInfoInfoVO.WeituoYangpin> convertList(List<ItdmWeituoYangpin> info);
+
+    List<ItdmWeituoInfoInfoVO.WeituoYangPinShiYan> convertShiyanList(List<ItdmWeituoYangpinExtend> info);
+}

+ 104 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/dto/WeituoInsertCommand.java

@@ -0,0 +1,104 @@
+package org.jeecg.modules.weituo.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class WeituoInsertCommand {
+
+
+    /**
+     * 委托单位名称
+     */
+    private String weituoClient;
+    /**
+     * 委托单位地址
+     */
+    private String weituoAddress;
+    /**
+     * 委托联系人
+     */
+    private String weituoLxr;
+    /**
+     * 委托电话
+     */
+    private String weituoPhone;
+    /**
+     * 委托邮箱
+     */
+    private String weituoEmail;
+    /**
+     * 报告用章
+     */
+    private String bgyz;
+    /**
+     * 报告形式
+     */
+    private String bgxs;
+    /**
+     * 特殊要求
+     */
+    private String teshuyaoqiu;
+
+    /**
+     * 试验条件文件地址
+     */
+    private String tiaojianFile;
+
+
+    private List<WeituoYangpin> yangpins;
+
+
+    private List<WeituoYangPinShiYan> pinShiYans;
+
+
+    @Getter
+    @Setter
+    public static final class WeituoYangpin {
+        //辅助  样品扩展 id
+        private String key;
+
+        private String sampleName;
+
+
+        private String sampleModelSpecification;
+
+
+        private Integer sampleQuantities;
+
+
+        private String sampleManufacturer;
+
+
+    }
+
+    @Getter
+    @Setter
+    public static final class WeituoYangPinShiYan {
+        /**
+         * 样品id
+         */
+        private String yangpinKeyId;
+        /**
+         * 检测项目
+         */
+        private String testItems;
+        /**
+         * 检测依据
+         */
+        private String standardRequirement;
+        /**
+         * 判定依据
+         */
+        private String judgementBasis;
+        /**
+         * 备注
+         */
+        private String beizhu;
+    }
+
+
+}

+ 106 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/dto/WeituoUpdateCommand.java

@@ -0,0 +1,106 @@
+package org.jeecg.modules.weituo.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class WeituoUpdateCommand {
+
+
+    private String id;
+
+    /**
+     * 委托单位名称
+     */
+    private String weituoClient;
+    /**
+     * 委托单位地址
+     */
+    private String weituoAddress;
+    /**
+     * 委托联系人
+     */
+    private String weituoLxr;
+    /**
+     * 委托电话
+     */
+    private String weituoPhone;
+    /**
+     * 委托邮箱
+     */
+    private String weituoEmail;
+    /**
+     * 报告用章
+     */
+    private String bgyz;
+    /**
+     * 报告形式
+     */
+    private String bgxs;
+    /**
+     * 特殊要求
+     */
+    private String teshuyaoqiu;
+
+    /**
+     * 试验条件文件地址
+     */
+    private String tiaojianFile;
+
+
+    private List<WeituoYangpin> yangpins;
+
+
+    private List<WeituoYangPinShiYan> pinShiYans;
+
+
+    @Getter
+    @Setter
+    public static final class WeituoYangpin {
+        //辅助  样品扩展 id
+        private String key;
+
+        private String sampleName;
+
+
+        private String sampleModelSpecification;
+
+
+        private Integer sampleQuantities;
+
+
+        private String sampleManufacturer;
+
+
+    }
+
+    @Getter
+    @Setter
+    public static final class WeituoYangPinShiYan {
+        /**
+         * 样品id
+         */
+        private String yangpinKeyId;
+        /**
+         * 检测项目
+         */
+        private String testItems;
+        /**
+         * 检测依据
+         */
+        private String standardRequirement;
+        /**
+         * 判定依据
+         */
+        private String judgementBasis;
+        /**
+         * 备注
+         */
+        private String beizhu;
+    }
+
+
+}

+ 110 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/entity/ItdmWeituoInfo.java

@@ -0,0 +1,110 @@
+package org.jeecg.modules.weituo.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:   2023-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_weituo_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_weituo_info对象", description="委托信息")
+public class ItdmWeituoInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**委托编号*/
+	@Excel(name = "委托编号", width = 15)
+    @ApiModelProperty(value = "委托编号")
+    private String weituoNo;
+	/**委托单位名称*/
+	@Excel(name = "委托单位名称", width = 15)
+    @ApiModelProperty(value = "委托单位名称")
+    private String weituoClient;
+	/**委托单位地址*/
+	@Excel(name = "委托单位地址", width = 15)
+    @ApiModelProperty(value = "委托单位地址")
+    private String weituoAddress;
+	/**委托联系人*/
+	@Excel(name = "委托联系人", width = 15)
+    @ApiModelProperty(value = "委托联系人")
+    private String weituoLxr;
+	/**委托电话*/
+	@Excel(name = "委托电话", width = 15)
+    @ApiModelProperty(value = "委托电话")
+    private String weituoPhone;
+	/**委托邮箱*/
+	@Excel(name = "委托邮箱", width = 15)
+    @ApiModelProperty(value = "委托邮箱")
+    private String weituoEmail;
+	/**报告用章*/
+	@Excel(name = "报告用章", width = 15)
+    @ApiModelProperty(value = "报告用章")
+    private String bgyz;
+	/**报告形式*/
+	@Excel(name = "报告形式", width = 15)
+    @ApiModelProperty(value = "报告形式")
+    private String bgxs;
+	/**特殊要求*/
+	@Excel(name = "特殊要求", width = 15)
+    @ApiModelProperty(value = "特殊要求")
+    private String teshuyaoqiu;
+	/**审核状态*/
+	@Excel(name = "审核状态", width = 15)
+    @ApiModelProperty(value = "审核状态")
+    private String shenheStatus;
+	/**审核错误原因*/
+	@Excel(name = "审核错误原因", width = 15)
+    @ApiModelProperty(value = "审核错误原因")
+    private String shenheMsg;
+	/**审核时间*/
+	@Excel(name = "审核时间", width = 15)
+    @ApiModelProperty(value = "审核时间")
+    private String shenheTime;
+	/**试验条件文件地址*/
+	@Excel(name = "试验条件文件地址", width = 15)
+    @ApiModelProperty(value = "试验条件文件地址")
+    private String tiaojianFile;
+}

+ 86 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/entity/ItdmWeituoYangpin.java

@@ -0,0 +1,86 @@
+package org.jeecg.modules.weituo.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:   2023-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_weituo_yangpin")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_weituo_yangpin对象", description="委托样品")
+public class ItdmWeituoYangpin implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**委托单id*/
+	@Excel(name = "委托单id", width = 15)
+    @ApiModelProperty(value = "委托单id")
+    private java.lang.String weituoId;
+	/**样品名称*/
+	@Excel(name = "样品名称", width = 15)
+    @ApiModelProperty(value = "样品名称")
+    private java.lang.String sampleName;
+	/**样品规格/型号*/
+	@Excel(name = "样品规格/型号", width = 15)
+    @ApiModelProperty(value = "样品规格/型号")
+    private java.lang.String sampleModelSpecification;
+	/**样品数量*/
+	@Excel(name = "样品数量", width = 15)
+    @ApiModelProperty(value = "样品数量")
+    private java.lang.String sampleQuantities;
+	/**生产厂家*/
+	@Excel(name = "生产厂家", width = 15)
+    @ApiModelProperty(value = "生产厂家")
+    private java.lang.String sampleManufacturer;
+	/**样品编号*/
+	@Excel(name = "样品编号", width = 15)
+    @ApiModelProperty(value = "样品编号")
+    private java.lang.String sampleCode;
+
+
+
+
+}

+ 84 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/entity/ItdmWeituoYangpinExtend.java

@@ -0,0 +1,84 @@
+package org.jeecg.modules.weituo.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:   2023-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_weituo_yangpin_extend")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_weituo_yangpin_extend对象", description="委托样品扩展信息")
+public class ItdmWeituoYangpinExtend implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**委托id*/
+	@Excel(name = "委托id", width = 15)
+    @ApiModelProperty(value = "委托id")
+    private String weituoId;
+	/**样品id*/
+	@Excel(name = "样品id", width = 15)
+    @ApiModelProperty(value = "样品id")
+    private String yangpinId;
+	/**检测项目*/
+	@Excel(name = "检测项目", width = 15)
+    @ApiModelProperty(value = "检测项目")
+    private String testItems;
+	/**检测依据*/
+	@Excel(name = "检测依据", width = 15)
+    @ApiModelProperty(value = "检测依据")
+    private String standardRequirement;
+	/**判定依据*/
+	@Excel(name = "判定依据", width = 15)
+    @ApiModelProperty(value = "判定依据")
+    private String judgementBasis;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String beizhu;
+
+
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/ItdmWeituoInfoMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.weituo.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.weituo.entity.ItdmWeituoInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 委托信息
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface ItdmWeituoInfoMapper extends BaseMapper<ItdmWeituoInfo> {
+
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/ItdmWeituoYangpinExtendMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.weituo.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.weituo.entity.ItdmWeituoYangpinExtend;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 委托样品扩展信息
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface ItdmWeituoYangpinExtendMapper extends BaseMapper<ItdmWeituoYangpinExtend> {
+
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/ItdmWeituoYangpinMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.weituo.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.weituo.entity.ItdmWeituoYangpin;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 委托样品
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface ItdmWeituoYangpinMapper extends BaseMapper<ItdmWeituoYangpin> {
+
+}

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/xml/ItdmWeituoInfoMapper.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.weituo.mapper.ItdmWeituoInfoMapper">
+
+</mapper>

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/xml/ItdmWeituoYangpinExtendMapper.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.weituo.mapper.ItdmWeituoYangpinExtendMapper">
+
+</mapper>

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/mapper/xml/ItdmWeituoYangpinMapper.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.weituo.mapper.ItdmWeituoYangpinMapper">
+
+</mapper>

+ 34 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/service/IItdmWeituoInfoService.java

@@ -0,0 +1,34 @@
+package org.jeecg.modules.weituo.service;
+
+import org.jeecg.modules.weituo.dto.WeituoInsertCommand;
+import org.jeecg.modules.weituo.dto.WeituoUpdateCommand;
+import org.jeecg.modules.weituo.vo.ItdmWeituoInfoInfoVO;
+
+import org.jeecg.modules.weituo.entity.ItdmWeituoInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: 委托信息
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface IItdmWeituoInfoService extends IService<ItdmWeituoInfo> {
+
+
+    public void saveWeituo(WeituoInsertCommand command);
+
+
+    public void updateWeituo(WeituoUpdateCommand command);
+
+
+    ItdmWeituoInfoInfoVO findById(String id);
+
+
+    void deleteById(String id);
+    void deleteByIds(List<String> id);
+}
+
+

+ 132 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/service/impl/ItdmWeituoInfoServiceImpl.java

@@ -0,0 +1,132 @@
+package org.jeecg.modules.weituo.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.jeecg.modules.weituo.convert.WeituoConvert;
+import org.jeecg.modules.weituo.dto.WeituoInsertCommand;
+import org.jeecg.modules.weituo.dto.WeituoUpdateCommand;
+import org.jeecg.modules.weituo.entity.ItdmWeituoInfo;
+import org.jeecg.modules.weituo.entity.ItdmWeituoYangpin;
+import org.jeecg.modules.weituo.entity.ItdmWeituoYangpinExtend;
+import org.jeecg.modules.weituo.mapper.ItdmWeituoInfoMapper;
+import org.jeecg.modules.weituo.mapper.ItdmWeituoYangpinExtendMapper;
+import org.jeecg.modules.weituo.mapper.ItdmWeituoYangpinMapper;
+import org.jeecg.modules.weituo.service.IItdmWeituoInfoService;
+import org.jeecg.modules.weituo.vo.ItdmWeituoInfoInfoVO;
+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;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 委托信息
+ * @Author: jeecg-boot
+ * @Date: 2023-05-17
+ * @Version: V1.0
+ */
+@Service
+public class ItdmWeituoInfoServiceImpl extends ServiceImpl<ItdmWeituoInfoMapper, ItdmWeituoInfo> implements IItdmWeituoInfoService {
+
+
+    @Autowired
+    private ItdmWeituoYangpinMapper yangpinMapper;
+
+    @Autowired
+    private ItdmWeituoYangpinExtendMapper yangpinExtendMapper;
+
+
+    @Transactional
+    @Override
+    public void saveWeituo(WeituoInsertCommand command) {
+
+        ItdmWeituoInfo itdmWeituoInfo = WeituoConvert.INSTANCE.convert(command);
+
+
+        this.baseMapper.insert(itdmWeituoInfo);
+
+
+        for (WeituoInsertCommand.WeituoYangpin yangpin : command.getYangpins()) {
+            ItdmWeituoYangpin itdmWeituoYangpin = WeituoConvert.INSTANCE.convert(yangpin, itdmWeituoInfo.getId());
+            this.yangpinMapper.insert(itdmWeituoYangpin);
+
+            for (WeituoInsertCommand.WeituoYangPinShiYan shiYan : command.getPinShiYans().stream()
+                    .filter(i -> i.getYangpinKeyId().equals(yangpin.getKey())).collect(Collectors.toList())) {
+
+                ItdmWeituoYangpinExtend yangpinExtend = WeituoConvert.INSTANCE.convert(shiYan, itdmWeituoYangpin.getId(), itdmWeituoInfo.getId());
+                this.yangpinExtendMapper.insert(yangpinExtend);
+
+
+            }
+
+        }
+
+
+    }
+
+    @Transactional
+    @Override
+    public void updateWeituo(WeituoUpdateCommand command) {
+        ItdmWeituoInfo itdmWeituoInfo = WeituoConvert.INSTANCE.convert(command);
+
+
+        this.baseMapper.updateById(itdmWeituoInfo);
+
+
+        this.yangpinMapper.delete(Wrappers.lambdaQuery(ItdmWeituoYangpin.class).eq(ItdmWeituoYangpin::getWeituoId, command.getId()));
+        this.yangpinExtendMapper.delete(Wrappers.lambdaQuery(ItdmWeituoYangpinExtend.class).eq(ItdmWeituoYangpinExtend::getWeituoId, command.getId()));
+
+        for (WeituoUpdateCommand.WeituoYangpin yangpin : command.getYangpins()) {
+            ItdmWeituoYangpin itdmWeituoYangpin = WeituoConvert.INSTANCE.convert(yangpin, command.getId());
+            this.yangpinMapper.insert(itdmWeituoYangpin);
+
+            for (WeituoUpdateCommand.WeituoYangPinShiYan shiYan : command.getPinShiYans().stream()
+                    .filter(i -> i.getYangpinKeyId().equals(yangpin.getKey())).collect(Collectors.toList())) {
+
+                if (yangpin.getKey().equals(shiYan.getYangpinKeyId())) {
+                    ItdmWeituoYangpinExtend yangpinExtend = WeituoConvert.INSTANCE.convert(shiYan, itdmWeituoYangpin.getId(), itdmWeituoInfo.getId());
+                    this.yangpinExtendMapper.insert(yangpinExtend);
+                }
+
+
+            }
+
+        }
+    }
+
+
+    @Override
+    public ItdmWeituoInfoInfoVO findById(String id) {
+
+        ItdmWeituoInfoInfoVO itdmWeituoInfo = WeituoConvert.INSTANCE.convert(id);
+        List<ItdmWeituoYangpin> yangpinExtendList = yangpinMapper.selectList(Wrappers.lambdaQuery(ItdmWeituoYangpin.class).eq(ItdmWeituoYangpin::getWeituoId, id));
+        List<ItdmWeituoYangpinExtend> yangpinExtends = yangpinExtendMapper.selectList(
+                Wrappers.lambdaQuery(ItdmWeituoYangpinExtend.class).eq(ItdmWeituoYangpinExtend::getWeituoId, id));
+        itdmWeituoInfo.setYangpins(WeituoConvert.INSTANCE.convertList(yangpinExtendList));
+        itdmWeituoInfo.setPinShiYans(WeituoConvert.INSTANCE.convertShiyanList(yangpinExtends));
+        itdmWeituoInfo.setData(WeituoConvert.INSTANCE.convert(this.baseMapper.selectById(id)));
+        return itdmWeituoInfo;
+    }
+
+    @Override
+    @Transactional
+    public void deleteById(String id) {
+        this.baseMapper.deleteById(id);
+        this.yangpinMapper.delete(Wrappers.lambdaQuery(ItdmWeituoYangpin.class).eq(ItdmWeituoYangpin::getWeituoId, id));
+        this.yangpinExtendMapper.delete(Wrappers.lambdaQuery(ItdmWeituoYangpinExtend.class).eq(ItdmWeituoYangpinExtend::getWeituoId, id));
+
+    }
+
+
+    @Override
+    @Transactional
+    public void deleteByIds(List<String> id) {
+        this.baseMapper.deleteBatchIds(id);
+        this.yangpinMapper.delete(Wrappers.lambdaQuery(ItdmWeituoYangpin.class).in(ItdmWeituoYangpin::getWeituoId, id));
+        this.yangpinExtendMapper.delete(Wrappers.lambdaQuery(ItdmWeituoYangpinExtend.class).in(ItdmWeituoYangpinExtend::getWeituoId, id));
+
+
+    }
+}

+ 119 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vo/ItdmWeituoInfoInfoVO.java

@@ -0,0 +1,119 @@
+package org.jeecg.modules.weituo.vo;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Data
+public class ItdmWeituoInfoInfoVO {
+    private String id;
+
+
+    private WeituoInfoVO data;
+
+
+    private List<WeituoYangpin> yangpins;
+
+
+    private List<WeituoYangPinShiYan> pinShiYans;
+
+
+    @Getter
+    @Setter
+    public static final class WeituoInfoVO {
+        private String id;
+
+        private String weituoClient;
+        /**
+         * 委托单位地址
+         */
+        private String weituoAddress;
+        /**
+         * 委托联系人
+         */
+        private String weituoLxr;
+        /**
+         * 委托电话
+         */
+        private String weituoPhone;
+        /**
+         * 委托邮箱
+         */
+        private String weituoEmail;
+        /**
+         * 报告用章
+         */
+        private String bgyz;
+        /**
+         * 报告形式
+         */
+        private String bgxs;
+        /**
+         * 特殊要求
+         */
+        private String teshuyaoqiu;
+
+        /**
+         * 试验条件文件地址
+         */
+        private String tiaojianFile;
+
+    }
+
+
+    @Getter
+    @Setter
+    public static final class WeituoYangpin {
+        //辅助  样品扩展 id
+        private String key;
+
+        private String sampleName;
+
+
+        private String sampleModelSpecification;
+
+
+        private Integer sampleQuantities;
+
+
+        private String sampleManufacturer;
+
+
+    }
+
+    @Getter
+    @Setter
+    @JsonPropertyOrder({"key", "yangpinKeyId", "testItems", "standardRequirement", "judgementBasis", "beizhu"})
+
+    public static final class WeituoYangPinShiYan {
+
+        private  String key;
+
+        /**
+         * 样品id
+         */
+        private String yangpinKeyId;
+        /**
+         * 检测项目
+         */
+        private String testItems;
+        /**
+         * 检测依据
+         */
+        private String standardRequirement;
+        /**
+         * 判定依据
+         */
+        private String judgementBasis;
+        /**
+         * 备注
+         */
+        private String beizhu;
+
+
+    }
+}

+ 277 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/ItdmWeituoInfoList.vue

@@ -0,0 +1,277 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="委托单位名称">
+              <a-input placeholder="请输入委托单位名称" v-model="queryParam.weituoClient"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="委托单位地址">
+              <a-input placeholder="请输入委托单位地址" v-model="queryParam.weituoAddress"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('委托信息')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <itdm-weituo-info-modal ref="modalForm" @ok="modalFormOk"></itdm-weituo-info-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import ItdmWeituoInfoModal from './modules/ItdmWeituoInfoModal'
+  import { loadCategoryData } from '@/api/api'
+
+  export default {
+    name: 'ItdmWeituoInfoList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      ItdmWeituoInfoModal
+    },
+    data () {
+      return {
+        description: '委托信息管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'委托编号',
+            align:"center",
+            dataIndex: 'weituoNo'
+          },
+          {
+            title:'委托单位名称',
+            align:"center",
+            dataIndex: 'weituoClient'
+          },
+          {
+            title:'委托单位地址',
+            align:"center",
+            dataIndex: 'weituoAddress'
+          },
+          {
+            title:'委托联系人',
+            align:"center",
+            dataIndex: 'weituoLxr'
+          },
+          {
+            title:'委托电话',
+            align:"center",
+            dataIndex: 'weituoPhone'
+          },
+          {
+            title:'委托邮箱',
+            align:"center",
+            dataIndex: 'weituoEmail'
+          },
+          {
+            title:'报告用章',
+            align:"center",
+            dataIndex: 'bgyz',
+            customRender: (text) => (text ? filterMultiDictText(this.dictOptions['bgyz'], text) : '')
+          },
+          {
+            title:'报告形式',
+            align:"center",
+            dataIndex: 'bgxs',
+            customRender: (text) => (text ? filterMultiDictText(this.dictOptions['bgxs'], text) : '')
+          },
+          {
+            title:'特殊要求',
+            align:"center",
+            dataIndex: 'teshuyaoqiu'
+          },
+          {
+            title:'审核状态',
+            align:"center",
+            dataIndex: 'shenheStatus'
+          },
+          {
+            title:'审核错误原因',
+            align:"center",
+            dataIndex: 'shenheMsg'
+          },
+          {
+            title:'审核时间',
+            align:"center",
+            dataIndex: 'shenheTime'
+          },
+          {
+            title:'试验条件文件地址',
+            align:"center",
+            dataIndex: 'tiaojianFile',
+            scopedSlots: {customRender: 'fileSlot'}
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/weituo/itdmWeituoInfo/list",
+          delete: "/weituo/itdmWeituoInfo/delete",
+          deleteBatch: "/weituo/itdmWeituoInfo/deleteBatch",
+          exportXlsUrl: "/weituo/itdmWeituoInfo/exportXls",
+          importExcelUrl: "weituo/itdmWeituoInfo/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+        loadCategoryData({code:''}).then((res) => {
+          if (res.success) {
+            this.$set(this.dictOptions, 'bgyz', res.result)
+          }
+        })
+        loadCategoryData({code:''}).then((res) => {
+          if (res.success) {
+            this.$set(this.dictOptions, 'bgxs', res.result)
+          }
+        })
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'weituoNo',text:'委托编号',dictCode:''})
+        fieldList.push({type:'string',value:'weituoClient',text:'委托单位名称',dictCode:''})
+        fieldList.push({type:'string',value:'weituoAddress',text:'委托单位地址',dictCode:''})
+        fieldList.push({type:'string',value:'weituoLxr',text:'委托联系人',dictCode:''})
+        fieldList.push({type:'string',value:'weituoPhone',text:'委托电话',dictCode:''})
+        fieldList.push({type:'string',value:'weituoEmail',text:'委托邮箱',dictCode:''})
+        fieldList.push({type:'string',value:'bgyz',text:'报告用章'})
+        fieldList.push({type:'string',value:'bgxs',text:'报告形式'})
+        fieldList.push({type:'string',value:'teshuyaoqiu',text:'特殊要求',dictCode:''})
+        fieldList.push({type:'string',value:'shenheStatus',text:'审核状态',dictCode:''})
+        fieldList.push({type:'string',value:'shenheMsg',text:'审核错误原因',dictCode:''})
+        fieldList.push({type:'string',value:'shenheTime',text:'审核时间',dictCode:''})
+        fieldList.push({type:'string',value:'tiaojianFile',text:'试验条件文件地址',dictCode:''})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/ItdmWeituoInfo_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/weituo文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023051701001820250', NULL, '委托信息', '/weituo/itdmWeituoInfoList', 'module-iTDM/weituo/ItdmWeituoInfoList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 1, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051701001820251', '2023051701001820250', '新增', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_info:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051701001820252', '2023051701001820250', '编辑', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_info:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051701001820253', '2023051701001820250', '删除', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_info:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051701001820254', '2023051701001820250', '批量删除', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_info:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051701001820255', '2023051701001820250', '导出excel', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_info:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023051701001820256', '2023051701001820250', '导入excel', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_info:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 13:00:25', NULL, NULL, 0, 0, '1', 0);

+ 167 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/modules/ItdmWeituoInfoForm.vue

@@ -0,0 +1,167 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="委托编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weituoNo">
+              <a-input v-model="model.weituoNo" placeholder="请输入委托编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="委托单位名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weituoClient">
+              <a-input v-model="model.weituoClient" placeholder="请输入委托单位名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="委托单位地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weituoAddress">
+              <a-input v-model="model.weituoAddress" placeholder="请输入委托单位地址"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="委托联系人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weituoLxr">
+              <a-input v-model="model.weituoLxr" placeholder="请输入委托联系人"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="委托电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weituoPhone">
+              <a-input v-model="model.weituoPhone" placeholder="请输入委托电话"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="委托邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weituoEmail">
+              <a-input v-model="model.weituoEmail" placeholder="请输入委托邮箱"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="报告用章" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bgyz">
+              <j-category-select v-model="model.bgyz" pcode="" placeholder="请选择报告用章"  />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="报告形式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bgxs">
+              <j-category-select v-model="model.bgxs" pcode="" placeholder="请选择报告形式"  />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="特殊要求" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="teshuyaoqiu">
+              <a-input v-model="model.teshuyaoqiu" placeholder="请输入特殊要求"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="审核状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shenheStatus">
+              <a-input v-model="model.shenheStatus" placeholder="请输入审核状态"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="审核错误原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shenheMsg">
+              <a-input v-model="model.shenheMsg" placeholder="请输入审核错误原因"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="审核时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shenheTime">
+              <a-input v-model="model.shenheTime" placeholder="请输入审核时间"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="试验条件文件地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="tiaojianFile">
+              <j-upload v-model="model.tiaojianFile"   ></j-upload>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'ItdmWeituoInfoForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+        },
+        url: {
+          add: "/weituo/itdmWeituoInfo/add",
+          edit: "/weituo/itdmWeituoInfo/edit",
+          queryById: "/weituo/itdmWeituoInfo/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+      handleCategoryChange(value,backObj){
+         this.model = Object.assign(this.model, backObj);
+      }
+    }
+  }
+</script>

+ 84 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/modules/ItdmWeituoInfoModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <itdm-weituo-info-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></itdm-weituo-info-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import ItdmWeituoInfoForm from './ItdmWeituoInfoForm'
+
+  export default {
+    name: 'ItdmWeituoInfoModal',
+    components: {
+      ItdmWeituoInfoForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituo/vue/modules/ItdmWeituoInfoModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <itdm-weituo-info-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></itdm-weituo-info-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import ItdmWeituoInfoForm from './ItdmWeituoInfoForm'
+  export default {
+    name: 'ItdmWeituoInfoModal',
+    components: {
+      ItdmWeituoInfoForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 177 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/controller/ItdmWeituoYijuController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.weituoyiju.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.weituoyiju.entity.ItdmWeituoYiju;
+import org.jeecg.modules.weituoyiju.service.IItdmWeituoYijuService;
+
+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-05-17
+ * @Version: V1.0
+ */
+@Api(tags="委托依据")
+@RestController
+@RequestMapping("/weituoyiju/itdmWeituoYiju")
+@Slf4j
+public class ItdmWeituoYijuController extends JeecgController<ItdmWeituoYiju, IItdmWeituoYijuService> {
+	@Autowired
+	private IItdmWeituoYijuService itdmWeituoYijuService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param itdmWeituoYiju
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "委托依据-分页列表查询")
+	@ApiOperation(value="委托依据-分页列表查询", notes="委托依据-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<ItdmWeituoYiju>> queryPageList(ItdmWeituoYiju itdmWeituoYiju,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ItdmWeituoYiju> queryWrapper = QueryGenerator.initQueryWrapper(itdmWeituoYiju, req.getParameterMap());
+		Page<ItdmWeituoYiju> page = new Page<ItdmWeituoYiju>(pageNo, pageSize);
+		IPage<ItdmWeituoYiju> pageList = itdmWeituoYijuService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param itdmWeituoYiju
+	 * @return
+	 */
+	@AutoLog(value = "委托依据-添加")
+	@ApiOperation(value="委托依据-添加", notes="委托依据-添加")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_yiju:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ItdmWeituoYiju itdmWeituoYiju) {
+		itdmWeituoYijuService.save(itdmWeituoYiju);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param itdmWeituoYiju
+	 * @return
+	 */
+	@AutoLog(value = "委托依据-编辑")
+	@ApiOperation(value="委托依据-编辑", notes="委托依据-编辑")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_yiju:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ItdmWeituoYiju itdmWeituoYiju) {
+		itdmWeituoYijuService.updateById(itdmWeituoYiju);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "委托依据-通过id删除")
+	@ApiOperation(value="委托依据-通过id删除", notes="委托依据-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_yiju:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		itdmWeituoYijuService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "委托依据-批量删除")
+	@ApiOperation(value="委托依据-批量删除", notes="委托依据-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:itdm_weituo_yiju:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.itdmWeituoYijuService.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<ItdmWeituoYiju> queryById(@RequestParam(name="id",required=true) String id) {
+		ItdmWeituoYiju itdmWeituoYiju = itdmWeituoYijuService.getById(id);
+		if(itdmWeituoYiju==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(itdmWeituoYiju);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param itdmWeituoYiju
+    */
+    //@RequiresPermissions("org.jeecg.modules:itdm_weituo_yiju:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ItdmWeituoYiju itdmWeituoYiju) {
+        return super.exportXls(request, itdmWeituoYiju, ItdmWeituoYiju.class, "委托依据");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("itdm_weituo_yiju:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ItdmWeituoYiju.class);
+    }
+
+}

+ 66 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/entity/ItdmWeituoYiju.java

@@ -0,0 +1,66 @@
+package org.jeecg.modules.weituoyiju.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:   2023-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("itdm_weituo_yiju")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="itdm_weituo_yiju对象", description="委托依据")
+public class ItdmWeituoYiju implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**名称*/
+	@Excel(name = "名称", width = 15)
+    @ApiModelProperty(value = "名称")
+    private java.lang.String name;
+	/**代号*/
+	@Excel(name = "代号", width = 15)
+    @ApiModelProperty(value = "代号")
+    private java.lang.String core;
+}

+ 17 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/mapper/ItdmWeituoYijuMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.weituoyiju.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.weituoyiju.entity.ItdmWeituoYiju;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 委托依据
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface ItdmWeituoYijuMapper extends BaseMapper<ItdmWeituoYiju> {
+
+}

+ 5 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/mapper/xml/ItdmWeituoYijuMapper.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.weituoyiju.mapper.ItdmWeituoYijuMapper">
+
+</mapper>

+ 14 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/service/IItdmWeituoYijuService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.weituoyiju.service;
+
+import org.jeecg.modules.weituoyiju.entity.ItdmWeituoYiju;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 委托依据
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+public interface IItdmWeituoYijuService extends IService<ItdmWeituoYiju> {
+
+}

+ 19 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/service/impl/ItdmWeituoYijuServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.weituoyiju.service.impl;
+
+import org.jeecg.modules.weituoyiju.entity.ItdmWeituoYiju;
+import org.jeecg.modules.weituoyiju.mapper.ItdmWeituoYijuMapper;
+import org.jeecg.modules.weituoyiju.service.IItdmWeituoYijuService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 委托依据
+ * @Author: jeecg-boot
+ * @Date:   2023-05-17
+ * @Version: V1.0
+ */
+@Service
+public class ItdmWeituoYijuServiceImpl extends ServiceImpl<ItdmWeituoYijuMapper, ItdmWeituoYiju> implements IItdmWeituoYijuService {
+
+}

+ 197 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/ItdmWeituoYijuList.vue

@@ -0,0 +1,197 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="名称">
+              <a-input placeholder="请输入名称" v-model="queryParam.name"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="代号">
+              <a-input placeholder="请输入代号" v-model="queryParam.core"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('委托依据')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <itdm-weituo-yiju-modal ref="modalForm" @ok="modalFormOk"></itdm-weituo-yiju-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import ItdmWeituoYijuModal from './modules/ItdmWeituoYijuModal'
+
+  export default {
+    name: 'ItdmWeituoYijuList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      ItdmWeituoYijuModal
+    },
+    data () {
+      return {
+        description: '委托依据管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'名称',
+            align:"center",
+            dataIndex: 'name'
+          },
+          {
+            title:'代号',
+            align:"center",
+            dataIndex: 'core'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/weituoyiju/itdmWeituoYiju/list",
+          delete: "/weituoyiju/itdmWeituoYiju/delete",
+          deleteBatch: "/weituoyiju/itdmWeituoYiju/deleteBatch",
+          exportXlsUrl: "/weituoyiju/itdmWeituoYiju/exportXls",
+          importExcelUrl: "weituoyiju/itdmWeituoYiju/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'name',text:'名称',dictCode:''})
+        fieldList.push({type:'string',value:'core',text:'代号',dictCode:''})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/ItdmWeituoYiju_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/weituoyiju文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('202305170840940050', NULL, '委托依据', '/weituoyiju/itdmWeituoYijuList', 'module-iTDM/weituoyiju/ItdmWeituoYijuList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 1, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202305170840940051', '202305170840940050', '新增', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_yiju:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202305170840940052', '202305170840940050', '编辑', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_yiju:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202305170840940053', '202305170840940050', '删除', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_yiju:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202305170840940054', '202305170840940050', '批量删除', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_yiju:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202305170840940055', '202305170840940050', '导出excel', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_yiju:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202305170840940056', '202305170840940050', '导入excel', NULL, NULL, 0, NULL, NULL, 2, 'org.jeecg.modules:itdm_weituo_yiju:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-17 08:40:05', NULL, NULL, 0, 0, '1', 0);

+ 115 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/modules/ItdmWeituoYijuForm.vue

@@ -0,0 +1,115 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
+              <a-input v-model="model.name" placeholder="请输入名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="代号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="core">
+              <a-input v-model="model.core" placeholder="请输入代号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'ItdmWeituoYijuForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+           name: [
+              { required: true, message: '请输入名称!'},
+           ],
+           core: [
+              { required: true, message: '请输入代号!'},
+           ],
+        },
+        url: {
+          add: "/weituoyiju/itdmWeituoYiju/add",
+          edit: "/weituoyiju/itdmWeituoYiju/edit",
+          queryById: "/weituoyiju/itdmWeituoYiju/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>

+ 84 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/modules/ItdmWeituoYijuModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <itdm-weituo-yiju-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></itdm-weituo-yiju-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import ItdmWeituoYijuForm from './ItdmWeituoYijuForm'
+
+  export default {
+    name: 'ItdmWeituoYijuModal',
+    components: {
+      ItdmWeituoYijuForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/weituoyiju/vue/modules/ItdmWeituoYijuModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <itdm-weituo-yiju-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></itdm-weituo-yiju-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import ItdmWeituoYijuForm from './ItdmWeituoYijuForm'
+  export default {
+    name: 'ItdmWeituoYijuModal',
+    components: {
+      ItdmWeituoYijuForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 38 - 0
itdmServer/pom.xml

@@ -59,6 +59,11 @@
 		<!-- Log4j2爆雷漏洞 -->
 		<log4j2.version>2.17.0</log4j2.version>
 		<logback.version>1.2.9</logback.version>
+		<org.mapstruct.version>1.5.5.Final</org.mapstruct.version>
+		<org.projectlombok.version>1.18.22</org.projectlombok.version>
+
+		<lombok.mapstruct.binding.version>0.2.0</lombok.mapstruct.binding.version>
+
 	</properties>
 
 	<modules>
@@ -98,6 +103,8 @@
 	</repositories>
 
 	<dependencies>
+
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
@@ -128,7 +135,20 @@
 	</dependencies>
 
 	<dependencyManagement>
+
+
+
 		<dependencies>
+			<dependency>
+				<groupId>org.mapstruct</groupId>
+				<artifactId>mapstruct</artifactId>
+				<version>${org.mapstruct.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.mapstruct</groupId>
+				<artifactId>mapstruct-jdk8</artifactId> <!-- use mapstruct-jdk8 for Java 8 or higher -->
+				<version>${org.mapstruct.version}</version>
+			</dependency>
 			<!-- spring-cloud-->
 			<dependency>
 				<groupId>org.springframework.cloud</groupId>
@@ -339,6 +359,24 @@
                     <source>1.8</source>
                     <target>1.8</target>
                     <encoding>UTF-8</encoding>
+					<annotationProcessorPaths>
+						<path>
+							<groupId>org.mapstruct</groupId>
+							<artifactId>mapstruct-processor</artifactId>
+							<version>${org.mapstruct.version}</version>
+						</path>
+						<path>
+							<groupId>org.projectlombok</groupId>
+							<artifactId>lombok</artifactId>
+							<version>${org.projectlombok.version}</version>
+						</path>
+						<path>
+							<groupId>org.projectlombok</groupId>
+							<artifactId>lombok-mapstruct-binding</artifactId>
+							<version>${lombok.mapstruct.binding.version}</version>
+						</path>
+						<!-- other annotation processors -->
+					</annotationProcessorPaths>
                 </configuration>
             </plugin>
             <!-- 打包跳过测试 -->