浏览代码

新增节点新增物质登记表
修改通讯录
修改员工档案
证件管理

yuansh 2 年之前
父节点
当前提交
afcaa628c3
共有 29 个文件被更改,包括 1414 次插入11 次删除
  1. 167 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/controller/SyCertificatesController.java
  2. 239 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/controller/SyMaterialController.java
  3. 95 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyCertificates.java
  4. 64 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyMaterial.java
  5. 65 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyMaterialB.java
  6. 67 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyMaterialC.java
  7. 17 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyCertificatesMapper.java
  8. 18 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialBMapper.java
  9. 18 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialCMapper.java
  10. 17 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialMapper.java
  11. 18 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialBMapper.xml
  12. 18 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialCMapper.xml
  13. 5 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialMapper.xml
  14. 14 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyCertificatesService.java
  15. 16 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyMaterialBService.java
  16. 16 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyMaterialCService.java
  17. 41 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyMaterialService.java
  18. 19 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyCertificatesServiceImpl.java
  19. 27 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyMaterialBServiceImpl.java
  20. 27 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyMaterialCServiceImpl.java
  21. 90 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyMaterialServiceImpl.java
  22. 85 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/vo/SyMaterialPage.java
  23. 40 6
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  24. 144 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  25. 9 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
  26. 44 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  27. 15 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  28. 14 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  29. 5 5
      jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml

+ 167 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/controller/SyCertificatesController.java

