虚拟认证清单(订阅-导入导出不完整)

This commit is contained in:
cuijiaming
2023-03-10 16:41:49 +08:00
parent 507d82c33b
commit 16e0e5be74
22 changed files with 2123 additions and 43 deletions
@@ -300,3 +300,28 @@ ALTER TABLE `project_certification_inventory`
ADD COLUMN `certification_progress_remark` varchar(2000) NULL COMMENT '认证进度备注' AFTER `certification_progress`;
-- 将之前的任务清单-认证进度,修改为 认证清单-认证进度 2023-03-08 未同步生产环境
UPDATE `sys_dict` SET `dict_name` = '认证清单-认证进度', `description` = '认证清单-认证进度' WHERE `id` = '1524311122804346881';
-- 认证虚拟清单订阅表 2023-03-10 未同步生产环境
CREATE TABLE `auth_dummy_read` (
`id` varchar(36) NOT NULL,
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) DEFAULT NULL COMMENT '所属部门',
`auth_dummy_inventory_base_id` varchar(32) DEFAULT NULL COMMENT '虚拟认证清单基础表id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 认证虚拟清单系统维护表 2023-03-10 未同步生产环境
CREATE TABLE `auth_dummy_content_change` (
`id` varchar(36) NOT NULL,
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) DEFAULT NULL COMMENT '所属部门',
`connect_id` varchar(32) DEFAULT NULL COMMENT '虚拟认证清单基础表id或虚拟认证清单详情表中的baseId',
`parent_id` varchar(32) DEFAULT NULL COMMENT '父id',
`content_json` longtext COMMENT '内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -0,0 +1,170 @@
package com.jero.modules.authDummy.controller;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.authDummy.entity.AuthDummyContentChangeEO;
import com.jero.modules.authDummy.service.IAuthDummyContentChangeEOService;
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.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
/**
* @Description: 虚拟认证清单系统维护表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
@Api(tags="虚拟认证清单系统维护表")
@RestController
@RequestMapping("/com.jero.modules.authDummy/authDummyContentChangeEO")
@Slf4j
public class AuthDummyContentChangeEOController extends JeroController<AuthDummyContentChangeEO, IAuthDummyContentChangeEOService> {
@Autowired
private IAuthDummyContentChangeEOService authDummyContentChangeEOService;
/**
* 分页列表查询
*
* @param authDummyContentChangeEO
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "虚拟认证清单系统维护表-分页列表查询")
@ApiOperation(value="虚拟认证清单系统维护表-分页列表查询", notes="虚拟认证清单系统维护表-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(AuthDummyContentChangeEO authDummyContentChangeEO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<AuthDummyContentChangeEO> queryWrapper = QueryGenerator.initQueryWrapper(authDummyContentChangeEO, req.getParameterMap());
Page<AuthDummyContentChangeEO> page = new Page<AuthDummyContentChangeEO>(pageNo, pageSize);
IPage<AuthDummyContentChangeEO> pageList = authDummyContentChangeEOService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "虚拟认证清单系统维护表-列表查询")
@ApiOperation(value="虚拟认证清单系统维护表-列表查询", notes="虚拟认证清单系统维护表-列表查询")
@GetMapping(value = "/list")
public Result<List<AuthDummyContentChangeEO>> queryList() {
List<AuthDummyContentChangeEO> list = authDummyContentChangeEOService.queryList();
return Result.OK(list);
}
/**
* 添加
*
* @param authDummyContentChangeEO
* @return
*/
@AutoLog(value = "虚拟认证清单系统维护表-添加")
@ApiOperation(value="虚拟认证清单系统维护表-添加", notes="虚拟认证清单系统维护表-添加")
@PostMapping(value = "/add")
public Result<?> add(@Validated @RequestBody AuthDummyContentChangeEO authDummyContentChangeEO) {
authDummyContentChangeEOService.add(authDummyContentChangeEO);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param authDummyContentChangeEO
* @return
*/
@AutoLog(value = "虚拟认证清单系统维护表-编辑")
@ApiOperation(value="虚拟认证清单系统维护表-编辑", notes="虚拟认证清单系统维护表-编辑")
@PutMapping(value = "/edit")
public Result<?> edit(@Validated @RequestBody AuthDummyContentChangeEO authDummyContentChangeEO) {
authDummyContentChangeEOService.editById(authDummyContentChangeEO);
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) {
authDummyContentChangeEOService.deleteById(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.authDummyContentChangeEOService.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<?> queryById(@RequestParam(name="id",required=true) String id) {
AuthDummyContentChangeEO authDummyContentChangeEO = authDummyContentChangeEOService.queryById(id);
if(authDummyContentChangeEO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(authDummyContentChangeEO);
}
/**
* 导出excel
*
* @param request
* @param authDummyContentChangeEO
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, AuthDummyContentChangeEO authDummyContentChangeEO) {
return super.exportXls(request, authDummyContentChangeEO, AuthDummyContentChangeEO.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, AuthDummyContentChangeEO.class);
}
}
@@ -7,14 +7,18 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.authDummy.entity.AuthDummyInventoryBaseEO;
import com.jero.modules.authDummy.service.IAuthDummyInventoryBaseEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
import com.jero.modules.dummy.enums.InventoryStateEnum;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -177,4 +181,65 @@ public class AuthDummyInventoryBaseEOController extends JeroController<AuthDummy
public Result<?> batchIssueOrWithdraw(@RequestBody JSONObject json) {
return this.authDummyInventoryBaseEOService.batchIssueOrWithdraw(json);
}
@AutoLog(value = "订阅")
@ApiOperation(value="订阅", notes="订阅")
@GetMapping(value = "/read")
// @RequiresPermissions("dummyInventoryBase:read")
public Result<?> read(@RequestParam(name="id",required=true) String id){
try {
authDummyInventoryBaseEOService.read(id);
} catch (Exception e) {
return Result.OK("订阅失败");
}
return Result.OK("订阅成功");
}
@AutoLog(value = "取消订阅")
@ApiOperation(value="取消订阅", notes="取消订阅")
@GetMapping(value = "/cancelRead")
// @RequiresPermissions("dummyInventoryBase:cancelRead")
public Result<?> cancelRead(String id){
try {
authDummyInventoryBaseEOService.cancelRead(id);
} catch (Exception e) {
return Result.OK("取消订阅失败");
}
return Result.OK("取消订阅成功");
}
/**
* 发布
*
* @param authDummyInventoryBaseEO
* @return
*/
@AutoLog(value = "发布")
@ApiOperation(value="发布", notes="发布")
@PostMapping(value = "/issue")
// @RequiresPermissions("dummyInventoryBase:issue")
public Result<?> issue(@Validated @RequestBody AuthDummyInventoryBaseEO authDummyInventoryBaseEO) {
try {
authDummyInventoryBaseEOService.issue(authDummyInventoryBaseEO);
} catch (Exception e) {
if(CutEnum.CN.getValue().equals(authDummyInventoryBaseEO.getCut())){
return Result.error("发布失败");
}else{
return Result.error("Post failure!");
}
}
if(InventoryStateEnum.ISSUE.getValue().equals(authDummyInventoryBaseEO.getState())) {
if (CutEnum.CN.getValue().equals(authDummyInventoryBaseEO.getCut())) {
return Result.OK().success("发布成功");
} else {
return Result.OK().success("Release success!");
}
}else {
if (CutEnum.CN.getValue().equals(authDummyInventoryBaseEO.getCut())) {
return Result.OK().success("撤回成功");
} else {
return Result.OK().success("Withdrawal succeeded!");
}
}
}
}
@@ -13,11 +13,13 @@ import com.jero.modules.authDummy.service.IAuthDummyInventoryInfoEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -157,6 +159,38 @@ public class AuthDummyInventoryInfoEOController extends JeroController<AuthDummy
return super.exportXls(request, authDummyInventoryInfoEO, AuthDummyInventoryInfoEO.class, "认证虚拟清单详情表");
}
/**
* 导出数据
* @param response
* @param request
* @param authDummyInventoryInfoEO
*/
@ApiOperation(value="认证虚拟清单详情表-导出数据",notes="认证虚拟清单详情表-导出数据",produces = "application/octet-stream")
@PostMapping(value = "/exportData")
// @RequiresPermissions("authDummyInventoryInfoEO:exportData")
public void exportData(HttpServletResponse response,
HttpServletRequest request,
AuthDummyInventoryInfoEO authDummyInventoryInfoEO) {
authDummyInventoryInfoEOService.exportData(response,request, authDummyInventoryInfoEO);
}
/**
* 导入数据
* @param file
* @param authDummyInventoryInfoEO
*/
@ApiOperation(value="认证虚拟清单详情表-导入数据",notes="认证虚拟清单详情表-导入数据",produces = "application/octet-stream")
@PostMapping(value = "/importData")
// @RequiresPermissions("authDummyInventoryInfoEO:exportData")
public Result<?> importData(@RequestParam(value = "file", required = false) MultipartFile file,
AuthDummyInventoryInfoEO authDummyInventoryInfoEO) {
try {
authDummyInventoryInfoEOService.importData(file, authDummyInventoryInfoEO);
} catch (Exception e) {
e.printStackTrace();
}
return Result.OK("导入成功");
}
/**
* 通过excel导入数据
*
@@ -184,11 +218,11 @@ public class AuthDummyInventoryInfoEOController extends JeroController<AuthDummy
public Result<?> setBatch(@RequestBody AuthDummyInventoryInfoEO authDummyInventoryInfoEO) {
return this.authDummyInventoryInfoEOService.setBatch(authDummyInventoryInfoEO);
}
@AutoLog(value = "认证虚拟清单详情表-批量添加")
@ApiOperation(value="认证虚拟清单详情表-批量添加", notes="认证虚拟清单详情表-批量添加")
@PostMapping(value = "/batchAdd")
public Result<?> batchAdd(@RequestBody JSONObject json) {
return this.authDummyInventoryInfoEOService.batchAdd(json);
}
//
// @AutoLog(value = "认证虚拟清单详情表-批量添加")
// @ApiOperation(value="认证虚拟清单详情表-批量添加", notes="认证虚拟清单详情表-批量添加")
// @PostMapping(value = "/batchAdd")
// public Result<?> batchAdd(@RequestBody JSONObject json) {
// return this.authDummyInventoryInfoEOService.batchAdd(json);
// }
}
@@ -0,0 +1,170 @@
package com.jero.modules.authDummy.controller;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.authDummy.entity.AuthDummyReadEO;
import com.jero.modules.authDummy.service.IAuthDummyReadEOService;
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.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
/**
* @Description: 虚拟认证清单订阅表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
@Api(tags="虚拟认证清单订阅表")
@RestController
@RequestMapping("/com.jero.modules.authDummy.entity/authDummyReadEO")
@Slf4j
public class AuthDummyReadEOController extends JeroController<AuthDummyReadEO, IAuthDummyReadEOService> {
@Autowired
private IAuthDummyReadEOService authDummyReadEOService;
/**
* 分页列表查询
*
* @param authDummyReadEO
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "虚拟认证清单订阅表-分页列表查询")
@ApiOperation(value="虚拟认证清单订阅表-分页列表查询", notes="虚拟认证清单订阅表-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(AuthDummyReadEO authDummyReadEO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<AuthDummyReadEO> queryWrapper = QueryGenerator.initQueryWrapper(authDummyReadEO, req.getParameterMap());
Page<AuthDummyReadEO> page = new Page<AuthDummyReadEO>(pageNo, pageSize);
IPage<AuthDummyReadEO> pageList = authDummyReadEOService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "虚拟认证清单订阅表-列表查询")
@ApiOperation(value="虚拟认证清单订阅表-列表查询", notes="虚拟认证清单订阅表-列表查询")
@GetMapping(value = "/list")
public Result<List<AuthDummyReadEO>> queryList() {
List<AuthDummyReadEO> list = authDummyReadEOService.queryList();
return Result.OK(list);
}
/**
* 添加
*
* @param authDummyReadEO
* @return
*/
@AutoLog(value = "虚拟认证清单订阅表-添加")
@ApiOperation(value="虚拟认证清单订阅表-添加", notes="虚拟认证清单订阅表-添加")
@PostMapping(value = "/add")
public Result<?> add(@Validated @RequestBody AuthDummyReadEO authDummyReadEO) {
authDummyReadEOService.add(authDummyReadEO);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param authDummyReadEO
* @return
*/
@AutoLog(value = "虚拟认证清单订阅表-编辑")
@ApiOperation(value="虚拟认证清单订阅表-编辑", notes="虚拟认证清单订阅表-编辑")
@PutMapping(value = "/edit")
public Result<?> edit(@Validated @RequestBody AuthDummyReadEO authDummyReadEO) {
authDummyReadEOService.editById(authDummyReadEO);
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) {
authDummyReadEOService.deleteById(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.authDummyReadEOService.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<?> queryById(@RequestParam(name="id",required=true) String id) {
AuthDummyReadEO authDummyReadEO = authDummyReadEOService.queryById(id);
if(authDummyReadEO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(authDummyReadEO);
}
/**
* 导出excel
*
* @param request
* @param authDummyReadEO
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, AuthDummyReadEO authDummyReadEO) {
return super.exportXls(request, authDummyReadEO, AuthDummyReadEO.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, AuthDummyReadEO.class);
}
}
@@ -0,0 +1,79 @@
package com.jero.modules.authDummy.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
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 com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 虚拟认证清单系统维护表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
@Data
@TableName("auth_dummy_content_change")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="auth_dummy_content_change对象", description="虚拟认证清单系统维护表")
public class AuthDummyContentChangeEO 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或虚拟认证清单详情表中的baseId*/
@Excel(name = "虚拟认证清单基础表id或虚拟认证清单详情表中的baseId", width = 15)
@ApiModelProperty(value = "虚拟认证清单基础表id或虚拟认证清单详情表中的baseId")
private java.lang.String connectId;
/**父id*/
@Excel(name = "父id", width = 15)
@ApiModelProperty(value = "父id")
private java.lang.String parentId;
/**内容*/
@Excel(name = "内容", width = 15)
@ApiModelProperty(value = "内容")
private java.lang.String contentJson;
}
@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -77,4 +78,6 @@ public class AuthDummyInventoryBaseEO implements Serializable {
@Dict(dicCode = "ren4_zheng4_xu1_ni3_qing1_dan1_zhuang4_tai4")
private java.lang.String state;
@TableField(exist = false)
private String cut;
}
@@ -73,7 +73,7 @@ public class AuthDummyInventoryInfoEO implements Serializable {
private java.lang.String inspectionItem;
/**配置项*/
@Excel(name = "配置项", width = 15)
// @Excel(name = "配置项", width = 15)
@ApiModelProperty(value = "配置项")
private java.lang.String configItem;
@@ -83,8 +83,8 @@ public class AuthDummyInventoryInfoEO implements Serializable {
private java.lang.String wvtaId;
/**标准编号*/
@Excel(name = "标准编号", width = 15)
@ApiModelProperty(value = "标准编号")
@Excel(name = "编号", width = 15)
@ApiModelProperty(value = "编号")
private java.lang.String serialNumber;
/**责任领域*/
@@ -98,12 +98,12 @@ public class AuthDummyInventoryInfoEO implements Serializable {
private java.lang.String deliverable;
/**文档库id*/
@Excel(name = "文档库id", width = 15)
// @Excel(name = "文档库id", width = 15)
@ApiModelProperty(value = "文档库id")
private java.lang.String bussDocumentLibraryId;
/**认证虚拟清单基础表id*/
@Excel(name = "认证虚拟清单基础表id", width = 15)
// @Excel(name = "认证虚拟清单基础表id", width = 15)
@ApiModelProperty(value = "认证虚拟清单基础表id")
private java.lang.String authDummyInventoryBaseId;
@@ -0,0 +1,113 @@
package com.jero.modules.authDummy.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: 认证虚拟清单详情表
* @Author: jero-boot
* @Date: 2023-03-02
* @Version: V1.0
*/
@Data
@TableName("auth_dummy_inventory_info")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="auth_dummy_inventory_info对象", description="认证虚拟清单详情表")
public class AuthDummyInventoryInfoEOEn 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 java.util.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 java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**类别*/
@Excel(name = "Category", width = 15)
@ApiModelProperty(value = "类别")
private String category;
/**检验项目*/
@Excel(name = "Inspection Items", width = 15)
@ApiModelProperty(value = "检验项目")
private String inspectionItem;
/**配置项*/
// @Excel(name = "配置项", width = 15)
@ApiModelProperty(value = "配置项")
private String configItem;
/**WVTA ID*/
@Excel(name = "WVTA ID", width = 15)
@ApiModelProperty(value = "WVTA ID")
private String wvtaId;
/**标准编号*/
@Excel(name = "Number", width = 15)
@ApiModelProperty(value = "标准编号")
private String serialNumber;
/**责任领域*/
@Excel(name = "Responsible Field", width = 15)
@ApiModelProperty(value = "责任领域")
private String dutyTerritory;
/**交付物*/
@Excel(name = "Deliverables", width = 15)
@ApiModelProperty(value = "交付物")
private String deliverable;
/**文档库id*/
// @Excel(name = "文档库id", width = 15)
@ApiModelProperty(value = "文档库id")
private String bussDocumentLibraryId;
/**认证虚拟清单基础表id*/
// @Excel(name = "认证虚拟清单基础表id", width = 15)
@ApiModelProperty(value = "认证虚拟清单基础表id")
private String authDummyInventoryBaseId;
@TableField(exist = false)
private String cut;
@TableField(exist = false)
private String ids;
}
@@ -0,0 +1,69 @@
package com.jero.modules.authDummy.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
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 com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 虚拟认证清单订阅表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
@Data
@TableName("auth_dummy_read")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="auth_dummy_read对象", description="虚拟认证清单订阅表")
public class AuthDummyReadEO 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 authDummyInventoryBaseId;
}
@@ -0,0 +1,14 @@
package com.jero.modules.authDummy.mapper;
import com.jero.modules.authDummy.entity.AuthDummyContentChangeEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 虚拟认证清单系统维护表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
public interface AuthDummyContentChangeEOMapper extends BaseMapper<AuthDummyContentChangeEO> {
}
@@ -0,0 +1,14 @@
package com.jero.modules.authDummy.mapper;
import com.jero.modules.authDummy.entity.AuthDummyReadEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 虚拟认证清单订阅表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
public interface AuthDummyReadEOMapper extends BaseMapper<AuthDummyReadEO> {
}
@@ -0,0 +1,15 @@
<?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="com.jero.modules.authDummy.mapper.AuthDummyContentChangeEOMapper">
<resultMap id="AuthDummyContentChangeEOResultMap" type="com.jero.modules.authDummy.entity.AuthDummyContentChangeEO">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
<result column="connect_id" property="connectId" />
<result column="parent_id" property="parentId" />
<result column="content_json" property="contentJson" />
</resultMap>
</mapper>
@@ -0,0 +1,13 @@
<?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="com.jero.modules.authDummy.mapper.AuthDummyReadEOMapper">
<resultMap id="AuthDummyReadEOResultMap" type="com.jero.modules.authDummy.entity.AuthDummyReadEO">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
<result column="auth_dummy_inventory_base_id" property="authDummyInventoryBaseId" />
</resultMap>
</mapper>
@@ -0,0 +1,61 @@
package com.jero.modules.authDummy.service;
import com.jero.modules.authDummy.entity.AuthDummyContentChangeEO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 虚拟认证清单系统维护表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
public interface IAuthDummyContentChangeEOService extends IService<AuthDummyContentChangeEO> {
/**
* 保存
*
* @param authDummyContentChangeEO
* @return
*/
void add(AuthDummyContentChangeEO authDummyContentChangeEO);
/**
* 更新
*
* @param authDummyContentChangeEO
* @return
*/
void editById(AuthDummyContentChangeEO authDummyContentChangeEO);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
AuthDummyContentChangeEO queryById(String id);
/**
* 列表查询
*
* @return
*/
List<AuthDummyContentChangeEO> queryList();
}
@@ -74,4 +74,22 @@ public interface IAuthDummyInventoryBaseEOService extends IService<AuthDummyInve
* @param cut
*/
void disposeData(List<AuthDummyInventoryBaseEO> datas, String cut);
/**
* 订阅
* @param dummyId
*/
void read(String dummyId);
/**
* 取消订阅
* @param dummyId
*/
void cancelRead(String dummyId);
/**
* 发布
* @param authDummyInventoryBaseEO
*/
void issue(AuthDummyInventoryBaseEO authDummyInventoryBaseEO)throws Exception;
}
@@ -1,9 +1,12 @@
package com.jero.modules.authDummy.service;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.authDummy.entity.AuthDummyInventoryInfoEO;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -77,9 +80,17 @@ public interface IAuthDummyInventoryInfoEOService extends IService<AuthDummyInve
Result<?> setBatch(AuthDummyInventoryInfoEO authDummyInventoryInfoEO);
/**
* 批量添加
* @param json
* @return
* 导出数据
* @param response
* @param request
* @param authDummyInventoryInfoEO
*/
Result<?> batchAdd(JSONObject json);
void exportData(HttpServletResponse response, HttpServletRequest request, AuthDummyInventoryInfoEO authDummyInventoryInfoEO);
/**
* 数据导入
* @param file
* @param authDummyInventoryInfoEO
*/
void importData(MultipartFile file, AuthDummyInventoryInfoEO authDummyInventoryInfoEO) throws Exception;
}
@@ -0,0 +1,64 @@
package com.jero.modules.authDummy.service;
import com.jero.modules.authDummy.entity.AuthDummyReadEO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 虚拟认证清单订阅表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
public interface IAuthDummyReadEOService extends IService<AuthDummyReadEO> {
/**
* 保存
*
* @param authDummyReadEO
* @return
*/
void add(AuthDummyReadEO authDummyReadEO);
/**
* 更新
*
* @param authDummyReadEO
* @return
*/
void editById(AuthDummyReadEO authDummyReadEO);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
AuthDummyReadEO queryById(String id);
/**
* 列表查询
*
* @return
*/
List<AuthDummyReadEO> queryList();
/**查询订阅虚拟清单的用户*/
List<String> queryReadUserInfo(String authDummyInventoryBaseId);
}
@@ -0,0 +1,89 @@
package com.jero.modules.authDummy.service.impl;
import com.jero.modules.authDummy.entity.AuthDummyContentChangeEO;
import com.jero.modules.authDummy.mapper.AuthDummyContentChangeEOMapper;
import com.jero.modules.authDummy.service.IAuthDummyContentChangeEOService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 虚拟认证清单系统维护表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
@Service
public class AuthDummyContentChangeEOServiceImpl extends ServiceImpl<AuthDummyContentChangeEOMapper, AuthDummyContentChangeEO> implements IAuthDummyContentChangeEOService {
/**
* 保存
*
* @param authDummyContentChangeEO
* @return
*/
@Override
public void add(AuthDummyContentChangeEO authDummyContentChangeEO) {
Date now = new Date();
authDummyContentChangeEO.setCreateTime(now);
authDummyContentChangeEO.setUpdateTime(now);
save(authDummyContentChangeEO);
}
/**
* 更新
*
* @param authDummyContentChangeEO
* @return
*/
@Override
public void editById(AuthDummyContentChangeEO authDummyContentChangeEO) {
Date now = new Date();
authDummyContentChangeEO.setUpdateTime(now);
saveOrUpdate(authDummyContentChangeEO);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public AuthDummyContentChangeEO queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<AuthDummyContentChangeEO> queryList() {
return list();
}
}
@@ -1,27 +1,56 @@
package com.jero.modules.authDummy.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.constant.enums.MessageTypeEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.authDummy.entity.AuthDummyContentChangeEO;
import com.jero.modules.authDummy.entity.AuthDummyInventoryBaseEO;
import com.jero.modules.authDummy.entity.AuthDummyInventoryInfoEO;
import com.jero.modules.authDummy.entity.AuthDummyReadEO;
import com.jero.modules.authDummy.mapper.AuthDummyInventoryBaseEOMapper;
import com.jero.modules.authDummy.service.IAuthDummyContentChangeEOService;
import com.jero.modules.authDummy.service.IAuthDummyInventoryBaseEOService;
import com.jero.modules.authDummy.service.IAuthDummyInventoryInfoEOService;
import com.jero.modules.authDummy.service.IAuthDummyReadEOService;
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
import com.jero.modules.dummy.entity.DummyContentChangeEO;
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
import com.jero.modules.dummy.entity.DummyReadEO;
import com.jero.modules.dummy.enums.InventoryStateEnum;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.system.entity.SysAnnouncement;
import com.jero.modules.system.service.ISysAnnouncementService;
import com.jero.modules.system.service.ISysUserService;
import me.zhyd.oauth.utils.StringUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Date;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @Description: 认证虚拟清单基础表
* @Author: jero-boot
@@ -32,6 +61,32 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class AuthDummyInventoryBaseEOServiceImpl extends ServiceImpl<AuthDummyInventoryBaseEOMapper, AuthDummyInventoryBaseEO> implements IAuthDummyInventoryBaseEOService {
@Autowired
private IAuthDummyReadEOService authDummyReadEOService;
@Autowired
private AuthDummyInventoryBaseEOMapper authDummyInventoryBaseEOMapper;
@Autowired
private IAuthDummyContentChangeEOService iAuthDummyContentChangeEOService;
@Autowired
private IAuthDummyInventoryInfoEOService iAuthDummyInventoryInfoEOService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private BussDocumentLibraryEOServiceImpl bussDocumentLibraryEOService;
@Autowired
private ISysAnnouncementService sysAnnouncementService;
@Value(value = "${jero.backUrl}")
private String backUrl;
@Resource
private IFeishuService iFeishuService;
/**
* 保存
*
@@ -149,4 +204,239 @@ public class AuthDummyInventoryBaseEOServiceImpl extends ServiceImpl<AuthDummyIn
}
}
}
/**
* 订阅
* @param dummyId
*/
@Override
public void read(String dummyId) {
AuthDummyReadEO authDummyReadEO = new AuthDummyReadEO();
authDummyReadEO.setAuthDummyInventoryBaseId(dummyId);
authDummyReadEOService.add(authDummyReadEO);
}
/**
* 取消订阅
* @param dummyId
*/
@Override
public void cancelRead(String dummyId) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<AuthDummyReadEO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(AuthDummyReadEO::getAuthDummyInventoryBaseId, dummyId).in(AuthDummyReadEO::getCreateBy, sysUser.getUsername());
authDummyReadEOService.remove(wrapper);
}
/**
* 发布
* @param authDummyInventoryBaseEO
* @throws Exception
*/
@Override
@Transactional
public void issue(AuthDummyInventoryBaseEO authDummyInventoryBaseEO) throws Exception {
// 增加创建者校验
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String loginUserName = sysUser.getUsername();
AuthDummyInventoryBaseEO baseEO = queryById(authDummyInventoryBaseEO.getId());
List<String> createByNameList =new ArrayList<>();
Date now = new Date();
UpdateWrapper<AuthDummyInventoryBaseEO> baseWrapper=new UpdateWrapper<>();
baseWrapper.set("state",authDummyInventoryBaseEO.getState());
if(InventoryStateEnum.ISSUE.getValue().equals(authDummyInventoryBaseEO.getState())){
baseWrapper.set("update_by",sysUser.getUsername())
.set("update_time",now);
}
baseWrapper.eq("id",authDummyInventoryBaseEO.getId());
authDummyInventoryBaseEOMapper.update(null,baseWrapper);
if(InventoryStateEnum.ISSUE.getValue().equals(authDummyInventoryBaseEO.getState())){
//先判断第一次发布的时候是否保存过数据
LambdaQueryWrapper<AuthDummyContentChangeEO> wrapper =new LambdaQueryWrapper<>();
wrapper.in(AuthDummyContentChangeEO::getConnectId,authDummyInventoryBaseEO.getId());
List<AuthDummyContentChangeEO> authDummyContentChangeEOList = iAuthDummyContentChangeEOService.list(wrapper);
//详情数据
LambdaQueryWrapper<AuthDummyInventoryInfoEO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(AuthDummyInventoryInfoEO::getAuthDummyInventoryBaseId,authDummyInventoryBaseEO.getId());
List<AuthDummyInventoryInfoEO> authDummyInventoryInfoEOList = iAuthDummyInventoryInfoEOService.list(lambdaQueryWrapper);
String contentLog = "The "+ baseEO.getName()+" virtual authentication list you subscribed to has been updated as follows" + "</br>";
String contentLogFeishu = "The "+ baseEO.getName()+" virtual authentication list you subscribed to has been updated as follows" + " ";
String contentLogFeishuTemp = "The "+ baseEO.getName()+" virtual authentication list you subscribed to has been updated as follows" + " ";
if(authDummyContentChangeEOList.size() == 0){
//没有添加过需要进行第一次添加
Date thisTime = new Date();
List<AuthDummyContentChangeEO> list = new ArrayList<>();
if(authDummyInventoryInfoEOList.size() != 0){
String info = JSONArray.toJSONString(authDummyInventoryInfoEOList);
AuthDummyContentChangeEO authDummyContentChangeEOInfo = new AuthDummyContentChangeEO();
authDummyContentChangeEOInfo.setParentId(authDummyInventoryBaseEO.getId());
authDummyContentChangeEOInfo.setConnectId(authDummyInventoryBaseEO.getId());
authDummyContentChangeEOInfo.setContentJson(info);
authDummyContentChangeEOInfo.setUpdateTime(thisTime);
list.add(authDummyContentChangeEOInfo);
}
if(list.size() != 0){
iAuthDummyContentChangeEOService.saveBatch(list);
}
}else{
//2. 查询之前保存过的详情数据
LambdaQueryWrapper<AuthDummyContentChangeEO> wrapperInfo =new LambdaQueryWrapper<>();
wrapperInfo.in(AuthDummyContentChangeEO::getParentId,authDummyInventoryBaseEO.getId());
List<AuthDummyContentChangeEO> dummyContentChangeEOInfoList = iAuthDummyContentChangeEOService.list(wrapperInfo);
if(dummyContentChangeEOInfoList.size() != 0){
String contentJson = dummyContentChangeEOInfoList.get(0).getContentJson();
List<AuthDummyInventoryInfoEO> baseCJList = JSONArray.parseArray(contentJson, AuthDummyInventoryInfoEO.class);
List<String> serialNumberOldList = baseCJList.stream().map(AuthDummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
//变更后的数据
if(authDummyInventoryInfoEOList.size() != 0){
List<String> serialNumberNewList = authDummyInventoryInfoEOList.stream().map(AuthDummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
//新增的法规
List<AuthDummyInventoryInfoEO> collectAdd = authDummyInventoryInfoEOList.stream()
.filter(e -> !serialNumberOldList.contains(e.getSerialNumber())).collect(Collectors.toList());
List<String> serialNumberAddList = serialNumberNewList.stream().filter(e->!serialNumberOldList.contains(e)).collect(Collectors.toList());
//删除的法规
List<AuthDummyInventoryInfoEO> collectDelete = baseCJList.stream()
.filter(e -> !serialNumberNewList.contains(e.getSerialNumber())).collect(Collectors.toList());
List<String> serialNumberDeleteList = serialNumberOldList.stream().filter(e->!serialNumberNewList.contains(e)).collect(Collectors.toList());
//发消息
int count = 1;
List<String> hrefListAdd = new ArrayList<>();
if(serialNumberAddList.size() != 0){
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : collectAdd) {
String href = "<a href='/docManage/library/detail?id=" + authDummyInventoryInfoEO.getBussDocumentLibraryId() +
// "&title=" + authDummyInventoryInfoEO.getTitle() +
"&serial_number=" + authDummyInventoryInfoEO.getSerialNumber() + "'" + " target='_blank'>" + authDummyInventoryInfoEO.getSerialNumber() + "</a>";
hrefListAdd.add(href);
}
contentLog += count+". New regulations: " + org.apache.commons.lang3.StringUtils.join(hrefListAdd,",") + "</br>";
contentLogFeishu += count+". New regulations: " + org.apache.commons.lang3.StringUtils.join(serialNumberAddList,",") + " ";
count++;
}
List<String> hrefListDelete = new ArrayList<>();
if(serialNumberDeleteList.size() != 0){
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : collectDelete) {
String href = "<a href='/docManage/library/detail?id=" + authDummyInventoryInfoEO.getBussDocumentLibraryId() +
// "&title=" + authDummyInventoryInfoEO.getTitle() +
"&serial_number=" + authDummyInventoryInfoEO.getSerialNumber() + "'" + " target='_blank'>" + authDummyInventoryInfoEO.getSerialNumber() + "</a>";
hrefListDelete.add(href);
}
contentLog += count + ". Remove regulations: " + org.apache.commons.lang3.StringUtils.join(hrefListDelete,",") + "</br>";
contentLogFeishu += count + ". Remove regulations: " + org.apache.commons.lang3.StringUtils.join(serialNumberDeleteList,",") + " ";
}
if(serialNumberAddList.size() != 0 || serialNumberDeleteList.size() != 0){
int countNo = 1;
StringBuilder sbContentNo = new StringBuilder();
if(ObjectUtils.isNotEmpty(serialNumberAddList)){
sbContentNo.append(countNo+". New regulations: "+ org.apache.commons.lang3.StringUtils.join(serialNumberAddList,",")+", ");
countNo ++;
}
if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
sbContentNo.append(countNo+". Remove regulations: "+ org.apache.commons.lang3.StringUtils.join(serialNumberDeleteList,","));
}
int countYes = 1;
StringBuilder sbContentYes = new StringBuilder();
if(ObjectUtils.isNotEmpty(serialNumberAddList)){
sbContentYes.append(countYes+". New regulations: "+ org.apache.commons.lang3.StringUtils.join(hrefListAdd,",")+"</br>");
countYes ++;
}
if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
sbContentYes.append(countYes+". Remove regulations: "+ org.apache.commons.lang3.StringUtils.join(hrefListDelete,","));
}
String hrefTemp = "<a href='/virtualAuthenticationListDetails?id=" + authDummyInventoryBaseEO.getId() +
"&useExplain="+baseEO.getUseExplain()+
"&name=" + baseEO.getName() + "'" + " target='_blank'>" + baseEO.getName() + "</a>";
//消息英文--不带标签
String contentNo = "The "+ baseEO.getName()+" virtual authentication list you subscribed to has been updated as follows" + sbContentNo;
//消息英文--带标签
String contentYes = "The "+ hrefTemp+" virtual authentication list you subscribed to has been updated as follows"+ "</br>" + sbContentYes;;
int countInfoNo = 1;
StringBuilder sbContentINfoNo = new StringBuilder();
if(ObjectUtils.isNotEmpty(serialNumberAddList)){
sbContentINfoNo.append(countInfoNo+". 新增文档: "+ org.apache.commons.lang3.StringUtils.join(serialNumberAddList,",")+", ");
countInfoNo ++;
}
if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
sbContentINfoNo.append(countInfoNo+". 删除文档: "+ org.apache.commons.lang3.StringUtils.join(serialNumberDeleteList,","));
}
int countInfoYes = 1;
StringBuilder sbContentInfoYes = new StringBuilder();
if(ObjectUtils.isNotEmpty(serialNumberAddList)){
sbContentInfoYes.append(countInfoYes+". 新增文档: "+ org.apache.commons.lang3.StringUtils.join(hrefListAdd,",")+"</br>");
countInfoYes ++;
}
if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
sbContentInfoYes.append(countInfoYes+". 删除文档: "+ org.apache.commons.lang3.StringUtils.join(hrefListDelete,","));
}
//消息中文--不带标签
String contentInfoNo = "您所订阅的"+baseEO.getName()+"虚拟认证清单已更新,更新内容如下:"+sbContentINfoNo;
//消息中文--带标签
String contentInfoYes = "您所订阅的"+hrefTemp+"虚拟认证清单已更新,更新内容如下:"+"</br>"+sbContentInfoYes;
List<String> userNameList = authDummyReadEOService.queryReadUserInfo(authDummyInventoryBaseEO.getId());
List<String> thirdIdList = new ArrayList<>();
if(userNameList.size() != 0){
List<String> userIdList = sysUserService.queryUserIdListByNameList(userNameList).stream().map(e -> e.getId()).collect(Collectors.toList());
thirdIdList = sysUserService.queryUserIdListByNameList(userNameList).stream().map(e -> e.getThirdId()).collect(Collectors.toList());
if(userIdList.size() != 0){
//封装消息的实体类
String title = "The "+ baseEO.getName()+" virtual list you subscribed to has been updated.";
SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList,
title,
contentNo,
contentYes,
MessageTypeEnum.READ.getValue(),
MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(),
contentInfoNo,
contentInfoYes);
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
bussDocumentLibraryEOService.sendWebsocket(authDummyInventoryBaseEO.getId(), title);
}
}
//飞书
if(thirdIdList.size() != 0){
String href = backUrl + "/virtualAuthenticationListDetails?name=" + baseEO.getName() + "&useExplain=" + baseEO.getUseExplain() +"&id=" + baseEO.getId() +"&title=维护虚拟清单";
try {
String contentInfoFeiCn = "您所订阅的"+baseEO.getName()+"虚拟认证清单已更新,更新内容如下:";
FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
feishuMsgVo.setTitle(MessageTypeEnum.READ.getNameCn()+"/"+MessageTypeEnum.READ.getName());
feishuMsgVo.setUrl(href);
feishuMsgVo.setContentEn(contentLogFeishuTemp);
feishuMsgVo.setContent(contentInfoFeiCn);
iFeishuService.sendCardMsgVirtua(thirdIdList.toArray(new String[]{}),feishuMsgVo,serialNumberAddList,serialNumberDeleteList);
// iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentLogFeishu, MessageTypeEnum.PUSH.getName(), href);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//删除之前保存的变更的数据
iAuthDummyContentChangeEOService.deleteById(dummyContentChangeEOInfoList.get(0).getId());
//重新保存
AuthDummyContentChangeEO authDummyContentChangeEOInfo = new AuthDummyContentChangeEO();
String contentJsonTemp = JSONArray.toJSONString(authDummyInventoryInfoEOList);
authDummyContentChangeEOInfo.setParentId(authDummyInventoryBaseEO.getId());
authDummyContentChangeEOInfo.setConnectId(authDummyInventoryBaseEO.getId());
authDummyContentChangeEOInfo.setContentJson(contentJsonTemp);
authDummyContentChangeEOInfo.setUpdateTime(new Date());
iAuthDummyContentChangeEOService.save(authDummyContentChangeEOInfo);
}
}
}
}
}
@@ -1,27 +1,69 @@
package com.jero.modules.authDummy.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.utils.IOUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.oss.CosBootUtil;
import com.jero.modules.authDummy.entity.AuthDummyInventoryBaseEO;
import com.jero.modules.authDummy.entity.AuthDummyInventoryInfoEO;
import com.jero.modules.authDummy.entity.AuthDummyInventoryInfoEOEn;
import com.jero.modules.authDummy.mapper.AuthDummyInventoryInfoEOMapper;
import com.jero.modules.authDummy.service.IAuthDummyInventoryBaseEOService;
import com.jero.modules.authDummy.service.IAuthDummyInventoryInfoEOService;
import com.jero.modules.document.entity.BussDocumentLibraryEO;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
import com.jero.modules.dummy.entity.DummyInventoryInfoEOEn;
import com.jero.modules.dummy.service.impl.DummyLogEOServiceImpl;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.split.common.FileUnZip;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.mapper.SysCategoryMapper;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.SecurityUtils;
import org.aspectj.util.FileUtil;
import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl.copyFile;
/**
* @Description: 认证虚拟清单详情表
@@ -35,6 +77,25 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
@Autowired
private IAuthDummyInventoryBaseEOService authDummyInventoryBaseEOService;
@Autowired
private IOSSFileService iOSSFileService;
@Value(value = "${jero.path.upload}")
private String uploadpath;
@Autowired
private SysDictItemServiceImpl sysDictItemServiceImpl;
@Autowired
private SysCategoryServiceImpl sysCategoryService;
@Autowired
SysCategoryMapper sysCategoryMapper;
@Autowired
private DummyLogEOServiceImpl dummyLogEOService;
@Autowired
private IBussDocumentLibraryEOService iBussDocumentLibraryEOService;
/**
* 保存
@@ -192,34 +253,627 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
return Result.OK("批量设置成功!");
}
/**
* 导出数据
* @param response
* @param request
* @param authDummyInventoryInfoEO
*/
@Override
public Result<?> batchAdd(JSONObject json) {
try {
String serialNumber = json.getString("serialNumber");
String wvtaId = json.getString("wvtaId");
String dutyTerritory = json.getString("dutyTerritory");
String bussDocumentLibraryId = json.getString("bussDocumentLibraryId");
String authDummyInventoryBaseId = json.getString("authDummyInventoryBaseId");
List<AuthDummyInventoryInfoEO> authDummyInventoryInfoEOList = new ArrayList<>();
JSONArray dataList = json.getJSONArray("dataList");
AuthDummyInventoryInfoEO authDummyInventoryInfoEO = null;
for (Object data : dataList) {
authDummyInventoryInfoEO = JSONObject.parseObject(JSONObject.toJSONString(data), AuthDummyInventoryInfoEO.class);
authDummyInventoryInfoEO.setSerialNumber(serialNumber);
authDummyInventoryInfoEO.setWvtaId(wvtaId);
authDummyInventoryInfoEO.setBussDocumentLibraryId(bussDocumentLibraryId);
authDummyInventoryInfoEO.setDutyTerritory(dutyTerritory);
authDummyInventoryInfoEO.setAuthDummyInventoryBaseId(authDummyInventoryBaseId);
authDummyInventoryInfoEOList.add(authDummyInventoryInfoEO);
public void exportData(HttpServletResponse response, HttpServletRequest request, AuthDummyInventoryInfoEO authDummyInventoryInfoEO) {
//检查虚拟清单是否存在
QueryWrapper<AuthDummyInventoryBaseEO> infoEOQueryWrapper = new QueryWrapper<>();
List<AuthDummyInventoryBaseEO> baseList = authDummyInventoryBaseEOService.list(infoEOQueryWrapper.eq("id", authDummyInventoryInfoEO.getAuthDummyInventoryBaseId()));
if(CollectionUtils.isNotEmpty(baseList)){
List<AuthDummyInventoryInfoEO> dataList = new ArrayList<>();
QueryWrapper<AuthDummyInventoryInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(authDummyInventoryInfoEO,request.getParameterMap());
queryWrapper.in("auth_dummy_inventory_base_id",authDummyInventoryInfoEO.getAuthDummyInventoryBaseId());
if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getIds())){
queryWrapper.in("id",Arrays.asList(authDummyInventoryInfoEO.getIds().split(",")));
}
queryWrapper.orderByDesc("create_time","serial_number");
//导出的数据
dataList = this.list(queryWrapper);
if(CollectionUtils.isNotEmpty(authDummyInventoryInfoEOList)){
this.saveBatch(authDummyInventoryInfoEOList);
//数据转换(文件名称,技术领域,对应标准,发起人,责任人)
// dataTransition(dataList, fileInfos,dummyInventoryInfoEO);
OutputStream os = null;
try {
response.setContentType("application/force-download");
Workbook workbook = new XSSFWorkbook();
String path = uploadpath + "/tempZip";
File fileTemp = new File(path);
if (fileTemp.exists()) {
fileTemp.delete();
}
fileTemp.mkdirs();
//文件
String excelName = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
excelName = baseList.get(0).getName() + " 虚拟认证清单.xlsx";
}else{
excelName = baseList.get(0).getName() + " Virtual Authentication list.xlsx";
}
//excel
OutputStream excelOS = new FileOutputStream(path + File.separator + excelName);
ExportParams exportParams = new ExportParams();
//设置导出excel的格式
exportParams.setType(ExcelType.XSSF);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
workbook = ExcelExportUtil.exportExcel(exportParams, AuthDummyInventoryInfoEO.class, dataList);
}else{
List<AuthDummyInventoryInfoEOEn> dataListEn = new ArrayList<>();
for (AuthDummyInventoryInfoEO inventoryInfoEO : dataList) {
AuthDummyInventoryInfoEOEn authDummyInventoryInfoEOEn = new AuthDummyInventoryInfoEOEn();
BeanUtils.copyProperties(inventoryInfoEO,authDummyInventoryInfoEOEn);
dataListEn.add(authDummyInventoryInfoEOEn);
}
//下拉选中英文转换
transition(dataListEn);
workbook = ExcelExportUtil.exportExcel(exportParams, AuthDummyInventoryInfoEOEn.class, dataListEn);
}
workbook.write(excelOS);
excelOS.flush();
ZipUtil.zip(path, path + ".zip");
//文件
FileInputStream fis = new FileInputStream(path + ".zip");
os = response.getOutputStream();
int len = 0;
while ((len = fis.read()) != -1) {
os.write(len);
}
os.flush();
fis.close();
} catch (IOException e) {
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("下载文件失败");
}else{
throw new JeroBootException("Failed to download file");
}
} finally {
IOUtils.closeQuietly(os);
File file = new File(uploadpath + "/tempZip");
FileUtil.deleteContents(file);
}
}else{
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("该虚拟清单不存在,导出失败");
}else{
throw new JeroBootException("The virtual inventory does not exist, and the export failed.");
}
}catch (Exception ex){
throw new JeroBootException("添加失败!");
}
return Result.OK("添加成功!");
}
/**
* 数据导入
* @param file
* @param authDummyInventoryInfoEO
*/
@Override
public void importData(MultipartFile file, AuthDummyInventoryInfoEO authDummyInventoryInfoEO) throws Exception{
//检查虚拟清单是否存在
QueryWrapper<AuthDummyInventoryBaseEO> infoEOQueryWrapper = new QueryWrapper<>();
List<AuthDummyInventoryBaseEO> baseList = authDummyInventoryBaseEOService.list(infoEOQueryWrapper.eq("id", authDummyInventoryInfoEO.getAuthDummyInventoryBaseId()));
if(CollectionUtils.isNotEmpty(baseList)){
String title = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
title = "类别,检验项目,WVTA ID,编号,责任领域,交付物";
}else{
title = "Category,Inspection Items,WVTA ID,Number,Responsible Field,Deliverables";
}
int pos = file.getOriginalFilename().lastIndexOf(".");
String str = file.getOriginalFilename().substring(pos + 1).toLowerCase();
String filenameorg = file.getOriginalFilename().substring(0, pos);
//判断上传文件必须是zip
if (!str.equals("zip")) {
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("请上传zip格式的文件或rar格式的文件");
}else{
throw new JeroBootException("Please upload a zip file or rar file");
}
}
String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
File saveDirectory = new File(path);
if (!saveDirectory.isDirectory()) {
saveDirectory.mkdir();
}
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
//解压缩
String zipEntryName = "";
if (str.equals("zip")) {
zipEntryName = FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), path);
}
//判断压缩包下是否只有一个文件夹
File fileTemp = new File(path);
int length = fileTemp.listFiles().length;
if (length > 2) {
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("压缩包中必须有且仅有一个文件夹,请重新上传");
}else{
throw new JeroBootException("There must be only one folder in the compressed package Please upload it again");
}
}
File fileNew = new File(zipEntryName);
List<File> fileList = new ArrayList<>();
for (File file1 : fileNew.listFiles()) {
if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx")) {
fileList.add(file1);
}
}
if (fileList.size() == 0) {
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("压缩包根目录下没有excel作为导入数据,请重新上传");
}else{
throw new JeroBootException("Excel does not exist in the root directory of the compressed package Please upload it again");
}
} else if (fileList.size() > 1) {
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("压缩包根目录下仅能存在一个excel为导入数据,请重新上传");
}else{
throw new JeroBootException("Only one Excel file can be imported in the compressed package root directory. Please upload data again");
}
}
// 数据相关处理,
// 1.获取其中的Excel,
List<File> excelfilelist = FileUnZip.readImpExcelFile(zipEntryName);
System.gc();
if (excelfilelist.size() < 1) {
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("压缩包内没有上传Excel数据");
}else{
throw new JeroBootException("No Excel data is uploaded in the compressed package");
}
} else if (excelfilelist.size() > 1) {
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("压缩包内有多个Excel数据源");
}else{
throw new JeroBootException("There are multiple Excel data sources in the zip package");
}
}
List<AuthDummyInventoryInfoEO> datas = new ArrayList<>();
File excelFile = excelfilelist.get(0);
Workbook workbook = WorkbookFactory.create(excelFile);
List<Map<String, String>> dataList = new ArrayList<>();
if (workbook != null) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Sheet sheet = workbook.getSheetAt(0);
if (sheet != null) {
StringBuilder headerSb = new StringBuilder();
int rowNos = sheet.getLastRowNum();// 得到excel的总记录条数
for (int i = 0; i <= rowNos; i++) {
Row row = sheet.getRow(i);
Row headerRow = sheet.getRow(i);
boolean isBlank = isRowEmpty(row);
String key = "";
if (row != null && !isBlank) {
int columNos = headerRow.getLastCellNum();// 表头总共的列数
//预防空格子报错
columNos = columNos > 24 ? 24 : columNos;
Map<String, String> rowList = new LinkedHashMap<>();
for (int j = 0; j < columNos; j++) {
Cell cell = row.getCell(j);
Cell headerCell = headerRow.getCell(j);
if (cell != null) {
if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ",");
if(j == 8){
break;
}
} else if(i >=1){
// 校验头部是否符合模板
String substring = headerSb.toString();
if (substring.endsWith(",") || substring.endsWith("")){
substring = headerSb.substring(0, headerSb.length() - 1);
}
String excelHeader = substring.toString();
if (!title.equals(excelHeader)) {
workbook.close();
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("读取失败,请严格按照模板文件导入数据");
}else{
throw new JeroBootException("The data fails to be read. Import data strictly according to the template file");
}
}
List<String> headList = Arrays.asList(headerSb.toString().split(","));
String field ="";
if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType() && HSSFDateUtil.isCellDateFormatted(cell)) {
Date d = cell.getDateCellValue();
field = fieldConvert(headList.get(j));
rowList.put(field, df.format(d));
} else {
field = fieldConvert(headList.get(j));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
String stringCellValue = cell.getStringCellValue();
if (StringUtils.isNotBlank(stringCellValue)) {
String replace = stringCellValue.replace("", ",");
rowList.put(field, replace);
} else {
rowList.put(field, "");
}
}
}
}
}
if (i >= 1) {
dataList.add(rowList);
}
}
}
if (dataList.size() == 0) {
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("请填写必填字段内容,带*的为必填");
}else{
throw new JeroBootException("Please fill in the required fields marked with *");
}
}else{
//数据转换 JSON.parseObject(JSON.toJSONString(map), MyUser.class)
for (Map<String, String> stringStringMap : dataList) {
AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp = JSON.parseObject(JSON.toJSONString(stringStringMap), AuthDummyInventoryInfoEO.class);
authDummyInventoryInfoEOTemp.setCut(authDummyInventoryInfoEO.getCut());
authDummyInventoryInfoEOTemp.setAuthDummyInventoryBaseId(authDummyInventoryInfoEO.getAuthDummyInventoryBaseId());
datas.add(authDummyInventoryInfoEOTemp);
}
}
// 校验头部是否符合模板
// String substring = headerSb.toString();
// if (substring.endsWith(",") || substring.endsWith("")){
// substring = headerSb.substring(0, headerSb.length() - 1);
// }
// String excelHeader = substring.toString();
// if (!title.equals(excelHeader)) {
// workbook.close();
// //删除原上传文件
// FileUnZip.deleteDir(saveDirectory);
// if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
// throw new JeroBootException("读取失败,请严格按照模板文件导入数据");
// }else{
// throw new JeroBootException("The data fails to be read. Import data strictly according to the template file");
// }
//
// }
}
}
workbook.close();
// //树形数据字典
List<SysCategory> categoryList = sysCategoryService.list();
//普通数据字典
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
importDatas(datas, categoryList, dictItemList, zipEntryName,saveDirectory,authDummyInventoryInfoEO);
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
}else{
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
throw new JeroBootException("该虚拟认证清单不存在,导入失败");
}else{
throw new JeroBootException("The virtual Authentication inventory does not exist, and the import failed.");
}
}
}
private void importDatas(List<AuthDummyInventoryInfoEO> dataList,
List<SysCategory> categoryList,
List<SysDictItem> dictItemList,
String zipEntryName,
File saveDirectory,
AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp) {
String dictId = sysCategoryMapper.getDictId("deliverable_template");
List<SysCategory> collect = categoryList.stream().filter(e -> e.getSysDictId().equals(dictId)).collect(Collectors.toList());
List<String> treeNameList = new ArrayList<>();
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
treeNameList = collect.stream().map(SysCategory::getName).collect(Collectors.toList());
}else{
treeNameList = collect.stream().map(SysCategory::getEnName).collect(Collectors.toList());
}
int i = 3;
List<String> msgList = new ArrayList<>();
String value = "";
boolean flag = true;
//编号验证
verifySerialNumber(dataList,authDummyInventoryInfoEOTemp);
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : dataList) {
i++;
String errorMsg = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
errorMsg = "" + i + "行:";
}else{
errorMsg = i + " line";
}
//编号
String serialNumber = authDummyInventoryInfoEO.getSerialNumber();
//wvtaId
String wvtaId = authDummyInventoryInfoEO.getWvtaId();
//类别
String category = authDummyInventoryInfoEO.getCategory();
//检验项目
String inspectionItem = authDummyInventoryInfoEO.getInspectionItem();
//配置项
String configItem = authDummyInventoryInfoEO.getConfigItem();
//责任领域
String dutyTerritory = authDummyInventoryInfoEO.getDutyTerritory();
//交付物
String deliverable = authDummyInventoryInfoEO.getDeliverable();
//文档库id
String bussDocumentLibraryId = authDummyInventoryInfoEO.getBussDocumentLibraryId();
// 虚拟表基础表id
String authDummyInventoryBaseId = authDummyInventoryInfoEO.getAuthDummyInventoryBaseId();
//编号(输入框必填)
flag = must(authDummyInventoryInfoEO, errorMsg, msgList, serialNumber, "编号", "Number");
//WVTA ID
if(StringUtils.isNotBlank(wvtaId)){
if(wvtaId.length() > 100){
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "WVTA ID不能超过100个字符, ";
}else{
message = errorMsg + " The WVTA ID cannot contain more than 100 characters, ";
}
msgList.add(message);
}
}
//责任领域(多选必填)
flag = must(authDummyInventoryInfoEO, errorMsg, msgList, dutyTerritory,"责任领域","Responsible Field");
if(flag){
value = pullMore(dictItemList, authDummyInventoryInfoEO, errorMsg, dutyTerritory,msgList,"责任领域","Responsible Field","duty_territory");
if(StringUtils.isNotBlank(value)){
authDummyInventoryInfoEO.setDutyTerritory(value);
}
}
}
if (msgList.size() > 0) {
//返回报错信息
String html = "";
for (String s : msgList) {
html += s + "</br>";
}
FileUnZip.deleteDir(saveDirectory);
throw new JeroBootException(html);
} else {
StringBuilder serialNumberBuilder = new StringBuilder();
if (dataList.size() != 0) {
this.saveBatch(dataList);
//更新log
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : dataList){
serialNumberBuilder.append(authDummyInventoryInfoEO.getSerialNumber()).append(",");
}
String serialNumber = serialNumberBuilder.substring(0, serialNumberBuilder.length() - 1);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = sysUser.getUsername();
String contentLog = username+"向清单中导入了“"+serialNumber+"";
String enContentLog = username+" imported “"+serialNumber+"” into the list.";
dummyLogEOService.updateLog(contentLog, dataList.get(0).getAuthDummyInventoryBaseId(),CutEnum.CN.getValue());
dummyLogEOService.updateLog(enContentLog, dataList.get(0).getAuthDummyInventoryBaseId(),CutEnum.EN.getValue());
}
}
}
private String pullMore(List<SysDictItem> dictItemList, AuthDummyInventoryInfoEO authDummyInventoryInfoEO,
String errorMsg, String value,List<String> msgList,
String nameCn,String nameEn,String dictCode) {
List<String> valueList = new ArrayList<>();
if (StringUtils.isNotBlank(value)) {
List<String> list = Arrays.asList(value.split(","));
List<SysDictItem> collect = dictItemList.stream().filter(e -> dictCode.equals(e.getDictCode()) && list.contains(e.getItemText())).collect(Collectors.toList());
if(list.size() == collect.size()){
valueList = collect.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
}else{
//数据中有与数据字典不匹配的值
List<String> finalValueList = valueList;
List<String> diffList = list.stream().filter(e -> !finalValueList.contains(e)).collect(Collectors.toList());
if (CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())) {
errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配, ";
} else {
errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary, ";
}
msgList.add(errorMsg);
}
}
return StringUtils.join(valueList,",");
}
private boolean must(AuthDummyInventoryInfoEO authDummyInventoryInfoEO, String errorMsg,
List<String> msgList, String serialNumber,String nameCn,String nameEn) {
int errorCount = 0;
if(StringUtils.isBlank(serialNumber)){
errorCount ++;
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
errorMsg += nameCn + "为必填项,不能为空, ";
}else{
errorMsg += nameEn + " this parameter is mandatory and cannot be empty, ";
}
msgList.add(errorMsg);
}
if(errorCount == 0){
return true;
}else{
return false;
}
}
private void verifySerialNumber(List<AuthDummyInventoryInfoEO> dataList,AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp) {
//文档库数据
List<String> serialNumberList = dataList.stream().map(AuthDummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
List<String> serialNumberS = new ArrayList<>();
if(serialNumberList.size() != 0){
for (String s : serialNumberList) {
if(StringUtils.isNotBlank(s)){
serialNumberS.add(s);
}
}
}
if(serialNumberS.size() != 0){
LambdaQueryWrapper<BussDocumentLibraryEO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(BussDocumentLibraryEO::getSerialNumber,serialNumberS);
List<BussDocumentLibraryEO> bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(wrapper);
//文档库中可能存在重复的标准号
List<String> serialNumberListTemp = bussDocumentLibraryEOList.stream().map(BussDocumentLibraryEO::getSerialNumber).distinct().collect(Collectors.toList());
//虚拟清单数据
LambdaQueryWrapper<AuthDummyInventoryInfoEO> wrapperTemp = new LambdaQueryWrapper<>();
wrapperTemp.in(AuthDummyInventoryInfoEO::getSerialNumber,serialNumberS).in(AuthDummyInventoryInfoEO::getAuthDummyInventoryBaseId,authDummyInventoryInfoEOTemp.getAuthDummyInventoryBaseId());
List<AuthDummyInventoryInfoEO> dummyInventoryInfoEOList = this.list(wrapperTemp);
List<String> serialNumberTempList = dummyInventoryInfoEOList.stream().map(AuthDummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
if(serialNumberS.size() != serialNumberListTemp.size()){
//存在文档库没有的数据
List<String> collect = bussDocumentLibraryEOList.stream().map(BussDocumentLibraryEO::getSerialNumber).collect(Collectors.toList());
List<String> serialNumbers = serialNumberS.stream().filter(e -> !collect.contains(e)).collect(Collectors.toList());
if(serialNumbers.size() != 0){
if(CutEnum.CN.getValue().equals(dataList.get(0).getCut())){
throw new JeroBootException(StringUtils.join(serialNumbers,",")+"文档库中不存在,不能添加");
}else{
throw new JeroBootException(StringUtils.join(serialNumbers,",")+" does not exist in the document library and cannot be added");
}
}
}
if(dummyInventoryInfoEOList.size() > 0){
if(CutEnum.CN.getValue().equals(dataList.get(0).getCut())){
throw new JeroBootException(StringUtils.join(serialNumberTempList,",")+"已存在,不能重复添加");
}else{
throw new JeroBootException(StringUtils.join(serialNumberTempList,",")+" already exists and cannot be added again");
}
}
//通过编号将导入的数据与文档库进行关联
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : dataList) {
List<BussDocumentLibraryEO> collect = bussDocumentLibraryEOList.stream()
.filter(e -> e.getSerialNumber().equals(authDummyInventoryInfoEO.getSerialNumber())).collect(Collectors.toList());
authDummyInventoryInfoEO.setBussDocumentLibraryId(collect.get(0).getId());
authDummyInventoryInfoEO.setAuthDummyInventoryBaseId(collect.get(0).getId());
}
}
}
private String fieldConvert(String field){
if (field == null) return null;
switch (field) {
case "类别": return "category";
case "检验项目": return "inspectionItem";
case "WVTA ID": return "wvtaId";
case "编号" : return "serialNumber";
case "责任领域": return "dutyTerritory";
case "交付物" : return "deliverable";
case "Category" : return "Category";
case "Inspection Items" : return"inspectionItem";
// case "WVTA ID" : return "wvtaId";
case "Number" : return "serialNumber";
case "Responsible Field" : return "dutyTerritory";
case "Deliverables" : return "deliverable";
default: return null;
}
}
//判断row是否为空 空返回true
public boolean isRowEmpty(Row row) {
if (null == row) {
return true;
}
int firstCellNum = row.getFirstCellNum(); //第一个列位置
int lastCellNum = row.getLastCellNum(); //最后一列位置
int nullCellNum = 0; //空列数量
for (int c = firstCellNum; c < lastCellNum; c++) {
Cell cell = row.getCell(c);
if (null == cell) {
nullCellNum++;
continue;
}
String value = "";
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC: // 数字
//如果为时间格式的内容
value = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING: // 字符串
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
value = cell.getBooleanCellValue() + "";
break;
case HSSFCell.CELL_TYPE_FORMULA: // 公式
value = cell.getCellFormula() + "";
break;
default:
break;
}
if (org.apache.commons.lang.StringUtils.isEmpty(value)) {
nullCellNum++;
}
}
//所有列都为空
if (nullCellNum == (lastCellNum - firstCellNum)) {
return true;
}
return false;
}
private void transition(List<AuthDummyInventoryInfoEOEn> dataListEn) {
//技术领域数据字典
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
for (AuthDummyInventoryInfoEOEn authDummyInventoryInfoEOEn : dataListEn) {
//责任领域dutyTerritory
String dutyTerritory = authDummyInventoryInfoEOEn.getDutyTerritory();
String pullDutyTerritory = pull(sysDictItems, dutyTerritory,"duty_territory");
if(StringUtils.isNotBlank(pullDutyTerritory)){
authDummyInventoryInfoEOEn.setDutyTerritory(pullDutyTerritory);
}
}
}
private String pull(List<SysDictItem> sysDictItems, String field,String dictCode) {
if(StringUtils.isBlank(field)){
return null;
}
StringBuilder sb = new StringBuilder();
for (String s : field.split(",")) {
List<SysDictItem> collect = sysDictItems.stream().filter(e -> dictCode.equals(e.getDictCode()) && s.equals(e.getItemValue())).collect(Collectors.toList());
if(collect.size() != 0){
sb.append(collect.get(0).getEnName() + ",");
}
}
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
return substring;
}
return null;
}
}
@@ -0,0 +1,109 @@
package com.jero.modules.authDummy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.authDummy.entity.AuthDummyReadEO;
import com.jero.modules.authDummy.mapper.AuthDummyReadEOMapper;
import com.jero.modules.authDummy.service.IAuthDummyReadEOService;
import com.jero.modules.dummy.entity.DummyReadEO;
import me.zhyd.oauth.utils.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Date;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 虚拟认证清单订阅表
* @Author: jero-boot
* @Date: 2023-03-10
* @Version: V1.0
*/
@Service
public class AuthDummyReadEOServiceImpl extends ServiceImpl<AuthDummyReadEOMapper, AuthDummyReadEO> implements IAuthDummyReadEOService {
/**
* 保存
*
* @param authDummyReadEO
* @return
*/
@Override
public void add(AuthDummyReadEO authDummyReadEO) {
Date now = new Date();
authDummyReadEO.setCreateTime(now);
authDummyReadEO.setUpdateTime(now);
save(authDummyReadEO);
}
/**
* 更新
*
* @param authDummyReadEO
* @return
*/
@Override
public void editById(AuthDummyReadEO authDummyReadEO) {
Date now = new Date();
authDummyReadEO.setUpdateTime(now);
saveOrUpdate(authDummyReadEO);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public AuthDummyReadEO queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<AuthDummyReadEO> queryList() {
return list();
}
@Override
public List<String> queryReadUserInfo(String authDummyInventoryBaseId) {
//获取订阅该虚拟清单的所有用户信息
if(StringUtils.isNotEmpty(authDummyInventoryBaseId)){
QueryWrapper<AuthDummyReadEO> queryWrapper = new QueryWrapper<>();
queryWrapper.select("create_by").eq("auth_dummy_inventory_base_id",authDummyInventoryBaseId);
List<String> readUserList = list(queryWrapper).stream().map(e -> e.getCreateBy()).distinct().collect(Collectors.toList());
return readUserList;
}else{
throw new JeroBootException("The virtual authentication inventory is not subscribed.");//该虚拟认证清单未被订阅
}
}
}