Merge remote-tracking branch 'origin/master'

This commit is contained in:
yjz
2023-10-20 11:08:21 +08:00
22 changed files with 1815 additions and 262 deletions
@@ -131,10 +131,10 @@ public class LawsAsmsDomestic implements Serializable {
private java.lang.String subcommittee;
/**创建时间*/
@ApiModelProperty(value = "创建时间")
private java.lang.String createTime;
private java.lang.String createTimeString;
/**更新时间*/
@ApiModelProperty(value = "更新时间")
private java.lang.String updateTime;
private java.lang.String updateTimeString;
/**同步标识*/
@Excel(name = "同步标识", width = 15)
@ApiModelProperty(value = "同步标识")
@@ -1,10 +1,13 @@
package com.jero.modules.docking.asms.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.modules.docking.asms.entity.LawsAsmsDomestic;
import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper;
import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService;
import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService;
import com.jero.modules.docking.asms.util.AsmsPostUtil;
import com.jero.modules.system.entity.SysDictItem;
@@ -46,6 +49,8 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
@Autowired
private ISysDictItemService sysDictItemService;
@Autowired
private ILawsAsmsDomesticService lawsAsmsDomesticService;
@Autowired
private LawsAsmsOpenApiMapper lawsAsmsOpenApiMapper;
/**
@@ -152,7 +157,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map);
if ("1".equals(lawsAsmsOpenApi.getApiType())
&& StringUtils.isNotBlank(lawsAsmsOpenApi.getDictId()) && !Objects.isNull(mapList)) {
&& StringUtils.isNotBlank(lawsAsmsOpenApi.getDictId()) && CollectionUtils.isNotEmpty(mapList)) {
// 如果是下拉字典(普通)、字典id不为空、返回的数据不为空,则进行数据字典同步操作
// 查询该字典全部数据项
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
@@ -222,8 +227,38 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
}
// 状态设置为已同步
lawsAsmsOpenApi.setStatus("1");
} else if ("2".equals(lawsAsmsOpenApi.getApiType()) && !Objects.isNull(mapList)) {
// 如果是分标委
} else if ("3".equals(lawsAsmsOpenApi.getApiType())
&& "xiaobodata/openApi/domesticLaws/list".equals(lawsAsmsOpenApi.getApiUrl())) {
// 如果是国内法规,并且url为国内法规标准检索列表
Integer pageNo;
Integer pageSize;
if (CollectionUtils.isNotEmpty(mapList)) {
// 不为空则增加查询的分页
pageNo = Integer.valueOf(map.get("pageNo")) + 1;
List<LawsAsmsDomestic> lawsAsmsDomesticList = new ArrayList();
mapList.forEach(eMap -> {
LawsAsmsDomestic lawsAsmsDomestic = JSONObject.parseObject(JSONObject.toJSONString(eMap), LawsAsmsDomestic.class);
lawsAsmsDomestic.setId(lawsAsmsDomestic.getCode());
lawsAsmsDomestic.setCreateTimeString(eMap.get("createTime"));
lawsAsmsDomestic.setUpdateTimeString(eMap.get("updateTime"));
lawsAsmsDomestic.setSyncFlag("A");
lawsAsmsDomesticList.add(lawsAsmsDomestic);
});
lawsAsmsDomesticService.saveOrUpdateBatch(lawsAsmsDomesticList);
} else {
// 为空则全部置0
pageNo = 1;
// 已同步
lawsAsmsOpenApi.setStatus("1");
}
map.put("pageNo", pageNo.toString());
String jsonString = JSON.toJSONString(map);
lawsAsmsOpenApi.setQueryParamJson(jsonString);
}
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size());
});
// 同步接口的状态
updateBatchById(lawsAsmsOpenApiList);
@@ -116,6 +116,9 @@ public class AsmsPostUtil {
if (CollectionUtils.isEmpty(mapList)) {
mapList = new ArrayList<>();
Map<String, String> result = (Map<String, String>) responseEntity.getBody().getResult();
if (result.containsKey("records")) {
return new ArrayList<>();
}
mapList.add(result);
}
log.info("返回{}条数据", mapList.size());
@@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.common.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.modules.activiti.process.common.entity.CenterQueryVO;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -97,6 +98,7 @@ public class ProcessCenterController {
@AutoLog(value = "流程中心-办理")
@ApiOperation(value="流程中心-办理", notes="流程中心-办理")
@GetMapping("/handle")
@Translation
public Result<?> handle(@RequestParam("processInstanceId") String processInstanceId) {
return Result.OK(actFlowCommonService.handleTask(processInstanceId));
}
@@ -0,0 +1,82 @@
package com.jero.modules.activiti.process.esAnnualInit.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit;
import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.jero.common.system.base.controller.JeroController.*;
/**
* @author: Mzaxd
* @Date: 2023/10/18 10:44
*/
@Slf4j
@RestController
@Api(tags = "企标年度制修订标准化发起流程")
@RequestMapping("/process/es/annualInit")
public class ESAnnualInitController {
@Resource
private ProcessEsAnnualInitService annualInitService;
/**
* 导入模板下载
*/
@GetMapping("/templateDownload")
@ApiOperation(value = "企标年度制修订标准化发起流程-导入模板下载", notes = "企标年度制修订标准化发起流程-导入模板下载",
produces = "application/octet-stream")
@AutoLog(value = "企标年度制修订标准化发起流程-导入模板下载")
public ModelAndView templateDownload() {
// AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
String title = "标准化发起导入模板";
mv.addObject(FILE_NAME, title);
mv.addObject(CLASS, ProcessEsAnnualInit.class);
ExportParams exportParams=new ExportParams(title, title);
// 导出xlsx
exportParams.setType(ExcelType.XSSF);
mv.addObject(PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, new ArrayList<T>());
return mv;
}
/**
* 通过excel导入数据
*
* @return
*/
@PostMapping("/importExcel")
@ApiOperation(value = "企标年度制修订标准化发起流程-导入", notes = "企标年度制修订标准化发起流程-导入")
@AutoLog(value = "企标年度制修订标准化发起流程-导入")
@Translation
public Result<?> importExcel(@ApiParam(value = "要上传的文件", required = true) @RequestParam("file") MultipartFile file) {
Map<String, Object> resultMap = annualInitService.importData(file);
Object flag = resultMap.get("flag");
if (flag == YesOrNoEnum.YES.getValue()) {
return Result.OK(resultMap.get("dataList"));
} else {
return Result.error("导入失败", resultMap.get("msg"));
}
}
}
@@ -0,0 +1,145 @@
package com.jero.modules.activiti.process.esAnnualInit.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 企标-年度制修订计划-标准化发起
* @TableName process_es_annual_init
*/
@Data
@Accessors(chain = true)
public class EsAnnualInitImportDTO implements Serializable {
/**
* 制修订类型
*/
@Excel(name = "制修订类型", width = 15, orderNum = "1")
@ApiModelProperty(value = "制修订类型")
private String projectType;
/**
* 原企标编号
*/
@Excel(name = "原企标编号", width = 15, orderNum = "2")
@ApiModelProperty(value = "原企标编号")
private String originEnStandardNo;
/**
* 新企标编号
*/
@Excel(name = "新企标编号", width = 15, orderNum = "3")
@ApiModelProperty(value = "新企标编号")
private String newEnStandardNo;
/**
* 原企标名称
*/
@Excel(name = "原企标名称", width = 15, orderNum = "4")
@ApiModelProperty(value = "原企标名称")
private String originEnStandardName;
/**
* 新企标名称
*/
@Excel(name = "新企标名称", width = 15, orderNum = "5")
@ApiModelProperty(value = "新企标名称")
private String newEnStandardName;
/**
* 授权部门
*/
@Excel(name = "授权部门", width = 15, orderNum = "6")
@ApiModelProperty(value = "授权部门")
private String authDept;
/**
* 企业标准代号
*/
@Excel(name = "企业标准代号", width = 15, orderNum = "7")
@ApiModelProperty(value = "企业标准代号")
private String enStandardCode;
/**
* 配合单位
*/
@Excel(name = "配合单位", width = 15, orderNum = "8")
@ApiModelProperty(value = "配合单位")
private String cooperationUnit;
/**
* 主起草人
*/
@Excel(name = "主起草人", width = 15, orderNum = "9")
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
/**
* 主起草单位
*/
@Excel(name = "主起草单位", width = 15, orderNum = "10")
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
/**
* 主起草单位责任人
*/
@Excel(name = "主起草单位责任人", width = 20, orderNum = "11")
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
@Excel(name = "标准推进人", width = 15, orderNum = "12")
@ApiModelProperty(value = "标准推进人")
private String standardPromoter;
/**
* 草稿计划完成日期
*/
@Excel(name = "草稿计划完成日期", width = 20, orderNum = "13")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "草稿计划完成日期")
private Date draftPlannedCompleteDate;
/**
* 征求意见稿计划完成日期
*/
@Excel(name = "征求意见稿计划完成日期", width = 24, orderNum = "14")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿计划完成日期")
private Date solicitationDraftPlanCompleteDate;
/**
* 计划报批日期
*/
@Excel(name = "计划报批日期", width = 15, orderNum = "15")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "计划报批日期")
private Date planApprovalDate;
/**
* 变更状态
*/
@Excel(name = "变更状态", width = 15, orderNum = "16")
@ApiModelProperty(value = "变更状态")
private String changeStatus;
/**
* 联络人
*/
@Excel(name = "联络人", width = 15, orderNum = "17")
@ApiModelProperty(value = "联络人")
private String contactUser;
@ApiModelProperty(value = "序号")
private String sort;
}
@@ -0,0 +1,319 @@
package com.jero.modules.activiti.process.esAnnualInit.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 java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
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.jeecgframework.poi.excel.annotation.ExcelVerify;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
/**
* 企标-年度制修订计划-标准化发起
* @TableName process_es_annual_init
*/
@TableName(value ="process_es_annual_init")
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_annual_init", description="企标-年度制修订计划-标准化发起")
public class ProcessEsAnnualInit implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private String id;
/**
* 企标计划Id
*/
@ApiModelProperty(value = "企标计划Id")
private String espId;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 所属部门
*/
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**
* 0表示未删除,1表示删除
*/
@ApiModelProperty(value = "0表示未删除,1表示删除")
private Integer delFlag;
/**
* 流程实例Id
*/
@ApiModelProperty(value = "流程实例Id")
private String processInstanceId;
/**
* 申请类别
*/
@Dict(dicCode = "esp_application_category")
@ApiModelProperty(value = "申请类别")
private String applicationCategory;
/**
* 制修订类型
*/
@Excel(name = "制修订类型", width = 15, orderNum = "1")
@Dict(dicCode = "esp_revision_type")
@ApiModelProperty(value = "制修订类型")
private String projectType;
/**
* 原企标编号
*/
@Excel(name = "原企标编号", width = 15, orderNum = "2")
@ApiModelProperty(value = "原企标编号")
private String originEnStandardNo;
/**
* 新企标编号
*/
@ApiModelProperty(value = "新企标编号")
private String newEnStandardNo;
/**
* 原企标名称
*/
@Excel(name = "原企标名称", width = 15, orderNum = "4")
@ApiModelProperty(value = "原企标名称")
private String originEnStandardName;
/**
* 新企标名称
*/
@Excel(name = "新企标名称", width = 15, orderNum = "5")
@ApiModelProperty(value = "新企标名称")
private String newEnStandardName;
/**
* 企标英文名称
*/
@ApiModelProperty(value = "企标英文名称")
private String enStandardEnglishName;
/**
* 企标体系
*/
@Dict(dictTable = "laws_tree_node", dicCode = "id", dicText = "node_name")
@ApiModelProperty(value = "企标体系")
private String enStandardSystem;
/**
* 企业标准代号
*/
@Excel(name = "企业标准代号", width = 15, orderNum = "7")
@ApiModelProperty(value = "企业标准代号")
private String enStandardCode;
/**
* 企业名称代号
*/
@ApiModelProperty(value = "企业名称代号")
private String enNameCode;
/**
* 标准类别代号
*/
@ApiModelProperty(value = "标准类别代号")
private String standardCategoryCode;
/**
* 年代号
*/
@ApiModelProperty(value = "年代号")
private String decadeCode;
/**
* 标准类型
*/
@ApiModelProperty(value = "标准类型")
private String standardType;
/**
* 企标等级分类
*/
@ApiModelProperty(value = "企标等级分类")
private String enStandardClassification;
/**
* 草稿计划完成日期
*/
@Excel(name = "草稿计划完成日期", width = 20, orderNum = "13")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "草稿计划完成日期")
private Date draftPlannedCompleteDate;
/**
* 征求意见稿计划完成日期
*/
@Excel(name = "征求意见稿计划完成日期", width = 24, orderNum = "14")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿计划完成日期")
private Date solicitationDraftPlanCompleteDate;
/**
* 计划报批日期
*/
@Excel(name = "计划报批日期", width = 15, orderNum = "15")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "计划报批日期")
private Date planApprovalDate;
/**
* 项目状态
*/
@ApiModelProperty(value = "项目状态")
private String projectStatus;
/**
* 编制说明
*/
@ApiModelProperty(value = "编制说明")
private String compilationDescription;
/**
* 零部件名称
*/
@ApiModelProperty(value = "零部件名称")
private String componentName;
/**
* 主起草人
*/
@Excel(name = "主起草人", width = 15, orderNum = "9")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@NotNull
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
/**
* 主起草单位
*/
@Excel(name = "主起草单位", width = 15, orderNum = "10")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@NotNull
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
/**
* 主起草单位责任人
*/
@Excel(name = "主起草单位责任人", width = 20, orderNum = "11")
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
@Excel(name = "标准推进人", width = 15, orderNum = "12")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "标准推进人")
private String standardPromoter;
/**
* 征求意见稿完成日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿完成日期")
private Date solicitationDraftCompletionDate;
/**
* 变更状态
*/
@Dict(dicCode = "esp_change_status")
@ApiModelProperty(value = "变更状态")
private String changeStatus;
/**
* 上传附件
*/
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
@ApiModelProperty(value = "上传附件")
private String uploadAttachment;
/**
* 变更原因
*/
@ApiModelProperty(value = "变更原因")
private String changeReason;
/**
* 授权部门
*/
@Excel(name = "授权部门", width = 15, orderNum = "6")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "授权部门")
private String authDept;
/**
* 配合单位
*/
@Excel(name = "配合单位", width = 15, orderNum = "8")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "配合单位")
private String cooperationUnit;
/**
* 联络人
*/
@Excel(name = "联络人", width = 15, orderNum = "17")
@ApiModelProperty(value = "联络人")
private String contactUser;
/**
* 审批人
*/
@ApiModelProperty(value = "审批人")
private String approvalUser;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
@TableField(exist = false)
private String sort;
}
@@ -0,0 +1,18 @@
package com.jero.modules.activiti.process.esAnnualInit.mapper;
import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author ThinkBook
* @description 针对表【process_es_annual_init(企标立项变更流程)】的数据库操作Mapper
* @createDate 2023-10-18 10:01:44
* @Entity com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit
*/
public interface ProcessEsAnnualInitMapper extends BaseMapper<ProcessEsAnnualInit> {
}
@@ -0,0 +1,68 @@
<?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.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper">
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="espId" column="esp_id" jdbcType="VARCHAR"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="delFlag" column="del_flag" jdbcType="TINYINT"/>
<result property="processInstanceId" column="process_instance_id" jdbcType="VARCHAR"/>
<result property="applicationCategory" column="application_category" jdbcType="VARCHAR"/>
<result property="projectType" column="project_type" jdbcType="VARCHAR"/>
<result property="originEnStandardNo" column="origin_en_standard_no" jdbcType="VARCHAR"/>
<result property="newEnStandardNo" column="new_en_standard_no" jdbcType="VARCHAR"/>
<result property="originEnStandardName" column="origin_en_standard_name" jdbcType="VARCHAR"/>
<result property="newEnStandardName" column="new_en_standard_name" jdbcType="VARCHAR"/>
<result property="enStandardEnglishName" column="en_standard_english_name" jdbcType="VARCHAR"/>
<result property="enStandardSystem" column="en_standard_system" jdbcType="VARCHAR"/>
<result property="enStandardCode" column="en_standard_code" jdbcType="VARCHAR"/>
<result property="enNameCode" column="en_name_code" jdbcType="VARCHAR"/>
<result property="standardCategoryCode" column="standard_category_code" jdbcType="VARCHAR"/>
<result property="decadeCode" column="decade_code" jdbcType="VARCHAR"/>
<result property="standardType" column="standard_type" jdbcType="VARCHAR"/>
<result property="enStandardClassification" column="en_standard_classification" jdbcType="VARCHAR"/>
<result property="draftPlannedCompleteDate" column="draft_planned_complete_date" jdbcType="TIMESTAMP"/>
<result property="solicitationDraftPlanCompleteDate" column="solicitation_draft_plan_complete_date" jdbcType="TIMESTAMP"/>
<result property="planApprovalDate" column="plan_approval_date" jdbcType="TIMESTAMP"/>
<result property="projectStatus" column="project_status" jdbcType="VARCHAR"/>
<result property="compilationDescription" column="compilation_description" jdbcType="VARCHAR"/>
<result property="componentName" column="component_name" jdbcType="VARCHAR"/>
<result property="mainDraftingUser" column="main_drafting_user" jdbcType="VARCHAR"/>
<result property="mainDraftingUnit" column="main_drafting_unit" jdbcType="VARCHAR"/>
<result property="mainDraftingUnitResponsiblePerson" column="main_drafting_unit_responsible_person" jdbcType="VARCHAR"/>
<result property="standardPromoter" column="standard_promoter" jdbcType="VARCHAR"/>
<result property="solicitationDraftCompletionDate" column="solicitation_draft_completion_date" jdbcType="TIMESTAMP"/>
<result property="changeStatus" column="change_status" jdbcType="VARCHAR"/>
<result property="remarks" column="remarks" jdbcType="VARCHAR"/>
<result property="uploadAttachment" column="upload_attachment" jdbcType="VARCHAR"/>
<result property="changeReason" column="change_reason" jdbcType="VARCHAR"/>
<result property="authDept" column="auth_dept" jdbcType="VARCHAR"/>
<result property="cooperationUnit" column="cooperation_unit" jdbcType="VARCHAR"/>
<result property="contactUser" column="contact_user" jdbcType="VARCHAR"/>
<result property="approvalUser" column="approval_user" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,esp_id,create_by,
create_time,update_by,update_time,
org_code,del_flag,process_instance_id,
application_category,project_type,origin_en_standard_no,
new_en_standard_no,origin_en_standard_name,new_en_standard_name,
en_standard_english_name,en_standard_system,en_standard_code,
en_name_code,standard_category_code,decade_code,
standard_type,en_standard_classification,draft_planned_complete_date,
solicitation_draft_plan_complete_date,plan_approval_date,project_status,
compilation_description,component_name,main_drafting_user,
main_drafting_unit,main_drafting_unit_responsible_person,standard_promoter,
solicitation_draft_completion_date,change_status,remarks,
upload_attachment,change_reason,auth_dept,
cooperation_unit,contact_user,approval_user
</sql>
</mapper>
@@ -0,0 +1,23 @@
package com.jero.modules.activiti.process.esAnnualInit.service;
import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit;
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.Map;
/**
* @author ThinkBook
* @description 针对表【process_es_annual_init(企标立项变更流程)】的数据库操作Service
* @createDate 2023-10-18 10:01:44
*/
public interface ProcessEsAnnualInitService extends IService<ProcessEsAnnualInit> {
/**
* 导入数据,返回数据列表
* @return
*/
Map<String, Object> importData(MultipartFile file);
}
@@ -0,0 +1,297 @@
package com.jero.modules.activiti.process.esAnnualInit.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.CommonAPI;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.system.vo.SysDictItemCore;
import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit;
import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService;
import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
import com.jero.modules.activiti.util.ExcelUtils;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author ThinkBook
* @description 针对表【process_es_annual_init(企标立项变更流程)】的数据库操作Service实现
* @createDate 2023-10-18 10:01:44
*/
@Slf4j
@Service
public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualInitMapper, ProcessEsAnnualInit>
implements ProcessEsAnnualInitService {
@Resource
private CommonAPI commonAPI;
@Resource
private ExcelUtils excelUtils;
@Resource
private ILawsEnterpriseStandardService enterpriseStandardService;
@Override
public Map<String, Object> importData(MultipartFile file) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
Map<String, Object> resultMap = new HashMap<>();
List<String> errorMsgs = new ArrayList<>();
// 获取Excel的header
List<String> headers;
try {
headers = ExcelUtils.getHeaderFromExcel(file.getInputStream());
} catch (Exception e) {
errorMsgs.add("上传模板错误,请检查后重试。");
resultMap.put("msg", errorMsgs);
resultMap.put("flag", YesOrNoEnum.NO.getValue());
log.error(e.getMessage(), e);
return resultMap; // 返回错误信息
}
// 使用静态方法验证header
boolean isMatched = headers.equals(ExcelUtils.getSortedHeadersFromClass(ProcessEsAnnualInit.class));
if (!isMatched) {
errorMsgs.add("上传模板错误,请检查后重试。");
resultMap.put("msg", errorMsgs);
resultMap.put("flag", YesOrNoEnum.NO.getValue());
return resultMap; // 返回错误信息
}
ImportParams params = new ImportParams();
params.setTitleRows(1);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<ProcessEsAnnualInit> list = ExcelImportUtil.importExcel(file.getInputStream(), ProcessEsAnnualInit.class, params);
if (list.isEmpty()) {
errorMsgs.add("文件暂无数据,请检查后重试。");
resultMap.put("msg", errorMsgs);
resultMap.put("flag", YesOrNoEnum.NO.getValue());
return resultMap; // 返回错误信息
}
// 批量检查数据是否有效
errorMsgs = this.validationList(list, listDict);
if (errorMsgs.size() > 0) {
resultMap.put("msg", errorMsgs);
resultMap.put("flag", YesOrNoEnum.NO.getValue());
} else {
resultMap.put("flag", YesOrNoEnum.YES.getValue());
// 转换为字典值
this.transToDictValue(list, listDict);
// 清洗
this.cleanData(list);
resultMap.put("dataList", list);
}
} catch (Exception e) {
errorMsgs.add("文件导入异常:" + e.getMessage());
resultMap.put("msg", errorMsgs);
resultMap.put("flag", YesOrNoEnum.NO.getValue());
log.error(e.getMessage(), e);
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultMap;
}
private void cleanData(List<ProcessEsAnnualInit> list) {
list.forEach(item-> {
// 如果是制定则去除掉所有的原企标名称 原企标编号
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
item.setOriginEnStandardName(null);
item.setOriginEnStandardNo(null);
}
// 设置变更状态 制定是新增 修订是变更
if (item.getProjectType().equals("制定")) {
item.setChangeStatus("新增");
} else {
item.setChangeStatus("变更");
}
});
}
private void transToDictValue(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) {
list.forEach(item -> {
item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict));
item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict));
item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), listDict));
item.setCooperationUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getCooperationUnit(), listDict));
item.setMainDraftingUser(excelUtils.translateDictValue("username", "id", "sys_user", item.getMainDraftingUser(), listDict));
item.setMainDraftingUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getMainDraftingUnit(), listDict));
item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("username", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict));
item.setStandardPromoter(excelUtils.translateDictValue("username", "id", "sys_user", item.getStandardPromoter(), listDict));
item.setContactUser(excelUtils.translateDictValue("username", "id", "sys_user", item.getContactUser(), listDict));
});
}
private List<String> validationList(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) {
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>();
int i = 3;
Iterator<ProcessEsAnnualInit> iterator = list.iterator();
while (iterator.hasNext()) {
ProcessEsAnnualInit plan = iterator.next();
if (ExcelUtils.isEmptyRow(plan)) {
iterator.remove();
continue;
}
plan.setSort(String.valueOf(i++));
String enStandardCode = plan.getProjectType();
String authDept = plan.getProjectType();
String cooperationUnit = plan.getCooperationUnit();
String mainDraftingUnit = plan.getMainDraftingUnit();
String mainDraftingUser = plan.getProjectType();
String mainDraftingUnitResponsiblePerson = plan.getMainDraftingUnitResponsiblePerson();
String standardPromoter = plan.getStandardPromoter();
String contactUser = plan.getContactUser();
StringBuilder errMsgHeader = new StringBuilder();
StringBuilder errMsg = new StringBuilder();
errMsgHeader.append("").append(plan.getSort()).append("");
// 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList));
// 检查所有数据字典校验的字段
errMsg.append(validAuthDept(authDept, listDict));
errMsg.append(validStandardCode(enStandardCode, listDict));
errMsg.append(validCooperateUnit(cooperationUnit, listDict));
errMsg.append(validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(validMainDraftingUnit(mainDraftingUnit, listDict));
errMsg.append(validMainDraftingUnitResponsiblePerson(mainDraftingUnitResponsiblePerson, listDict));
errMsg.append(validStandardPromoter(standardPromoter, listDict));
errMsg.append(validContactUser(contactUser, listDict));
// 如果数据有问题,则将提示信息添加到 errorMsgs 中
if (errMsg.length() > 0) {
errorMsgs.add(errMsgHeader.append(errMsg).toString());
}
}
return errorMsgs;
}
private String validAuthDept(String value, List<SysDictItemCore> listDict) {
// 非空检查
if (StrUtil.isBlank(value)) {
return "'授权部门'不能为空。";
}
// 检查授权部门
if (!excelUtils.validDict("depart_name", value, "sys_depart", "id", false, listDict)) {
return "'授权部门'无效。";
}
return "";
}
private String validStandardCode(String value, List<SysDictItemCore> listDict) {
// 检查企业标准代号
if (!excelUtils.validDict("enterprise_standard_code", value, null, null, true, listDict)) {
return "'企业标准代号'无效。";
}
return "";
}
private String validCooperateUnit(String value, List<SysDictItemCore> listDict) { // 非空检查
if (StrUtil.isBlank(value)) {
return "'配合单位'不能为空。";
}
// 检查配合单位
if (!excelUtils.validDict("depart_name", value, "sys_depart", "id", false, listDict)) {
return "'配合单位'无效。";
}
return "";
}
private String validMainDraftingUser(String value, List<SysDictItemCore> listDict) {
if (StrUtil.isBlank(value)) {
return "'主起草人'不能为空。";
}
// 检查主起草人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
return "'主起草人'无效。";
}
return "";
}
private String validMainDraftingUnit(String value, List<SysDictItemCore> listDict) {
if (StrUtil.isBlank(value)) {
return "'主起草单位'不能为空。";
}
// 检查主起草单位
if (!excelUtils.validDict("depart_name", value, "sys_depart", "id", true, listDict)) {
return "'主起草单位'无效。";
}
return "";
}
private String validMainDraftingUnitResponsiblePerson(String value, List<SysDictItemCore> listDict) {
if (StrUtil.isBlank(value)) {
return "'主起草单位负责人'不能为空。";
}
// 检查主起草单位负责人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
return "'主起草单位负责人'无效。";
}
return "";
}
private String validStandardPromoter(String value, List<SysDictItemCore> listDict) {
if (StrUtil.isBlank(value)) {
return "'标准推进人'不能为空。";
}
// 检查标准推进人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
return "'标准推进人'无效。";
}
return "";
}
private String validContactUser(String value, List<SysDictItemCore> listDict) {
if (StrUtil.isBlank(value)) {
return "'联络人'不能为空。";
}
// 检查联络人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
return "'联络人'无效。";
}
return "";
}
private String validProjectType(ProcessEsAnnualInit plan, List<SysDictItemCore> listDict, List<LawsEnterpriseStandard> esList) {
String projectType = plan.getProjectType();
String originEnStandardNo = plan.getProjectType();
String newEnStandardName = plan.getNewEnStandardName();
if (StrUtil.isBlank(projectType)) {
return "'制修订类型'不能为空。";
}
if (!excelUtils.validDict("esp_revision_type", projectType, null, null, true, listDict)) {
return "'制修订类型'无效。";
}
// 修订
if (projectType.equals(ESPProjectType.MODIFY.getValue())) {
// 检查企标编号是否有效
if (StrUtil.isBlank(originEnStandardNo)) {
return "'原企标编号'不能为空。";
}
if (!esList.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList()).contains(originEnStandardNo)) {
return "'原企标编号'无效。";
}
}
if (newEnStandardName.length() > 50) {
return "'新企标名称'过长(最多50字)。";
}
return "";
}
}
@@ -0,0 +1,53 @@
package com.jero.modules.activiti.process.esAnnualReport.controller;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import static com.jero.common.system.base.controller.JeroController.*;
/**
* @author: Mzaxd
* @Date: 2023/10/18 10:44
*/
@Slf4j
@RestController
@Api(tags = "企标年度制修订主动上报流程")
@RequestMapping("/process/es/annualReport")
public class ESAnnualReportController {
/**
* 导入模板下载
*/
@GetMapping("/templateDownload")
@ApiOperation(value = "企标年度制修订主动上报流程-导入模板下载", notes = "企标年度制修订主动上报流程-导入模板下载",
produces = "application/octet-stream")
@AutoLog(value = "企标年度制修订主动上报流程-导入模板下载")
public ModelAndView templateDownload() {
// AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
String title = "各部门主动上报导入模板";
mv.addObject(FILE_NAME, title);
mv.addObject(CLASS, ProcessEsAnnualReport.class);
ExportParams exportParams=new ExportParams(title, title);
// 导出xlsx
exportParams.setType(ExcelType.XSSF);
mv.addObject(PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, new ArrayList<T>());
return mv;
}
}
@@ -0,0 +1,330 @@
package com.jero.modules.activiti.process.esAnnualReport.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 java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jero.common.aspect.annotation.Dict;
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;
/**
* 企标-年度制修订计划-各部门主动上报
* @TableName process_es_annual_report
*/
@Data
@TableName(value ="process_es_annual_report")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_es_annual_report对象", description="企标-年度制修订计划-各部门主动上报")
public class ProcessEsAnnualReport implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private String id;
/**
* 企标计划Id
*/
@ApiModelProperty(value = "企标计划Id")
private String espId;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 所属部门
*/
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**
* 0表示未删除,1表示删除
*/
@ApiModelProperty(value = "0表示未删除,1表示删除")
private Integer delFlag;
/**
* 流程实例Id
*/
@ApiModelProperty(value = "流程实例Id")
private String processInstanceId;
/**
* 申请类别
*/
@Dict(dicCode = "esp_application_category")
@ApiModelProperty(value = "申请类别")
private String applicationCategory;
/**
* 项目类型
*/
@Excel(name = "制修订类型", width = 15, orderNum = "1")
@Dict(dicCode = "esp_revision_type")
@ApiModelProperty(value = "制修订类型")
private String projectType;
/**
* 原企标编号
*/
@Excel(name = "原企标编号", width = 15, orderNum = "2")
@ApiModelProperty(value = "原企标编号")
private String originEnStandardNo;
/**
* 新企标编号
*/
@Excel(name = "新企标编号", width = 15, orderNum = "3")
@ApiModelProperty(value = "新企标编号")
private String newEnStandardNo;
/**
* 原企标名称
*/
@Excel(name = "原企标名称", width = 15, orderNum = "4")
@ApiModelProperty(value = "原企标名称")
private String originEnStandardName;
/**
* 新企标名称
*/
@Excel(name = "新企标名称", width = 15, orderNum = "5")
@ApiModelProperty(value = "新企标名称")
private String newEnStandardName;
/**
* 企标英文名称
*/
@ApiModelProperty(value = "企标英文名称")
private String enStandardEnglishName;
/**
* 企标体系
*/
@ApiModelProperty(value = "企标体系")
private String enStandardSystem;
/**
* 企业标准代号
*/
@Excel(name = "企业标准代号", width = 15, orderNum = "7", dicCode = "enterprise_standard_code")
@Dict(dicCode = "enterprise_standard_code")
@ApiModelProperty(value = "企业标准代号")
private String enStandardCode;
/**
* 企业名称代号
*/
@ApiModelProperty(value = "企业名称代号")
private String enNameCode;
/**
* 标准类别代号
*/
@ApiModelProperty(value = "标准类别代号")
private String standardCategoryCode;
/**
* 年代号
*/
@ApiModelProperty(value = "年代号")
private String decadeCode;
/**
* 标准类型
*/
@ApiModelProperty(value = "标准类型")
private String standardType;
/**
* 企标等级分类
*/
@ApiModelProperty(value = "企标等级分类")
private String enStandardClassification;
/**
* 草稿计划完成日期
*/
@Excel(name = "草稿计划完成日期", width = 20, orderNum = "13")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "草稿计划完成日期")
private Date draftPlannedCompleteDate;
/**
* 征求意见稿计划完成日期
*/
@Excel(name = "征求意见稿计划完成日期", width = 24, orderNum = "14")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿计划完成日期")
private Date solicitationDraftPlanCompleteDate;
/**
* 计划报批日期
*/
@Excel(name = "计划报批日期", width = 15, orderNum = "15")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "计划报批日期")
private Date planApprovalDate;
/**
* 项目状态
*/
@ApiModelProperty(value = "项目状态")
private String projectStatus;
/**
* 编制说明
*/
@ApiModelProperty(value = "编制说明")
private String compilationDescription;
/**
* 零部件名称
*/
@ApiModelProperty(value = "零部件名称")
private String componentName;
/**
* 主起草人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
/**
* 主起草单位
*/
@Excel(name = "主起草单位", width = 15, orderNum = "9", dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
/**
* 主起草单位责任人
*/
@Excel(name = "主起草单位责任人", width = 20, orderNum = "10", dictTable = "sys_user", dicCode = "id", dicText = "username")
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
/**
* 标准推进人
*/
@Excel(name = "标准推进人", width = 15, orderNum = "12", dicCode = "id", dictTable = "sys_user", dicText = "username")
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
@ApiModelProperty(value = "标准推进人")
private String standardPromoter;
/**
* 草稿完成日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "草稿完成日期")
private Date draftCompletionDate;
/**
* 提交草稿日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "提交草稿日期")
private Date draftSubmissionDate;
/**
* 是否征求意见
*/
@ApiModelProperty(value = "是否征求意见")
private String solicitationOpinionEnabled;
/**
* 征求意见稿完成日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿完成日期")
private Date solicitationDraftCompletionDate;
/**
* 变更状态
*/
@Excel(name = "变更状态", width = 15, orderNum = "16")
@Dict(dicCode = "esp_change_status")
@ApiModelProperty(value = "变更状态")
private String changeStatus;
/**
* 上传附件
*/
@ApiModelProperty(value = "上传附件")
private String uploadAttachment;
/**
* 变更原因
*/
@ApiModelProperty(value = "变更原因")
private String changeReason;
/**
* 授权部门
*/
@Excel(name = "授权部门", width = 15, orderNum = "6", dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "授权部门")
private String authDept;
/**
* 配合单位
*/
@Excel(name = "配合单位", width = 15, orderNum = "8", dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "配合单位")
private String cooperationUnit;
/**
* 隶属工作组
*/
@Excel(name = "隶属工作组", width = 15, orderNum = "11", dictTable = "laws_working_group", dicCode = "id", dicText = "name")
@Dict(dictTable = "laws_working_group", dicCode = "id", dicText = "name")
@ApiModelProperty(value = "隶属工作组")
private String workGroup;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
@@ -0,0 +1,18 @@
package com.jero.modules.activiti.process.esAnnualReport.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
/**
* @author ThinkBook
* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Mapper
* @createDate 2023-10-18 09:52:41
* @Entity com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualReport
*/
public interface ProcessEsAnnualReportMapper extends BaseMapper<ProcessEsAnnualReport> {
}
@@ -0,0 +1,13 @@
package com.jero.modules.activiti.process.esAnnualReport.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
/**
* @author ThinkBook
* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service
* @createDate 2023-10-18 09:52:41
*/
public interface ProcessEsAnnualReportService extends IService<ProcessEsAnnualReport> {
}
@@ -0,0 +1,26 @@
package com.jero.modules.activiti.process.esAnnualReport.service.impl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author ThinkBook
* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service实现
* @createDate 2023-10-18 09:52:41
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnualReportMapper, ProcessEsAnnualReport>
implements IService<ProcessEsAnnualReport> {
}
@@ -8,7 +8,7 @@ import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 企标计划
* 企标立项变更计划
* @TableName process_es_init_change
*/
@Data
@@ -33,86 +33,109 @@ public class ProcessEsInitChange implements Serializable {
private String id;
/** 企标计划ID */
@ApiModelProperty(value = "企标计划ID")
private String espId;
/**
* 标准计划Id1(合并流程字段)
*/
@ApiModelProperty(value = "标准计划Id1(合并流程字段)")
private String standardIdOne;
/**
* 标准编号1(合并流程字段)
*/
@ApiModelProperty(value = "标准编号1(合并流程字段)")
private String standardNoOne;
/**
* 标准名称1(合并流程字段)
*/
@ApiModelProperty(value = "标准名称1(合并流程字段)")
private String standardNameOne;
/**
* 制修订类型1(合并流程字段)
*/
@Dict(dicCode = "esp_project_type")
@ApiModelProperty(value = "制修订类型1(合并流程字段)")
private String projectTypeOne;
/**
* 制修订类型2(合并流程字段)
*/
@Dict(dicCode = "esp_project_type")
@ApiModelProperty(value = "制修订类型2(合并流程字段)")
private String projectTypeTwo;
/**
* 标准计划Id2(合并流程字段)
*/
@ApiModelProperty(value = "标准计划Id2(合并流程字段)")
private String standardIdTwo;
/**
* 标准编号2(合并流程字段)
*/
@ApiModelProperty(value = "标准编号2(合并流程字段)")
private String standardNoTwo;
/**
* 标准名称2(合并流程字段)
*/
@ApiModelProperty(value = "标准名称2(合并流程字段)")
private String standardNameTwo;
/**
* 制修订类型2(合并流程字段)
*/
private String projectTypeTwo;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 所属部门
*/
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**
* 0表示未删除,1表示删除
*/
@ApiModelProperty(value = "0表示未删除,1表示删除")
private Integer delFlag;
/**
* 流程名称
*/
@ApiModelProperty(value = "流程名称")
private String processName;
/**
* 流程实例Id
*/
@ApiModelProperty(value = "流程实例Id")
private String processInstanceId;
/**
@@ -120,81 +143,99 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "截止日期")
private Date deadlineDate;
/**
* 流程说明
*/
@ApiModelProperty(value = "流程说明")
private String processDescription;
/**
* 申请类别
*/
@Dict(dicCode = "esp_application_category")
@ApiModelProperty(value = "申请类别")
private String applicationCategory;
/**
* 项目类型
*/
@Dict(dicCode = "esp_project_type")
@ApiModelProperty(value = "项目类型")
private String projectType;
/**
* 原企标编号
*/
@ApiModelProperty(value = "原企标编号")
private String originEnStandardNo;
/**
* 新企标编号
*/
@ApiModelProperty(value = "新企标编号")
private String newEnStandardNo;
/**
* 原企标名称
*/
@ApiModelProperty(value = "原企标名称")
private String originEnStandardName;
/**
* 新企标名称
*/
@ApiModelProperty(value = "新企标名称")
private String newEnStandardName;
/**
* 企标英文名称
*/
@ApiModelProperty(value = "企标英文名称")
private String enStandardEnglishName;
/**
* 企标体系
*/
@ApiModelProperty(value = "企标体系")
private String enStandardSystem;
/**
* 企业标准代号
*/
@ApiModelProperty(value = "企业标准代号")
private String enStandardCode;
/**
* 企业名称代号
*/
@ApiModelProperty(value = "企业名称代号")
private String enNameCode;
/**
* 标准类别代号
*/
@ApiModelProperty(value = "标准类别代号")
private String standardCategoryCode;
/**
* 年代号
*/
@ApiModelProperty(value = "年代号")
private String decadeCode;
/**
* 标准类型
*/
@ApiModelProperty(value = "标准类型")
private String standardType;
/**
* 企标等级分类
*/
@ApiModelProperty(value = "企标等级分类")
private String enStandardClassification;
/**
@@ -202,6 +243,7 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "原草稿计划完成日期")
private Date originDraftPlannedCompleteDate;
/**
@@ -209,6 +251,7 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "原征求意见稿计划完成日期")
private Date originSolicitationDraftPlanCompleteDate;
/**
@@ -216,14 +259,15 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "原计划报批日期")
private Date originPlanApprovalDate;
/**
* 草稿计划完成日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "草稿计划完成日期")
private Date draftPlannedCompleteDate;
/**
@@ -231,6 +275,7 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿计划完成日期")
private Date solicitationDraftPlanCompleteDate;
/**
@@ -238,82 +283,56 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "计划报批日期")
private Date planApprovalDate;
/**
* 项目状态
*/
@ApiModelProperty(value = "项目状态")
private String projectStatus;
/**
* 编制说明
*/
@ApiModelProperty(value = "编制说明")
private String compilationDescription;
/**
* 零部件名称
*/
@ApiModelProperty(value = "零部件名称")
private String componentName;
/**
* 主起草人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
/**
* 主起草人
*/
@TableField(exist = false)
@JsonProperty("mainDraftingUser_dictText")
private String mainDraftingUserDictText;
/**
* 主起草单位
*/
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
/**
* 主起草单位
*/
@TableField(exist = false)
@JsonProperty("mainDraftingUnit_dictText")
private String mainDraftingUnitDictText;
/**
* 主起草单位责任人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
/**
* 主起草单位责任人
*/
@TableField(exist = false)
@JsonProperty("mainDraftingUnitResponsiblePerson_dictText")
private String mainDraftingUnitResponsiblePersonDictText;
/**
* 新主起草单位负责人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "新主起草单位负责人")
private String newMainDraftingUnitResponsiblePerson;
/**
* 标准推进人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "标准推进人")
private String standardPromoter;
/**
* 标准推进人
*/
@TableField(exist = false)
@JsonProperty("standardPromoter_dictText")
private String standardPromoterDictText;
/**
* 草稿完成日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "草稿完成日期")
private Date draftCompletionDate;
/**
@@ -321,11 +340,13 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "提交草稿日期")
private Date draftSubmissionDate;
/**
* 是否征求意见
*/
@ApiModelProperty(value = "是否征求意见")
private String solicitationOpinionEnabled;
/**
@@ -333,6 +354,7 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿完成日期")
private Date solicitationDraftCompletionDate;
/**
@@ -340,6 +362,7 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "评审日期")
private Date reviewDate;
/**
@@ -347,6 +370,7 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "报批日期")
private Date approvalDate;
/**
@@ -354,140 +378,160 @@ public class ProcessEsInitChange implements Serializable {
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "发布日期")
private Date releaseDate;
/**
* 变更状态
*/
@ApiModelProperty(value = "变更状态")
private String changeStatus;
/**
* 立项背景、立项依据
*/
@ApiModelProperty(value = "立项背景、立项依据")
private String projectBackground;
/**
* 国际、国家及行业同类标准分析
*/
@ApiModelProperty(value = "国家及行业同类标准分析")
private String similarNaStandardsAnalysis;
/**
* 企业同类标准对比分析
*/
@ApiModelProperty(value = "企业同类标准对比分析")
private String similarEnStandardsAnalysis;
/**
* 立项标准的领先性与必要性
*/
@ApiModelProperty(value = "立项标准的领先性与必要性")
private String standardLeadingNecessity;
/**
* 立项目的及预期效果等
*/
@ApiModelProperty(value = "立项目的及预期效果等")
private String projectExpectedEffects;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 上传附件
*/
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
@ApiModelProperty(value = "上传附件")
private String uploadAttachment;
/**
* 附件
*/
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
@ApiModelProperty(value = "附件")
private String attachment;
/**
* 是否为优质标准
*/
private String qualityFlag;
/**
* 变更原因
*/
@ApiModelProperty(value = "变更原因")
private String changeReason;
/**
* 新主起草人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "新主起草人")
private String newMainDraftingUser;
/**
* 新主起草单位
*/
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "新主起草单位")
private String newMainDraftingUnit;
/**
* 部所联络人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "部所联络人")
private String contactUser;
/**
* 标准专家
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "标准专家")
private String standardExpert;
/**
* 主起草人主管级领导
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草人主管级领导")
private String mainDraftUserLeader;
/**
* 主起草人主管级领导
*/
@TableField(exist = false)
@JsonProperty("mainDraftingUserLeader_dictText")
private String mainDraftUserLeaderDictText;
/**
* 主起草人主管级领导上级领导
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草人主管级领导上级领导")
private String mainDraftUserLeaderLeader;
/**
* 主起草人主管级领导上级领导
*/
@TableField(exist = false)
@JsonProperty("mainDraftingUserLeaderLeader_dictText")
private String mainDraftUserLeaderLeaderDictText;
/**
* 标准化审批人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "标准化审批人")
private String standardizationApprovalUser;
/**
* 新主起草部门领导的领导
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "新主起草部门领导的领导")
private String newMainDraftUserLeaderLeader;
/**
* 新主起草部门领导
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "新主起草部门领导")
private String newMainDraftUserLeader;
/**
* 相关人员
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "相关人员")
private String relatedUser;
/**
* 抄送人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "抄送人")
private String copyUser;
/**
* 授权部门
*/
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "授权部门")
private String authDept;
/**
* 配合单位
*/
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "配合单位")
private String cooperationUnit;
@TableField(exist = false)
@@ -97,67 +97,7 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
LambdaQueryWrapper<ProcessEsInitChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId);
lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue());
return translateData(list(lambdaQueryWrapper));
}
/**
* 手动翻译数据
* @return
*/
private List<ProcessEsInitChange> translateData(List<ProcessEsInitChange> initChangeList) {
List<String> userIdList = new ArrayList<>();
List<String> departIdList = new ArrayList<>();
// 制作需要的Id集合
for (ProcessEsInitChange initChange : initChangeList) {
userIdList.add(initChange.getMainDraftingUser());
userIdList.add(initChange.getMainDraftingUnitResponsiblePerson());
userIdList.add(initChange.getStandardPromoter());
userIdList.add(initChange.getMainDraftUserLeader());
userIdList.add(initChange.getMainDraftUserLeaderLeader());
departIdList.add(initChange.getMainDraftingUnit());
}
// 根据Id集合获取所需数据
LambdaQueryWrapper<SysUser> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
userLambdaQueryWrapper.in(SysUser::getId, userIdList);
List<SysUser> userList = sysUserService.list(userLambdaQueryWrapper);
// 转成Map
Map<String, SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getId, sysUser -> sysUser));
LambdaQueryWrapper<SysDepart> deptLambdaQueryWrapper = new LambdaQueryWrapper<>();
deptLambdaQueryWrapper.in(SysDepart::getId, departIdList);
List<SysDepart> departList = sysDepartService.list(deptLambdaQueryWrapper);
// 转成Map
Map<String, SysDepart> departMap = departList.stream().collect(Collectors.toMap(SysDepart::getId, sysDepart -> sysDepart));
// 翻译数据
for (ProcessEsInitChange initChange : initChangeList) {
// 主起草人
if (userMap.get(initChange.getMainDraftingUser()) != null) {
initChange.setMainDraftingUserDictText(userMap.get(initChange.getMainDraftingUser()).getUsername());
}
// 起草单位负责人
if (userMap.get(initChange.getMainDraftingUnitResponsiblePerson()) != null) {
initChange.setMainDraftingUnitResponsiblePersonDictText(userMap.get(initChange.getMainDraftingUnitResponsiblePerson()).getUsername());
}
// 标准推进人
if (userMap.get(initChange.getStandardPromoter()) != null) {
initChange.setStandardPromoterDictText(userMap.get(initChange.getStandardPromoter()).getUsername());
}
// 主起草人上级领导
if (userMap.get(initChange.getMainDraftUserLeader()) != null) {
initChange.setMainDraftUserLeaderDictText(userMap.get(initChange.getMainDraftUserLeader()).getUsername());
}
// 主起草用户领导的领导
if (userMap.get(initChange.getMainDraftUserLeaderLeader()) != null) {
initChange.setMainDraftUserLeaderLeaderDictText(userMap.get(initChange.getMainDraftUserLeaderLeader()).getUsername());
}
// 主起草单位
if (departMap.get(initChange.getMainDraftingUnit()) != null) {
initChange.setMainDraftingUnitDictText(departMap.get(initChange.getMainDraftingUnit()).getDepartName());
}
}
return initChangeList;
return list(lambdaQueryWrapper);
}
@Override
@@ -0,0 +1,209 @@
package com.jero.modules.activiti.util;
import com.jero.common.api.CommonAPI;
import com.jero.common.system.vo.SysDictItemCore;
import com.jero.common.util.oConvertUtils;
import com.jero.modules.system.entity.SysDictItem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: Mzaxd
* @Date: 2023/8/18 15:50
*/
@Component
public class ExcelUtils {
@Resource
private CommonAPI commonAPI;
public static Date excelSerialDateToJavaDate(double serialDate) {
// 首先,我们定义数据库支持的最早和最晚的日期。
Calendar minDate = Calendar.getInstance();
minDate.set(1000, Calendar.JANUARY, 1); // 这是MySQL的最小日期,可以根据需要修改
Calendar maxDate = Calendar.getInstance();
maxDate.set(9999, Calendar.DECEMBER, 31); // 这是MySQL的最大日期,可以根据需要修改
Calendar baseDate = Calendar.getInstance();
baseDate.set(1900, Calendar.JANUARY, 1); // Excel起始日期是1900-01-01
baseDate.add(Calendar.DATE, (int) serialDate - 2); // 减2是因为Excel中1900年被错误地视为闰年
// 现在我们比较日期是否在有效范围内
if (baseDate.before(minDate) || baseDate.after(maxDate)) {
throw new IllegalArgumentException("日期超出了有效范围: " + baseDate.getTime());
}
return baseDate.getTime();
}
/**
* 获取HeadRow的文本内容
*
* @param is 文件输入流
* @return HeadRow的List
* @throws Exception
*/
public static List<String> getHeaderFromExcel(InputStream is) throws Exception {
List<String> headers = new ArrayList<>();
Workbook workbook = new XSSFWorkbook(is);
Sheet sheet = workbook.getSheetAt(0);
// HeadRow在index 1
for (int rowIndex = 1; rowIndex <= 1; rowIndex++) {
Row row = sheet.getRow(rowIndex);
for (Cell cell : row) {
headers.add(cell.getStringCellValue());
}
}
return headers;
}
/**
* 获取一个类的所有带@Excel注解的字段的name属性值,并按照orderNum正序排序。
*
* @param clazz 要检查的类
* @return 包含所有带@Excel注解字段的name属性值的列表
*/
public static List<String> getSortedHeadersFromClass(Class<?> clazz) {
List<Field> annotatedFields = new ArrayList<>();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(Excel.class)) {
annotatedFields.add(field);
}
}
// 根据orderNum正序排序
annotatedFields.sort(new Comparator<Field>() {
@Override
public int compare(Field o1, Field o2) {
Excel excel1 = o1.getAnnotation(Excel.class);
Excel excel2 = o2.getAnnotation(Excel.class);
return Integer.compare(Integer.parseInt(excel1.orderNum()), Integer.parseInt(excel2.orderNum()));
}
});
// 提取排序后字段的name属性值
List<String> sortedHeaders = new ArrayList<>();
for (Field field : annotatedFields) {
Excel excel = field.getAnnotation(Excel.class);
sortedHeaders.add(excel.name());
}
return sortedHeaders;
}
/**
* 检查一个对象的所有带@Excel注解的字段是否为空。
*
* @param obj 要检查的对象
* @return 如果所有带@Excel注解的字段都为空,则返回true,否则返回false。
*/
public static boolean isEmptyRow(Object obj) {
boolean isEmpty = true; // 假设行是空的
Field[] fields = obj.getClass().getDeclaredFields(); // 获取类的所有字段
for (Field field : fields) {
if (field.isAnnotationPresent(Excel.class)) { // 检查字段是否有@Excel注解
field.setAccessible(true); // 允许访问私有字段
try {
Object value = field.get(obj); // 获取字段的值
if (value != null) { // 如果字段不为空
isEmpty = false; // 行不是空的
break;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return isEmpty;
}
// 校验数据字典
public boolean validDict(String dictCode, String dictValue, String dicTable, String dicText, boolean isSingle, List<SysDictItemCore> listDict) {
if (isSingle && dictValue.contains(",")) {
return false;
}
int count = dictValue.split(",").length;
String value = this.translateDictValue(dictCode, dicText, dicTable, dictValue, listDict);
return value != null && value.split(",").length == count;
}
/**
* 翻译字典文本
*
* @param code 编码
* @param text 值
* @param listDict 字典集合
*/
public String translateDictValue(String code, String text, List<SysDictItemCore> listDict) {
StringBuilder textValue = new StringBuilder();
String tmpValue = null;
List<SysDictItemCore> listNew = listDict.stream().filter(o -> Objects.equals(o.getDictCode(), code) && Objects.equals(o.getItemText(), text.trim())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(listNew)) {
tmpValue = listNew.get(0).getItemValue();
}
if (tmpValue != null) {
if (!"".contentEquals(textValue)) {
textValue.append(",");
}
textValue.append(tmpValue);
}
return textValue.toString();
}
/**
* 翻译字典文本
*
* @param code 编码
* @param text 值
* @param table 表名
* @param key 键
* @param listDict 字典集合
*/
public String translateDictValue(String code, String text, String table, String key, List<SysDictItemCore> listDict) {
if (oConvertUtils.isEmpty(key)) {
return null;
}
StringBuilder textValue = new StringBuilder();
String[] keys = key.split(",");
for (String k : keys) {
String tmpValue = null;
if (k.trim().length() == 0) {
continue; //跳过循环
}
if (!StringUtils.isEmpty(table)) {
tmpValue = commonAPI.queryTableDictTextByKey(table, text, code, k.trim());
} else {
List<SysDictItemCore> listNew = listDict.stream().filter(o -> Objects.equals(o.getDictCode(), code) && Objects.equals(o.getItemValue(), k.trim())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(listNew)) {
tmpValue = listNew.get(0).getItemText();
}
}
if (tmpValue != null) {
if (!"".contentEquals(textValue)) {
textValue.append(",");
}
textValue.append(tmpValue);
}
}
return textValue.toString();
}
}
@@ -1,12 +1,9 @@
package com.jero.modules.laws.enterprise.entity;
import com.alibaba.fastjson.annotation.JSONField;
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 com.fasterxml.jackson.annotation.JsonProperty;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -93,6 +90,7 @@ public class EnterpriseStandardPlan implements Serializable {
@ApiModelProperty(value = "企标英文名称")
private String enStandardEnglishName;
@Dict(dictTable = "laws_tree_node", dicCode = "id", dicText = "node_name")
@ApiModelProperty(value = "企标体系")
private String enStandardSystem;
@@ -134,46 +132,32 @@ public class EnterpriseStandardPlan implements Serializable {
@ApiModelProperty(value = "项目状态")
private String projectStatus;
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
@ApiModelProperty(value = "编制说明")
private String compilationDescription;
@TableField(exist = false)
@ApiModelProperty(value = "附件文件名")
private String compilationFileName;
@ApiModelProperty(value = "零部件名称")
private String componentName;
@ApiModelProperty(value = "授权部门")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
private String authDept;
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
@TableField(exist = false)
@ApiModelProperty(value = "主起草人用户名")
@JsonProperty("mainDraftingUser_dictText")
private String mainDraftingUserDictText;
@ApiModelProperty(value = "主起草单位Id")
private String mainDraftingUnit;
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "主起草单位")
@TableField(exist = false)
@JsonProperty("mainDraftingUnit_dictText")
private String mainDraftingUnitDictText;
private String mainDraftingUnit;
@ApiModelProperty(value = "主起草单位责任人Id")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
@TableField(exist = false)
@ApiModelProperty(value = "主起草单位责任人用户名")
@JsonProperty("mainDraftingUnitResponsiblePerson_dictText")
private String mainDraftingUnitResponsiblePersonDictText;
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "标准推进人")
private String standardPromoter;
@TableField(exist = false)
@ApiModelProperty(value = "标准推进人")
@JsonProperty("standardPromoter_dictText")
private String standardPromoterDictText;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@@ -231,17 +215,15 @@ public class EnterpriseStandardPlan implements Serializable {
@ApiModelProperty(value = "备注")
private String remarks;
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
@ApiModelProperty(value = "上传附件")
private String uploadAttachment;
@TableField(exist = false)
@ApiModelProperty(value = "附件文件名")
private String attachmentFileName;
@Dict(dicCode = "yn")
@ApiModelProperty(value = "是否为优质标准")
private String qualityFlag;
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "配合单位")
private String cooperationUnit;
@@ -46,77 +46,67 @@ public class EnterpriseStandardPlanVo {
@ApiModelProperty(value = "新企标名称")
private String newEnStandardName;
@Excel(name = "授权部门", width = 15, orderNum = "1")
@Excel(name = "授权部门", width = 15, orderNum = "1", dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "授权部门")
private String authDeparts;
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
private String authDept;
@Excel(name = "配合单位", width = 15, orderNum = "1", dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "配合单位")
private String cooperationUnit;
@Excel(name = "企业标准代号", width = 15, orderNum = "1")
@ApiModelProperty(value = "企业标准代号")
private String enStandardCode;
@Excel(name = "配合单位", width = 15, orderNum = "1")
@ApiModelProperty(value = "配合单位")
private String cooperateDeparts;
@ApiModelProperty(value = "主起草人Id")
@Excel(name = "主起草人", width = 15, orderNum = "1", dictTable = "sys_user", dicCode = "id", dicText = "username")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
@Excel(name = "主起草", width = 15, orderNum = "1")
@ApiModelProperty(value = "主起草人用户名")
@JsonProperty("mainDraftingUser_dictText")
private String mainDraftingUserDictText;
@ApiModelProperty(value = "主起草单位Id")
@Excel(name = "主起草单位", width = 15, orderNum = "1")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
@Excel(name = "主起草单位", width = 15, orderNum = "1")
@ApiModelProperty(value = "主起草单位名")
@JsonProperty("mainDraftingUnit_dictText")
private String mainDraftingUnitDictText;
@Excel(name = "主起草单位责任人", width = 15, orderNum = "1", dictTable = "sys_user", dicCode = "id", dicText = "username")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
@Excel(name = "主起草单位责任", width = 15, orderNum = "1")
@ApiModelProperty(value = "主起草单位责任人用户名")
@JsonProperty("mainDraftingUnitResponsiblePerson_dictText")
private String mainDraftingUnitResponsiblePersonDictText;
@ApiModelProperty(value = "标准推进人Id")
@Excel(name = "标准推进", width = 15, orderNum = "1", dictTable = "sys_user", dicCode = "id", dicText = "username")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
@ApiModelProperty(value = "标准推进人")
private String standardPromoter;
@Excel(name = "标准推进人", width = 15, orderNum = "1")
@ApiModelProperty(value = "标准推进人用户名")
@JsonProperty("standardPromoter_dictText")
private String standardPromoterDictText;
@Excel(name = "草稿计划完成日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "草稿计划完成日期")
private Date draftPlannedCompleteDate;
@Excel(name = "征求意见稿计划完成日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿计划完成日期")
private Date solicitationDraftPlanCompleteDate;
@Excel(name = "计划报批日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "计划报批日期")
private Date planApprovalDate;
@Excel(name = "草稿完成日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "草稿完成日期")
private Date draftCompletionDate;
@Excel(name = "提交草稿日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "提交草稿日期")
private Date draftSubmissionDate;
@@ -126,26 +116,26 @@ public class EnterpriseStandardPlanVo {
private String solicitationOpinionEnabled;
@Excel(name = "征求意见稿完成日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "征求意见稿完成日期")
private Date solicitationDraftCompletionDate;
@Excel(name = "评审日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "评审日期")
private Date reviewDate;
@Excel(name = "报批日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "报批日期")
private Date approvalDate;
@Excel(name = "发布日期", width = 15, orderNum = "1", format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "发布日期")
private Date releaseDate;
@@ -87,17 +87,13 @@
p.origin_en_standard_name,
p.new_en_standard_no,
p.new_en_standard_name,
ad.authDeparts,
p.auth_dept,
p.en_standard_code,
cu.cooperateDeparts,
u1.id AS mainDraftingUser,
u1.username AS mainDraftingUserDictText,
d.id AS mainDraftingUnit,
d.depart_name AS mainDraftingUnitDictText,
u2.id AS mainDraftingUnitResponsiblePerson,
u2.username AS mainDraftingUnitResponsiblePersonDictText,
u3.id AS standardPromoter,
u3.username AS standardPromoterDictText,
p.cooperation_unit,
p.main_drafting_user,
p.main_drafting_unit,
p.main_drafting_unit_responsible_person,
p.standard_promoter,
p.draft_planned_complete_date,
p.solicitation_draft_plan_complete_date,
p.plan_approval_date,
@@ -116,20 +112,6 @@
LEFT JOIN sys_user AS u2 ON u2.id = p.main_drafting_unit_responsible_person
LEFT JOIN sys_user AS u3 ON u3.id = p.standard_promoter
LEFT JOIN sys_depart AS d ON d.id = p.main_drafting_unit
LEFT JOIN
(SELECT
ad.plan_id as id,
GROUP_CONCAT((d.depart_name) SEPARATOR '') AS authDeparts
FROM
laws_enterprise_standard_plan_auth_dept AS ad
LEFT JOIN sys_depart AS d ON d.id = ad.dept_id) AS ad ON ad.id = p.id
LEFT JOIN
(SELECT
cu.plan_id as id,
GROUP_CONCAT((d.depart_name) SEPARATOR '') AS cooperateDeparts
FROM
laws_enterprise_standard_plan_cooperate_unit AS cu
LEFT JOIN sys_depart AS d ON d.id = cu.dept_id) AS cu ON cu.id = p.id
WHERE p.del_flag = 0
<!--原企标编号判断-->
<if test="param.originEnStandardNo != null and param.originEnStandardNo != ''">
@@ -230,16 +212,11 @@
p.plan_approval_date,
p.project_status,
p.compilation_description,
o1.file_name AS compilationFileName,
p.component_name,
u1.id as mainDraftingUser,
u1.username as mainDraftingUserDictText,
d.id as mainDraftingUnit,
d.depart_name as mainDraftingUnitDictText,
u2.id as mainDraftingUnitResponsiblePerson,
u2.username as mainDraftingUnitResponsiblePersonDictText,
u3.id as promoter,
u3.username as standardPromoterDictText,
p.main_drafting_user,
p.main_drafting_unit,
p.main_drafting_unit_responsible_person,
p.standard_promoter,
p.draft_completion_date,
p.draft_submission_date,
p.solicitation_opinion_enabled,
@@ -255,30 +232,9 @@
p.project_expected_effects,
p.remarks,
p.upload_attachment,
o2.file_name AS attachmentFileName,
p.quality_flag
FROM
`laws_enterprise_standard_plan` AS p
LEFT JOIN sys_user AS u1 ON u1.id = p.main_drafting_user
LEFT JOIN sys_user AS u2 ON u2.id = p.main_drafting_unit_responsible_person
LEFT JOIN sys_user AS u3 ON u3.id = p.standard_promoter
LEFT JOIN sys_depart AS d ON d.id = p.main_drafting_unit
LEFt JOIN oss_file AS o1 ON o1.id = p.compilation_description
LEFt JOIN oss_file AS o2 ON o2.id = p.upload_attachment
LEFT JOIN
(SELECT
ad.plan_id as id,
GROUP_CONCAT((d.depart_name) SEPARATOR '') AS authDeparts
FROM
laws_enterprise_standard_plan_auth_dept AS ad
LEFT JOIN sys_depart AS d ON d.id = ad.dept_id) AS ad ON ad.id = p.id
LEFT JOIN
(SELECT
cu.plan_id as id,
GROUP_CONCAT((d.depart_name) SEPARATOR '') AS cooperateDeparts
FROM
laws_enterprise_standard_plan_cooperate_unit AS cu
LEFT JOIN sys_depart AS d ON d.id = cu.dept_id) AS cu ON cu.id = p.id
WHERE p.id = #{id}
</select>
</mapper>