@@ -0,0 +1,167 @@
+package org.jeecg.modules.oa.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+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.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.oa.entity.SyCertificates;
+import org.jeecg.modules.oa.service.ISyCertificatesService;
+import java.util.Date;
+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.common.system.base.controller.JeecgController;
+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.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;
+
+ /**
+ * @Description: 证件管理
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="证件管理")
+@RestController
+@RequestMapping("/oa/syCertificates")
+public class SyCertificatesController extends JeecgController<SyCertificates, ISyCertificatesService> {
+	@Autowired
+	private ISyCertificatesService syCertificatesService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param syCertificates
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "证件管理-分页列表查询")
+	@ApiOperation(value="证件管理-分页列表查询", notes="证件管理-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(SyCertificates syCertificates,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SyCertificates> queryWrapper = QueryGenerator.initQueryWrapper(syCertificates, req.getParameterMap());
+		Page<SyCertificates> page = new Page<SyCertificates>(pageNo, pageSize);
+		IPage<SyCertificates> pageList = syCertificatesService.page(page, queryWrapper);
+		return Result.ok(pageList);
+	}
+	
+	/**
+	 * 添加
+	 *
+	 * @param syCertificates
+	 * @return
+	 */
+	@AutoLog(value = "证件管理-添加")
+	@ApiOperation(value="证件管理-添加", notes="证件管理-添加")
+	@PostMapping(value = "/add")
+	public Result<?> add(@RequestBody SyCertificates syCertificates) {
+		syCertificatesService.save(syCertificates);
+		return Result.ok("添加成功!");
+	}
+	
+	/**
+	 * 编辑
+	 *
+	 * @param syCertificates
+	 * @return
+	 */
+	@AutoLog(value = "证件管理-编辑")
+	@ApiOperation(value="证件管理-编辑", notes="证件管理-编辑")
+	@PutMapping(value = "/edit")
+	public Result<?> edit(@RequestBody SyCertificates syCertificates) {
+		syCertificatesService.updateById(syCertificates);
+		return Result.ok("编辑成功!");
+	}
+	
+	/**
+	 * 通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "证件管理-通过id删除")
+	@ApiOperation(value="证件管理-通过id删除", notes="证件管理-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		syCertificatesService.removeById(id);
+		return Result.ok("删除成功!");
+	}
+	
+	/**
+	 * 批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "证件管理-批量删除")
+	@ApiOperation(value="证件管理-批量删除", notes="证件管理-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.syCertificatesService.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<?> queryById(@RequestParam(name="id",required=true) String id) {
+		SyCertificates syCertificates = syCertificatesService.getById(id);
+		return Result.ok(syCertificates);
+	}
+
+  /**
+   * 导出excel
+   *
+   * @param request
+   * @param syCertificates
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, SyCertificates syCertificates) {
+      return super.exportXls(request, syCertificates, SyCertificates.class, "证件管理");
+  }
+
+  /**
+   * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      return super.importExcel(request, response, SyCertificates.class);
+  }
+
+}

+ 239 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/controller/SyMaterialController.java

@@ -0,0 +1,239 @@
+package org.jeecg.modules.oa.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+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.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import org.jeecg.modules.oa.entity.SyMaterial;
+import org.jeecg.modules.oa.vo.SyMaterialPage;
+import org.jeecg.modules.oa.service.ISyMaterialService;
+import org.jeecg.modules.oa.service.ISyMaterialBService;
+import org.jeecg.modules.oa.service.ISyMaterialCService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSON;
+
+ /**
+ * @Description: 物资登记表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@RestController
+@RequestMapping("/oa/syMaterial")
+@Slf4j
+public class SyMaterialController {
+	@Autowired
+	private ISyMaterialService syMaterialService;
+	@Autowired
+	private ISyMaterialBService syMaterialBService;
+	@Autowired
+	private ISyMaterialCService syMaterialCService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param syMaterial
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(SyMaterial syMaterial,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SyMaterial> queryWrapper = QueryGenerator.initQueryWrapper(syMaterial, req.getParameterMap());
+		Page<SyMaterial> page = new Page<SyMaterial>(pageNo, pageSize);
+		IPage<SyMaterial> pageList = syMaterialService.page(page, queryWrapper);
+		return Result.ok(pageList);
+	}
+	
+	/**
+	 * 添加
+	 *
+	 * @param syMaterialPage
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<?> add(@RequestBody SyMaterialPage syMaterialPage) {
+		SyMaterial syMaterial = new SyMaterial();
+		BeanUtils.copyProperties(syMaterialPage, syMaterial);
+		syMaterialService.saveMain(syMaterial, syMaterialPage.getSyMaterialBList(),syMaterialPage.getSyMaterialCList());
+		return Result.ok("添加成功!");
+	}
+	
+	/**
+	 * 编辑
+	 *
+	 * @param syMaterialPage
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<?> edit(@RequestBody SyMaterialPage syMaterialPage) {
+		SyMaterial syMaterial = new SyMaterial();
+		BeanUtils.copyProperties(syMaterialPage, syMaterial);
+		syMaterialService.updateMain(syMaterial, syMaterialPage.getSyMaterialBList(),syMaterialPage.getSyMaterialCList());
+		return Result.ok("编辑成功!");
+	}
+	
+	/**
+	 * 通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+	    syMaterialService.delMain(id);
+		return Result.ok("删除成功!");
+	}
+	
+	/**
+	 * 批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.syMaterialService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.ok("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+     *
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+		SyMaterial syMaterial = syMaterialService.getById(id);
+		return Result.ok(syMaterial);
+	}
+	
+	/**
+	 * 通过id查询
+     *
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/querySyMaterialBByMainId")
+	public Result<?> querySyMaterialBListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<SyMaterialB> syMaterialBList = syMaterialBService.selectByMainId(id);
+		return Result.ok(syMaterialBList);
+	}
+	/**
+	 * 通过id查询
+     *
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/querySyMaterialCByMainId")
+	public Result<?> querySyMaterialCListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<SyMaterialC> syMaterialCList = syMaterialCService.selectByMainId(id);
+		return Result.ok(syMaterialCList);
+	}
+
+  /**
+   * 导出excel
+   *
+   * @param request
+   * @param syMaterial
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, SyMaterial syMaterial) {
+      // Step.1 组装查询条件
+      QueryWrapper<SyMaterial> queryWrapper = QueryGenerator.initQueryWrapper(syMaterial, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //Step.2 获取导出数据
+      List<SyMaterialPage> pageList = new ArrayList<SyMaterialPage>();
+      List<SyMaterial> syMaterialList = syMaterialService.list(queryWrapper);
+      for (SyMaterial temp : syMaterialList) {
+          SyMaterialPage vo = new SyMaterialPage();
+          BeanUtils.copyProperties(temp, vo);
+          List<SyMaterialB> syMaterialBList = syMaterialBService.selectByMainId(temp.getId());
+          vo.setSyMaterialBList(syMaterialBList);
+          List<SyMaterialC> syMaterialCList = syMaterialCService.selectByMainId(temp.getId());
+          vo.setSyMaterialCList(syMaterialCList);
+          pageList.add(vo);
+      }
+      //Step.3 调用AutoPoi导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "物资登记表");
+      mv.addObject(NormalExcelConstants.CLASS, SyMaterialPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("物资登记表数据", "导出人:"+sysUser.getRealname(), "物资登记表"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+  }
+
+  /**
+   * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          MultipartFile file = entity.getValue();// 获取上传文件对象
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<SyMaterialPage> list = ExcelImportUtil.importExcel(file.getInputStream(), SyMaterialPage.class, params);
+              for (SyMaterialPage page : list) {
+                  SyMaterial po = new SyMaterial();
+                  BeanUtils.copyProperties(page, po);
+                  syMaterialService.saveMain(po, page.getSyMaterialBList(),page.getSyMaterialCList());
+              }
+              return Result.ok("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.ok("文件导入失败!");
+  }
+
+}

+ 95 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyCertificates.java

@@ -0,0 +1,95 @@
+package org.jeecg.modules.oa.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 证件管理
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("sy_certificates")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="sy_certificates对象", description="证件管理")
+public class SyCertificates {
+    
+	/**主键*/
+	@TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "主键")
+	private String id;
+	/**创建人登录名称*/
+	@Excel(name = "创建人登录名称", width = 15)
+    @ApiModelProperty(value = "创建人登录名称")
+	private String createBy;
+	/**创建日期*/
+	@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 Date createTime;
+	/**更新人登录名称*/
+	@Excel(name = "更新人登录名称", width = 15)
+    @ApiModelProperty(value = "更新人登录名称")
+	private String updateBy;
+	/**更新日期*/
+	@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 Date updateTime;
+	/**证件名称*/
+	@Excel(name = "证件名称", width = 15)
+    @ApiModelProperty(value = "证件名称")
+	private String name;
+	/**证件所有人(到期通知人)*/
+	@Excel(name = "证件所有人(到期通知人)", width = 15)
+    @ApiModelProperty(value = "证件所有人(到期通知人)")
+	private String userId;
+	/**证件编号*/
+	@Excel(name = "证件编号", width = 15)
+    @ApiModelProperty(value = "证件编号")
+	private String code;
+	/**起始日期*/
+	@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 Date beginDate;
+	/**到期时间*/
+	@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 Date endDate;
+	/**管理人(到期通知人)*/
+	@Excel(name = "管理人(到期通知人)", width = 15)
+    @ApiModelProperty(value = "管理人(到期通知人)")
+	private String manageId;
+	/**提前通知时间/月*/
+	@Excel(name = "提前通知时间/月", width = 15)
+    @ApiModelProperty(value = "提前通知时间/月")
+	private Integer noticeMonth;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+	private String remarks;
+	/**删除标记*/
+	@Excel(name = "删除标记", width = 15)
+    @ApiModelProperty(value = "删除标记")
+	private String delFlag;
+}

+ 64 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyMaterial.java

@@ -0,0 +1,64 @@
+package org.jeecg.modules.oa.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * @Description: 物资登记表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("sy_material")
+public class SyMaterial implements Serializable {
+    private static final long serialVersionUID = 1L;
+    
+	/**主键*/
+	@TableId(type = IdType.ID_WORKER_STR)
+	private String id;
+	/**创建人登录名称*/
+	private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+	/**更新人登录名称*/
+	private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date updateTime;
+	/**编号*/
+	private String code;
+	/**设备名称*/
+	private String name;
+	/**型号*/
+	private String model;
+	/**购买日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date buyTime;
+	/**购买数量*/
+	private Double buyNum;
+	/**单位*/
+	private String unit;
+	/**购买金额*/
+	private Double amount;
+	/**使用者*/
+	private String useId;
+	/**状态*/
+	private String type;
+	/**供货方*/
+	private String supply;
+	/**备注*/
+	private String remarks;
+	/**来源*/
+	private String source;
+}

+ 65 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyMaterialB.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.oa.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+
+/**
+ * @Description: 维修服务记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("sy_material_b")
+public class SyMaterialB implements Serializable {
+    private static final long serialVersionUID = 1L;
+    
+	/**主键*/
+	@TableId(type = IdType.ID_WORKER_STR)
+	private String id;
+	/**创建人登录名称*/
+    @Excel(name = "创建人登录名称", width = 15)
+	private String createBy;
+	/**创建日期*/
+	@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")
+	private Date createTime;
+	/**更新人登录名称*/
+    @Excel(name = "更新人登录名称", width = 15)
+	private String updateBy;
+	/**更新日期*/
+	@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")
+	private Date updateTime;
+	/**headId*/
+	private String headId;
+	/**主要信息编号*/
+    @Excel(name = "主要信息编号", width = 15)
+	private String headCode;
+	/**日期*/
+	@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")
+	private Date infoDate;
+	/**维修项目*/
+    @Excel(name = "维修项目", width = 15)
+	private String items;
+	/**费用*/
+    @Excel(name = "费用", width = 15)
+	private java.math.BigDecimal cost;
+	/**备注*/
+    @Excel(name = "备注", width = 15)
+	private String remarks;
+	/**delFlag*/
+    @Excel(name = "delFlag", width = 15)
+	private String delFlag;
+}

+ 67 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyMaterialC.java

@@ -0,0 +1,67 @@
+package org.jeecg.modules.oa.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+
+/**
+ * @Description: 领用记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("sy_material_c")
+public class SyMaterialC implements Serializable {
+    private static final long serialVersionUID = 1L;
+    
+	/**主键*/
+	@TableId(type = IdType.ID_WORKER_STR)
+	private String id;
+	/**创建人登录名称*/
+    @Excel(name = "创建人登录名称", width = 15)
+	private String createBy;
+	/**创建日期*/
+	@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")
+	private Date createTime;
+	/**更新人登录名称*/
+    @Excel(name = "更新人登录名称", width = 15)
+	private String updateBy;
+	/**更新日期*/
+	@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")
+	private Date updateTime;
+	/**主表主键(物资登记表id)*/
+	private String headId;
+	/**主要信息编号*/
+    @Excel(name = "主要信息编号", width = 15)
+	private String headCode;
+	/**领用日期*/
+	@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")
+	private Date useDate;
+	/**领用人*/
+    @Excel(name = "领用人", width = 15)
+	private String useId;
+	/**归还日期*/
+	@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")
+	private Date returnDate;
+	/**备注*/
+    @Excel(name = "备注", width = 15)
+	private String remarks;
+	/**delFlag*/
+    @Excel(name = "delFlag", width = 15)
+	private String delFlag;
+}

+ 17 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyCertificatesMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.oa.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.oa.entity.SyCertificates;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 证件管理
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface SyCertificatesMapper extends BaseMapper<SyCertificates> {
+
+}

+ 18 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialBMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.oa.mapper;
+
+import java.util.List;
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 维修服务记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface SyMaterialBMapper extends BaseMapper<SyMaterialB> {
+
+	public boolean deleteByMainId(String mainId);
+    
+	public List<SyMaterialB> selectByMainId(String mainId);
+}

+ 18 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialCMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.oa.mapper;
+
+import java.util.List;
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 领用记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface SyMaterialCMapper extends BaseMapper<SyMaterialC> {
+
+	public boolean deleteByMainId(String mainId);
+    
+	public List<SyMaterialC> selectByMainId(String mainId);
+}

+ 17 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.oa.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.oa.entity.SyMaterial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 物资登记表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface SyMaterialMapper extends BaseMapper<SyMaterial> {
+
+}

+ 18 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialBMapper.xml

@@ -0,0 +1,18 @@
+<?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.oa.mapper.SyMaterialBMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sy_material_b 
+		WHERE
+			 head_id = #{id} 		
+	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.oa.entity.SyMaterialB">
+		SELECT * 
+		FROM  sy_material_b
+		WHERE
+			 head_id = #{id} 		
+	</select>
+</mapper>

+ 18 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialCMapper.xml

@@ -0,0 +1,18 @@
+<?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.oa.mapper.SyMaterialCMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  sy_material_c 
+		WHERE
+			 head_id = #{id} 		
+	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.oa.entity.SyMaterialC">
+		SELECT * 
+		FROM  sy_material_c
+		WHERE
+			 head_id = #{id} 		
+	</select>
+</mapper>

+ 5 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialMapper.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.oa.mapper.SyMaterialMapper">
+
+</mapper>

+ 14 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyCertificatesService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.oa.service;
+
+import org.jeecg.modules.oa.entity.SyCertificates;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 证件管理
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface ISyCertificatesService extends IService<SyCertificates> {
+
+}

+ 16 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyMaterialBService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.oa.service;
+
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 维修服务记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface ISyMaterialBService extends IService<SyMaterialB> {
+
+	public List<SyMaterialB> selectByMainId(String mainId);
+}

+ 16 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyMaterialCService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.oa.service;
+
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 领用记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface ISyMaterialCService extends IService<SyMaterialC> {
+
+	public List<SyMaterialC> selectByMainId(String mainId);
+}

+ 41 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyMaterialService.java

@@ -0,0 +1,41 @@
+package org.jeecg.modules.oa.service;
+
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import org.jeecg.modules.oa.entity.SyMaterial;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 物资登记表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+public interface ISyMaterialService extends IService<SyMaterial> {
+
+	/**
+	 * 添加一对多
+	 * 
+	 */
+	public void saveMain(SyMaterial syMaterial,List<SyMaterialB> syMaterialBList,List<SyMaterialC> syMaterialCList) ;
+	
+	/**
+	 * 修改一对多
+	 * 
+	 */
+	public void updateMain(SyMaterial syMaterial,List<SyMaterialB> syMaterialBList,List<SyMaterialC> syMaterialCList);
+	
+	/**
+	 * 删除一对多
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+	
+}

+ 19 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyCertificatesServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.oa.service.impl;
+
+import org.jeecg.modules.oa.entity.SyCertificates;
+import org.jeecg.modules.oa.mapper.SyCertificatesMapper;
+import org.jeecg.modules.oa.service.ISyCertificatesService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 证件管理
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Service
+public class SyCertificatesServiceImpl extends ServiceImpl<SyCertificatesMapper, SyCertificates> implements ISyCertificatesService {
+
+}

+ 27 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyMaterialBServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.oa.service.impl;
+
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import org.jeecg.modules.oa.mapper.SyMaterialBMapper;
+import org.jeecg.modules.oa.service.ISyMaterialBService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 维修服务记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Service
+public class SyMaterialBServiceImpl extends ServiceImpl<SyMaterialBMapper, SyMaterialB> implements ISyMaterialBService {
+	
+	@Autowired
+	private SyMaterialBMapper syMaterialBMapper;
+	
+	@Override
+	public List<SyMaterialB> selectByMainId(String mainId) {
+		return syMaterialBMapper.selectByMainId(mainId);
+	}
+}

+ 27 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyMaterialCServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.oa.service.impl;
+
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import org.jeecg.modules.oa.mapper.SyMaterialCMapper;
+import org.jeecg.modules.oa.service.ISyMaterialCService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 领用记录
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Service
+public class SyMaterialCServiceImpl extends ServiceImpl<SyMaterialCMapper, SyMaterialC> implements ISyMaterialCService {
+	
+	@Autowired
+	private SyMaterialCMapper syMaterialCMapper;
+	
+	@Override
+	public List<SyMaterialC> selectByMainId(String mainId) {
+		return syMaterialCMapper.selectByMainId(mainId);
+	}
+}

+ 90 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyMaterialServiceImpl.java

@@ -0,0 +1,90 @@
+package org.jeecg.modules.oa.service.impl;
+
+import org.jeecg.modules.oa.entity.SyMaterial;
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import org.jeecg.modules.oa.mapper.SyMaterialBMapper;
+import org.jeecg.modules.oa.mapper.SyMaterialCMapper;
+import org.jeecg.modules.oa.mapper.SyMaterialMapper;
+import org.jeecg.modules.oa.service.ISyMaterialService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 物资登记表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Service
+public class SyMaterialServiceImpl extends ServiceImpl<SyMaterialMapper, SyMaterial> implements ISyMaterialService {
+
+	@Autowired
+	private SyMaterialMapper syMaterialMapper;
+	@Autowired
+	private SyMaterialBMapper syMaterialBMapper;
+	@Autowired
+	private SyMaterialCMapper syMaterialCMapper;
+	
+	@Override
+	@Transactional
+	public void saveMain(SyMaterial syMaterial, List<SyMaterialB> syMaterialBList,List<SyMaterialC> syMaterialCList) {
+		syMaterialMapper.insert(syMaterial);
+		for(SyMaterialB entity:syMaterialBList) {
+			//外键设置
+			entity.setHeadId(syMaterial.getId());
+			syMaterialBMapper.insert(entity);
+		}
+		for(SyMaterialC entity:syMaterialCList) {
+			//外键设置
+			entity.setHeadId(syMaterial.getId());
+			syMaterialCMapper.insert(entity);
+		}
+	}
+
+	@Override
+	@Transactional
+	public void updateMain(SyMaterial syMaterial,List<SyMaterialB> syMaterialBList,List<SyMaterialC> syMaterialCList) {
+		syMaterialMapper.updateById(syMaterial);
+		
+		//1.先删除子表数据
+		syMaterialBMapper.deleteByMainId(syMaterial.getId());
+		syMaterialCMapper.deleteByMainId(syMaterial.getId());
+		
+		//2.子表数据重新插入
+		for(SyMaterialB entity:syMaterialBList) {
+			//外键设置
+			entity.setHeadId(syMaterial.getId());
+			syMaterialBMapper.insert(entity);
+		}
+		for(SyMaterialC entity:syMaterialCList) {
+			//外键设置
+			entity.setHeadId(syMaterial.getId());
+			syMaterialCMapper.insert(entity);
+		}
+	}
+
+	@Override
+	@Transactional
+	public void delMain(String id) {
+		syMaterialBMapper.deleteByMainId(id);
+		syMaterialCMapper.deleteByMainId(id);
+		syMaterialMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			syMaterialBMapper.deleteByMainId(id.toString());
+			syMaterialCMapper.deleteByMainId(id.toString());
+			syMaterialMapper.deleteById(id);
+		}
+	}
+	
+}

+ 85 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/vo/SyMaterialPage.java

@@ -0,0 +1,85 @@
+package org.jeecg.modules.oa.vo;
+
+import java.util.List;
+import org.jeecg.modules.oa.entity.SyMaterial;
+import org.jeecg.modules.oa.entity.SyMaterialB;
+import org.jeecg.modules.oa.entity.SyMaterialC;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+
+/**
+ * @Description: 物资登记表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-30
+ * @Version: V1.0
+ */
+@Data
+public class SyMaterialPage {
+	
+	/**主键*/
+	private String id;
+	/**创建人登录名称*/
+  	@Excel(name = "创建人登录名称", width = 15)
+	private String createBy;
+	/**创建日期*/
+  	@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")
+	private Date createTime;
+	/**更新人登录名称*/
+  	@Excel(name = "更新人登录名称", width = 15)
+	private String updateBy;
+	/**更新日期*/
+  	@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")
+	private Date updateTime;
+	/**编号*/
+  	@Excel(name = "编号", width = 15)
+	private String code;
+	/**设备名称*/
+  	@Excel(name = "设备名称", width = 15)
+	private String name;
+	/**型号*/
+  	@Excel(name = "型号", width = 15)
+	private String model;
+	/**购买日期*/
+  	@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")
+	private Date buyTime;
+	/**购买数量*/
+  	@Excel(name = "购买数量", width = 15)
+	private Double buyNum;
+	/**单位*/
+  	@Excel(name = "单位", width = 15)
+	private String unit;
+	/**购买金额*/
+  	@Excel(name = "购买金额", width = 15)
+	private Double amount;
+	/**使用者*/
+  	@Excel(name = "使用者", width = 15)
+	private String useId;
+	/**状态*/
+  	@Excel(name = "状态", width = 15)
+	private String type;
+	/**供货方*/
+  	@Excel(name = "供货方", width = 15)
+	private String supply;
+	/**备注*/
+  	@Excel(name = "备注", width = 15)
+	private String remarks;
+	/**来源*/
+  	@Excel(name = "来源", width = 15)
+	private String source;
+	
+	@ExcelCollection(name="维修服务记录")
+	private List<SyMaterialB> syMaterialBList;
+	@ExcelCollection(name="领用记录")
+	private List<SyMaterialC> syMaterialCList;
+	
+}

+ 40 - 6
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -689,10 +689,13 @@ public class SysUserController {
             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
             @RequestParam(name = "orgCode",required = false) String orgCode,
-            SysUser userParams
-    ) {
+            SysUser userParams) {
+
         IPage page = new Page(pageNo, pageSize);
-        IPage<SysUserSysDepartModel> pageList = sysUserService.queryUserByOrgCode(orgCode, userParams, page);
+        IPage<SysUserSysDepartModel> pageList = sysUserService.selectUserInfo(orgCode, userParams, page);
+        return Result.ok(pageList);
+
+        /*IPage<SysUserSysDepartModel> pageList = sysUserService.queryUserByOrgCode(orgCode, userParams, page);
         List<SysUserSysDepartModel> list = pageList.getRecords();
 
         // 记录所有出现过的 user, key = userId
@@ -723,9 +726,33 @@ public class SysUserController {
 
         IPage<JSONObject> result = new Page<>(pageNo, pageSize, pageList.getTotal());
         result.setRecords(resultJson.toJavaList(JSONObject.class));
-        return Result.ok(result);
+        return Result.ok(result);*/
+    }
+
+    /**
+     * deleteAction(“/sys/user/deleteCommunication”, {id: id})
+     * 批量删除通讯录
+     */
+    @RequestMapping(value = "/deleteCommunication", method = RequestMethod.DELETE)
+    public Result<SysUserDepart> deleteCommunication(
+            @RequestParam(name="id") String id) {
+        Result<SysUserDepart> result = new Result<SysUserDepart>();
+        try {
+            if(StringUtils.isNotBlank(id)){
+                String[] ids = id.split(",");
+                for(String o:ids){
+                    sysUserService.updateCommunication(o);
+                }
+            }
+            result.success("删除成功!");
+        }catch(Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("删除失败!");
+        }
+        return result;
     }
 
+
     /**
      * 给指定部门添加对应的用户
      */
@@ -755,6 +782,7 @@ public class SysUserController {
     }
 
     /**
+     *   deleteAction(“/sys/user/deleteUserInDepart”, {id: id})
      *   删除指定机构的用户关系
      */
     @RequestMapping(value = "/deleteUserInDepart", method = RequestMethod.DELETE)
@@ -910,8 +938,8 @@ public class SysUserController {
 	}
 
 	/**
-	 * 
-	 * @param 根据用户名或手机号查询用户信息
+	 * 根据用户名或手机号查询用户信息
+	 * @param
 	 * @return
 	 */
 	@GetMapping("/querySysUser")
@@ -1142,6 +1170,12 @@ public class SysUserController {
             pageList.getRecords().forEach(item->{
                 //TODO 临时借用这个字段用于页面展示
                 item.setOrgCode(useDepNames.get(item.getId()));
+                if(useDepNames.containsKey(item.getId())){
+                    item.setRealname(useDepNames.get(item.getId())+"-"+item.getRealname());
+                }else{
+                    item.setRealname("无部门"+"-"+item.getRealname());
+                }
+
             });
         }
         result.setSuccess(true);

+ 144 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -5,6 +5,7 @@ import java.util.Date;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
 import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -182,4 +183,147 @@ public class SysUser implements Serializable {
      */
     @Excel(name="所属公司名称",width = 15)
     private String pkOrgName;
+
+    /**英文名*/
+    @Excel(name = "英文名", width = 15)
+    @ApiModelProperty(value = "英文名")
+    private java.lang.String nEnName;
+    /**婚否(1是,0否)*/
+    @Excel(name = "婚否(1是,0否)", width = 15)
+    @ApiModelProperty(value = "婚否(1是,0否)")
+    private java.lang.String nMarriage;
+    /**户口*/
+    @Excel(name = "户口", width = 15)
+    @ApiModelProperty(value = "户口")
+    private java.lang.String nRegistered;
+    /**户口所在地*/
+    @Excel(name = "户口所在地", width = 15)
+    @ApiModelProperty(value = "户口所在地")
+    private java.lang.String nRegisteredAddr;
+    /**政治面貌*/
+    @Excel(name = "政治面貌", width = 15)
+    @ApiModelProperty(value = "政治面貌")
+    private java.lang.String nOutlook;
+    /**专业*/
+    @Excel(name = "专业", width = 15)
+    @ApiModelProperty(value = "专业")
+    private java.lang.String nMajor;
+    /**学历*/
+    @Excel(name = "学历", width = 15)
+    @ApiModelProperty(value = "学历")
+    private java.lang.String nEducation;
+    /**毕业时间*/
+    @Excel(name = "毕业时间", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "毕业时间")
+    private java.util.Date nGraduationTime;
+    /**入职日期*/
+    @Excel(name = "入职日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "入职日期")
+    private java.util.Date nInductionTime;
+    /**公司座机*/
+    @Excel(name = "公司座机", width = 15)
+    @ApiModelProperty(value = "公司座机")
+    private java.lang.String nCompanyPhone;
+    /**公司内线*/
+    @Excel(name = "公司内线", width = 15)
+    @ApiModelProperty(value = "公司内线")
+    private java.lang.String nCompanyLine;
+    /**工资卡号*/
+    @Excel(name = "工资卡号", width = 15)
+    @ApiModelProperty(value = "工资卡号")
+    private java.lang.String nCardNo;
+    /**虚拟网号*/
+    @Excel(name = "虚拟网号", width = 15)
+    @ApiModelProperty(value = "虚拟网号")
+    private java.lang.String nVirtualNo;
+    /**转正日期*/
+    @Excel(name = "转正日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "转正日期")
+    private java.util.Date nBecomeTime;
+    /**社保申报日期*/
+    @Excel(name = "社保申报日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "社保申报日期")
+    private java.util.Date nSocialTime;
+    /**公积金日期*/
+    @Excel(name = "公积金日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "公积金日期")
+    private java.util.Date nFundTime;
+    /**公积金基数*/
+    @Excel(name = "公积金基数", width = 15)
+    @ApiModelProperty(value = "公积金基数")
+    private java.lang.String nFundBase;
+    /**社保基数*/
+    @Excel(name = "社保基数", width = 15)
+    @ApiModelProperty(value = "社保基数")
+    private java.lang.String nSocialBase;
+    /**年假*/
+    @Excel(name = "年假", width = 15)
+    @ApiModelProperty(value = "年假")
+    private java.lang.Integer nAnnualNum;
+    /**已请年假天数*/
+    @Excel(name = "已请年假天数", width = 15)
+    @ApiModelProperty(value = "已请年假天数")
+    private java.lang.String nAnnualOldNum;
+    /**剩余年假天数*/
+    @Excel(name = "剩余年假天数", width = 15)
+    @ApiModelProperty(value = "剩余年假天数")
+    private java.lang.Integer nAnnualNowNum;
+    /**民族*/
+    @Excel(name = "民族", width = 15)
+    @ApiModelProperty(value = "民族")
+    private java.lang.String nNation;
+    /**籍贯*/
+    @Excel(name = "籍贯", width = 15)
+    @ApiModelProperty(value = "籍贯")
+    private java.lang.String nNativePlace;
+    /**身份证号码*/
+    @Excel(name = "身份证号码", width = 15)
+    @ApiModelProperty(value = "身份证号码")
+    private java.lang.String nIdNo;
+    /**家庭住址*/
+    @Excel(name = "家庭住址", width = 15)
+    @ApiModelProperty(value = "家庭住址")
+    private java.lang.String nHomeAddress;
+    /**对本企业要求*/
+    @Excel(name = "对本企业要求", width = 15)
+    @ApiModelProperty(value = "对本企业要求")
+    private java.lang.String nRequirement;
+    /**希望待遇*/
+    @Excel(name = "希望待遇", width = 15)
+    @ApiModelProperty(value = "希望待遇")
+    private java.lang.String nHopeFor;
+    /**与原单位关系*/
+    @Excel(name = "与原单位关系", width = 15)
+    @ApiModelProperty(value = "与原单位关系")
+    private java.lang.String nRelationshipFor;
+    /**人员类别*/
+    @Excel(name = "人员类别", width = 15)
+    @ApiModelProperty(value = "人员类别")
+    private java.lang.String nPersonnelType;
+    /**简历*/
+    @Excel(name = "简历", width = 15)
+    @ApiModelProperty(value = "简历")
+    private byte[] nResume;
+    /**家庭成员*/
+    @Excel(name = "家庭成员", width = 15)
+    @ApiModelProperty(value = "家庭成员")
+    private java.lang.String nMemberOfFamily;
+    /**备注*/
+    @Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String nRemarks;
+   /**是否OA用户(1是 0否)*/
+    @Excel(name = "是否OA用户(1是 0否)", width = 15)
+    @ApiModelProperty(value = "是否OA用户(1是 0否)")
+    private java.lang.String ifOa;
 }

+ 9 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -91,6 +91,8 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	 */
 	List<SysUserSysDepartModel> getUserByOrgCode(IPage page, @Param("orgCode") String orgCode, @Param("userParams") SysUser userParams);
 
+	List<SysUserSysDepartModel> selectUserInfo(IPage page, @Param("orgCode") String orgCode, @Param("userParams") SysUser userParams);
+
 
     /**
      * 查询 getUserByOrgCode 的Total
@@ -100,7 +102,14 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return
      */
     Integer getUserByOrgCodeTotal(@Param("orgCode") String orgCode, @Param("userParams") SysUser userParams);
+    Integer selectUserInfoTotal(@Param("orgCode") String orgCode, @Param("userParams") SysUser userParams);
 
+	/**
+	 * 删除通讯录
+	 * @param id
+	 * @return
+	 */
+	int updateCommunication(String id);
     /**
      * @Author scott
      * @Date 2019/12/13 16:10

+ 44 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml

@@ -99,6 +99,50 @@
 			sys_depart.org_code ASC
 	</select>
 
+	<select id="selectUserInfo" resultType="org.jeecg.modules.system.entity.SysUser">
+		select group_concat(IFNULL(c.depart_name,'无部门')) AS "departIds",
+			   <!--group_concat(IFNULL(c.id,'')) AS "id",-->
+			   a.id AS "id",
+			   a.realname AS "realname",
+			   a.work_no AS "work_no",
+			   a.post AS "post",
+			   a.telephone AS "telephone",
+			   a.email AS "email",
+			   a.phone AS "phone" ,
+			   a.n_Virtual_No as "nVirtualNo",
+			   a.n_Company_Phone as "nCompanyPhone",
+			   a.n_Company_Line as "nCompanyLine"
+		from sys_user a
+				 left join sys_user_depart b on a.id = b.user_id
+				 left join sys_depart c on c.id = b.dep_id
+
+		WHERE
+		a.del_flag='0' and a.communication !=1 AND c.org_code LIKE '${orgCode}%'
+
+		<if test="userParams != null">
+			<if test="userParams.realname != null and userParams.realname != ''">
+				AND a.realname LIKE '%${userParams.realname}%'
+			</if>
+			<if test="userParams.workNo != null and userParams.workNo != ''">
+				AND a.work_no LIKE '%${userParams.workNo}%'
+			</if>
+		</if>
+		group by a.username,a.realname
+		order by c.org_code ,a.username ASC
+	</select>
+
+	<update id="updateCommunication">
+		update sys_user set communication = 1 where id = #{0}
+	</update>
+	
+	<select id="selectUserInfoTotal" resultType="java.lang.Integer">
+		SELECT COUNT(1) from sys_user a
+		 left join sys_user_depart b on a.id = b.user_id
+		 left join sys_depart c on c.id = b.dep_id
+		WHERE
+		a.del_flag='0' and a.communication !=1 AND c.org_code LIKE '${orgCode}%'
+	</select>
+
 	<!-- 查询 getUserByOrgCode 的总数-->
 	<select id="getUserByOrgCodeTotal" resultType="java.lang.Integer">
 		SELECT COUNT(1) <include refid="getUserByOrgCodeFromSql"/>

+ 15 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -130,7 +130,22 @@ public interface ISysUserService extends IService<SysUser> {
 	 * @return
 	 */
 	IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page);
+	/**
+	 * 根据 orgCode 查询用户,包括子部门下的用户
+	 * ysh
+	 * @param orgCode
+	 * @param userParams 用户查询条件,可为空
+	 * @param page 分页参数
+	 * @return
+	 */
+	IPage<SysUserSysDepartModel> selectUserInfo(String orgCode, SysUser userParams, IPage page);
 
+	/**
+	 * 删除通讯录
+	 * @param id
+	 * @return
+	 */
+	public int updateCommunication(String id);
 	/**
 	 * 根据角色Id查询
 	 * @param

+ 14 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -264,6 +264,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		return result;
 	}
 
+	@Override
+	public IPage<SysUserSysDepartModel> selectUserInfo(String orgCode, SysUser userParams, IPage page) {
+		List<SysUserSysDepartModel> list = baseMapper.selectUserInfo(page, orgCode, userParams);
+		Integer total = baseMapper.selectUserInfoTotal(orgCode, userParams);
+
+		IPage<SysUserSysDepartModel> result = new Page<>(page.getCurrent(), page.getSize(), total);
+		result.setRecords(list);
+
+		return result;
+	}
+	@Override
+	public int updateCommunication(String id){
+		return userMapper.updateCommunication(id);
+	}
 	// 根据角色Id查询
 	@Override
 	public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {

+ 5 - 5
jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -101,11 +101,11 @@ spring:
           password: root
           driver-class-name: com.mysql.jdbc.Driver
           # 多数据源配置
-        master2:
-          url: jdbc:mysql://127.0.0.1:3306/cd_project_management?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true&failOverReadOnly=false&allowPublicKeyRetrieval=true
-          username: root
-          password: root
-          driver-class-name: com.mysql.jdbc.Driver
+#        master2:
+#          url: jdbc:mysql://127.0.0.1:3306/cd_project_management?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true&failOverReadOnly=false&allowPublicKeyRetrieval=true
+#          username: root
+#          password: root
+#          driver-class-name: com.mysql.jdbc.Driver
   #redis 配置
   redis:
     database: 11