diff --git a/db/update/测试阶段.sql b/db/update/测试阶段.sql index ef038a87..4f8ad290 100644 --- a/db/update/测试阶段.sql +++ b/db/update/测试阶段.sql @@ -277,11 +277,6 @@ CREATE INDEX lds_idx_standard_id ON laws_document_split (standard_id); -- 2024-09-03 修改标签管理条款在高级检索中搜索条件与导出全部数据 update laws_tag set is_show_search = 1 where table_name = 'laws_document_split'; --- 2024-09-04 修改外部标准实施日期为多选日期 -# UPDATE laws_tag SET `db_length` = 200,`field_show_type` = '4' WHERE `id` = '1695991006579912706'; -# ALTER TABLE `laws_domestic_standard` -# MODIFY COLUMN `implementation_date` varchar(200) NULL DEFAULT NULL COMMENT '实施日期'; - -- 2024-09-04 条款添加标题译文 ALTER TABLE laws_document_split ADD title_translation longtext NULL DEFAULT NULL COMMENT '标题译文'; INSERT INTO `laws_tag`(`id`, `table_name`, `db_field_name`, `db_field_en_name`, `db_field_txt`, `order_num`, `db_field_name_old`, `db_is_key`, `db_is_null`, `db_type`, `db_length`, `db_point_length`, `db_default_val`, `dict_field`, `dict_table`, `dict_text`, `field_show_type`, `field_href`, `field_length`, `field_valid_type`, `field_must_input`, `field_extend_json`, `field_default_value`, `is_show_form_create`, `is_query`, `is_show_form`, `is_show_list`, `is_read_only`, `query_mode`, `main_table`, `main_field`, `update_by`, `update_time`, `create_time`, `create_by`, `converter`, `query_def_val`, `query_dict_text`, `query_dict_field`, `query_dict_table`, `query_show_type`, `query_config_flag`, `query_valid_type`, `query_must_input`, `sort_flag`, `show_area`, `is_show_laws_list`, `is_show_search`, `del_flag`, `is_model`, `dict_id`, `home_search_context_order`, `home_search_file_order`, `dict_field_search`, `dict_table_search`, `dict_text_search`, `usable_range`, `tree_first_href`, `import_sort`) VALUES ('1701142687771348923', 'laws_document_split', 'title_translation', 'Title Translation', '标题译文', 3, 'title_translation', 0, 1, 'String', 500, NULL, NULL, NULL, NULL, NULL, '9', NULL, NULL, NULL, '0', NULL, NULL, 1, 1, 1, 1, 1, NULL, NULL, NULL, 'admin', '2023-10-30 13:36:07', '2023-09-11 15:56:37', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, '4', NULL, NULL, NULL, NULL, NULL, NULL, '1,3', NULL, 2); @@ -336,3 +331,47 @@ update process_node set node_name = '部门接口人分发' where node_name = ' UPDATE `sys_permission` SET `name` = '市场法规清单发布流程' WHERE `id` = '897f89d790485b5c0190485b5c110000'; UPDATE `sys_permission` SET `name` = '市场法规清单发布流程' WHERE `id` = '897f89d790485b5c0190485ca6e10001'; UPDATE `sys_dict_item` SET `item_text` = '市场法规清单发布流程' WHERE `id` = '1808773975469953026'; + +-- 2024-09-11 修改外部标准实施日期为多选日期 +UPDATE laws_tag SET `db_length` = 200,`field_show_type` = '4' WHERE `id` = '1695991006579912706'; +ALTER TABLE `laws_domestic_standard` + MODIFY COLUMN `implementation_date` varchar(200) NULL DEFAULT NULL COMMENT '实施日期'; + +-- 2024-09-11 外来标准 +ALTER TABLE `laws_domestic_standard` + MODIFY COLUMN `applicable_market` longtext NULL DEFAULT NULL COMMENT '适用市场'; + +-- 2024-09-12 修改主控部门字段长度 +ALTER TABLE `laws_market_standard_detail` + MODIFY COLUMN `main_dept` longtext NULL DEFAULT NULL COMMENT '主控部门'; +ALTER TABLE `laws_domestic_standard` + MODIFY COLUMN `main_dept` longtext NULL DEFAULT NULL COMMENT '主控部门'; +UPDATE `laws_tag` SET `field_show_type` = '7' WHERE `id` = '1800826537491943426'; + +-- 2024-09-12 市场法规清单发布流程添加附件 +ALTER TABLE `process_market_standard_release` + ADD COLUMN `file` varchar(2000) NULL DEFAULT NULL COMMENT '附件'; + + +-- 2024-09-13 增加辅助说明材料字段 +ALTER TABLE `process_standard_compliance_check_detail` + ADD COLUMN `unsatisfied_require_attach` varchar(500) NULL COMMENT '辅助说明材料' AFTER `assessor`; +-- 2024-09-13 增加辅助说明材料字段 +ALTER TABLE `laws_evaluation_not_met_library` + ADD COLUMN `unsatisfied_require_attach` varchar(500) NULL COMMENT '辅助说明材料'; +-- 2024-09-13 增加辅助说明材料字段 +ALTER TABLE `laws_conformity_assessment_library_detail` + ADD COLUMN `unsatisfied_require_attach` varchar(500) NULL COMMENT '辅助说明材料'; + +-- 2024-09-13 增加评估发起人 +ALTER TABLE `laws_conformity_assessment_library_detail` + ADD COLUMN `assessor_initiator` varchar(500) NULL COMMENT '评估发起人' AFTER `bind_id`; + +-- 2024年9月13日15:38:30 拆分目录表字段长度和标签库改为一致 +ALTER TABLE `sar_file_split_menu` + MODIFY COLUMN `item_name` varchar(500) NULL COMMENT '条款名称'; + +-- 2024-09-13 不符合项增加关闭人、关闭时间 +ALTER TABLE `laws_evaluation_not_met_library` + ADD COLUMN `close_user` varchar(50) NULL COMMENT '关闭人' AFTER `all_approval_user`, + ADD COLUMN `close_time` datetime NULL COMMENT '关闭时间' AFTER `close_user`; \ No newline at end of file diff --git a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java index 1d39469e..fea1f6d9 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java @@ -221,7 +221,7 @@ public class SysDictItemController { @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); queryWrapper.select("del_flag","description","dict_id","en_name","id","is_read_only","is_tag_dict","item_text", - "item_value","item_text as name","parent_id as pId","parent_id","sort_order","status"); + "item_value","item_text as name","parent_id as pId","parent_id","sort_order","status","en_base"); List listSysDictItem = sysDictItemService.list(queryWrapper); List listAll = new ArrayList<>(); // 树形查询手动封装分页 diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index 898330ea..387450c7 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -786,6 +786,7 @@ public class SysUserServiceImpl extends ServiceImpl impl lambdaUpdateWrapper.set(SysUser::getUpdateTime,user.getUpdateTime()); lambdaUpdateWrapper.set(SysUser::getUpdateBy,user.getUpdateBy()); lambdaUpdateWrapper.set(SysUser::getBirthday,user.getBirthday()); + lambdaUpdateWrapper.set(SysUser::getStatus,user.getStatus()); lambdaUpdateWrapper.set(SysUser::getEntryTime,user.getEntryTime()); lambdaUpdateWrapper.set(SysUser::getResignationTime,user.getResignationTime()); lambdaUpdateWrapper.set(SysUser::getFeishuId,user.getFeishuId()); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java index a1d91896..a89939c3 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java @@ -253,9 +253,21 @@ public class SyncIamService { // 获取角色(多个逗号分隔),针对大部分角用户默认写死一般用户 // (TODO 需要根据实际情况再沟通一遍角色怎么自动赋予),需要和角色接口那边沟通,确认具体情况 String selectedRoles = defaultRoleIds; // 一般用户的角色ID - // 存储到用户表中 - this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts); - iamUserCreateResponse.setUid(sysUser.getId()); + LambdaQueryWrapper querySysUser = new LambdaQueryWrapper<>(); + querySysUser.eq(SysUser::getUsername,sysUser.getUsername()); + querySysUser.eq(SysUser::getStatus,"2"); + SysUser oldSysUser = sysUserService.getOne(querySysUser,false); + if(!Objects.isNull(oldSysUser)){ + // 编辑用户 + sysUser.setId(oldSysUser.getId()); + sysUser.setStatus(1); + this.sysUserService.editUser(sysUser, null, selectedDeparts); + iamUserCreateResponse.setUid(oldSysUser.getId()); + }else{ + // 存储到用户表中 + this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts); + iamUserCreateResponse.setUid(sysUser.getId()); + } return iamUserCreateResponse; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/entity/ProcessMarketStandardRelease.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/entity/ProcessMarketStandardRelease.java index ad87e059..dbc3628a 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/entity/ProcessMarketStandardRelease.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/entity/ProcessMarketStandardRelease.java @@ -88,6 +88,11 @@ public class ProcessMarketStandardRelease implements Serializable { @ApiModelProperty(value = "清单说明") private String manifestDesc; + + /**附件*/ + @ApiModelProperty(value = "附件") + private String file; + /** * 标准详情列表 */ diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/controller/ProcessStandardComplianceCheckController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/controller/ProcessStandardComplianceCheckController.java index 3d1ed97c..87ae9d3e 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/controller/ProcessStandardComplianceCheckController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/controller/ProcessStandardComplianceCheckController.java @@ -6,7 +6,9 @@ import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.DictPoint; import com.jero.common.aspect.annotation.Translation; import com.jero.common.constant.enums.YesOrNoEnum; +import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.vo.DictModel; import com.jero.common.util.MessageUtils; import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.process.common.entity.ProcessDraft; @@ -14,6 +16,7 @@ import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck; import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail; +import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.DictExcelVO; import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ModelExcelVO; import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO; import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.SplitExcelVO; @@ -25,6 +28,8 @@ import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; +import org.apache.poi.ss.usermodel.Workbook; +import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.enmus.ExcelType; @@ -37,10 +42,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.*; /** * 流程-测试流程(process_demo)表控制层 @@ -60,6 +66,9 @@ public class ProcessStandardComplianceCheckController extends JeroController()); - return mv; + + List> list = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("title",new ExportParams(null, title)); + map.put(CLASS,ModelExcelVO.class); + map.put(NormalExcelConstants.DATA_LIST,new ArrayList<>()); + list.add(map); + Map map1 = new HashMap<>(); + map1.put("title",new ExportParams(null, "车型状态")); + map1.put(CLASS, DictExcelVO.class); + List dictItems = sysBaseAPI.getDictItems("model_status"); + ArrayList dictExcelVOS = new ArrayList<>(); + for (DictModel dictItem : dictItems) { + DictExcelVO dictExcelVO = new DictExcelVO(); + dictExcelVO.setModelState(dictItem.getText()); + dictExcelVOS.add(dictExcelVO); + } + map1.put(NormalExcelConstants.DATA_LIST,dictExcelVOS); + list.add(map1); + ExcelType type = ExcelType.HSSF; + Workbook workbook = ExcelExportUtil.exportExcel(list, type); + // 设置HTTP响应头 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("UTF-8"); // 这行确保响应流使用UTF-8编码 + + // 处理文件名乱码问题 + String encodedFileName = null; + try { + encodedFileName = URLEncoder.encode("车型批量导入模板", StandardCharsets.UTF_8.name()).replace("+", "%20"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName + ".xlsx"); + + // 获取响应输出流并写入Excel + try (OutputStream out = response.getOutputStream()) { + workbook.write(out); + out.flush(); + } catch (IOException e) { + log.error("导出Excel失败", e); + } finally { + try { + workbook.close(); + } catch (IOException e) { + log.error("导出Excel失败", e); + } + } } /** diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheck.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheck.java index a0909ff9..ff32d2be 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheck.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheck.java @@ -118,7 +118,7 @@ public class ProcessStandardComplianceCheck implements Serializable { * 适用市场 */ @ApiModelProperty(value = "适用市场") - @Dict(dictTable = "laws_market_standard", dicText = "manifest_name", dicCode = "id") + @Dict(dicCode = "market_state") private String applicableMarket; /** diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheckDetail.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheckDetail.java index bab30ede..56f83b9f 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheckDetail.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/ProcessStandardComplianceCheckDetail.java @@ -222,6 +222,13 @@ public class ProcessStandardComplianceCheckDetail implements Serializable, Compa @ApiModelProperty(value = "分发批次唯一Id") private String batchId; + /** + * 辅助说明材料 + */ + @ApiModelProperty(value = "辅助说明材料") + @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") + private String unsatisfiedRequireAttach; + @ApiModelProperty(value = "是否与上一版相同(字典:1:是,0:否)") @Dict(dicCode = "yn") @TableField(exist = false) @@ -233,12 +240,24 @@ public class ProcessStandardComplianceCheckDetail implements Serializable, Compa @ApiModelProperty(value = "佐证材料") @ExcelCollection(name = "", orderNum = "16") @TableField(exist = false) - private List fileList = Collections.emptyList(); + private List fileList = Collections.emptyList(); public List obtainFileIds() { return material != null ? Arrays.asList(material.split(",")) : Collections.emptyList(); } + /** + * 附件 + */ + @ApiModelProperty(value = "辅助说明材料") + @ExcelCollection(name = "", orderNum = "17") + @TableField(exist = false) + private List fileListTwo = Collections.emptyList(); + + public List obtainFileTwoIds() { + return unsatisfiedRequireAttach != null ? Arrays.asList(unsatisfiedRequireAttach.split(",")) : Collections.emptyList(); + } + @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/DictExcelVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/DictExcelVO.java new file mode 100644 index 00000000..1e6eaf38 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/DictExcelVO.java @@ -0,0 +1,17 @@ +package com.jero.modules.activiti.process.standardComplianceCheck.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.jero.common.aspect.annotation.Dict; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.util.Arrays; +import java.util.List; + +@Data +public class DictExcelVO { + + @Excel(name = "车型状态") + private String modelState; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/WithoutDistributeExcelTemplate.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/WithoutDistributeExcelTemplate.java index e02f4a2f..ded8b546 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/WithoutDistributeExcelTemplate.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/WithoutDistributeExcelTemplate.java @@ -119,14 +119,6 @@ public class WithoutDistributeExcelTemplate { @Excel(name = "备注", width = 15, orderNum = "13") private String remark; - /** - * 附件 - */ -// @ApiModelProperty(value = "佐证材料") -// @ExcelCollection(name = "", orderNum = "14") -// @TableField(exist = false) -// private List fileList = Collections.emptyList(); - /** * 佐证材料 */ @@ -135,11 +127,15 @@ public class WithoutDistributeExcelTemplate { @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") private String material; - private String sort; + /** + * 佐证材料 + */ + @ApiModelProperty(value = "辅助说明材料") + @Excel(name = "辅助说明材料", width = 15, orderNum = "14") + @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") + private String unsatisfiedRequireAttach; -// public List obtainFileIds() { -// return material != null ? Arrays.asList(material.split(",")) : Collections.emptyList(); -// } + private String sort; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCEndListener.java index 769018a9..071ca23f 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCEndListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCEndListener.java @@ -7,6 +7,7 @@ import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessS import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail; import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckDetailService; import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService; +import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibrary; import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibraryDetail; @@ -61,6 +62,9 @@ public class ProcessSCCEndListener implements ExecutionListener { @Resource private ProcessApprovalRecordService processApprovalRecordService; + @Resource + private ProcessAllService paService; + public static final String TO_BE_RECTIFIED = "1"; @Override @@ -140,10 +144,12 @@ public class ProcessSCCEndListener implements ExecutionListener { calService.updateById(lawsConformityAssessmentLibrary); } + String processInitiator = paService.getByProcessInstanceId(processInstanceId).getCreateUserId(); List lawsConformityAssessmentLibraryDetails = BeanCopyUtils.copyBeanList(list, LawsConformityAssessmentLibraryDetail.class); LawsConformityAssessmentLibrary finalLawsConformityAssessmentLibrary = lawsConformityAssessmentLibrary; lawsConformityAssessmentLibraryDetails.forEach(detail -> { detail.setBindId(finalLawsConformityAssessmentLibrary.getId()); + detail.setAssessorInitiator(processInitiator); }); calDetailService.saveBatch(lawsConformityAssessmentLibraryDetails); // 找出不符合和待验证的存入不符合项库 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index 6bebb991..64f20732 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -546,6 +546,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl listDict = commonAPI.getDictItemAll(); ProcessInfoVO handleData = this.getHandleData(taskId); ProcessSccVO businessInfoDTO = handleData.getBusinessInfoDTO(); ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo(); @@ -565,9 +566,13 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl { + String material = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getMaterial(), listDict); + if (StrUtil.isNotBlank(material)) { + item.setMaterial("佐证材料/" + material); + } + String unsatisfiedRequireAttach = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getUnsatisfiedRequireAttach(), listDict); + if (StrUtil.isNotBlank(unsatisfiedRequireAttach)) { + item.setUnsatisfiedRequireAttach("辅助说明材料/" + unsatisfiedRequireAttach); + } + }); // 导出excel workbook.write(fos); // 生成并导出zip @@ -626,7 +639,11 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl String regex = "<[^>]*>"; @@ -650,6 +667,10 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl { item.setResult(excelUtils.translateDictValue("evaluation_result", item.getResult(), listDict)); item.setMaterial(excelUtils.uploadFile(item.getMaterial(), fileMap)); + item.setUnsatisfiedRequireAttach(excelUtils.uploadFile(item.getUnsatisfiedRequireAttach(), fileMap)); }); } @@ -936,7 +958,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl 0) { errorMsgs.add(errMsgHeader.append(errMsg).toString()); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/entity/ProcessStandardInterpret.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/entity/ProcessStandardInterpret.java index d398080b..95a44ab9 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/entity/ProcessStandardInterpret.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/entity/ProcessStandardInterpret.java @@ -52,7 +52,7 @@ public class ProcessStandardInterpret extends BaseEntity { @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "实施日期") @TableField(exist = false) - private java.util.Date implementationDate; + private java.lang.String implementationDate; /**新生产车实施日*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/vo/HomeNewestStandardInterpret.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/vo/HomeNewestStandardInterpret.java index 240bba77..f43bc8c2 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/vo/HomeNewestStandardInterpret.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/vo/HomeNewestStandardInterpret.java @@ -35,9 +35,7 @@ public class HomeNewestStandardInterpret { private String standardState; // 实施日期 @ApiModelProperty(value = "实施日期") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - private Date implementationDate; + private String implementationDate; // 代替标准编号 @ApiModelProperty(value = "代替标准编号") private String substituteStandardNumber; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java b/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java index c7e615d3..fecbabff 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java @@ -596,12 +596,12 @@ public class ExcelUtils { return ""; } - public String validMaterial(String value, Map fileMap) { + public String validMaterial(String value, Map fileMap, String title) { if (StrUtil.isBlank(value)) { return ""; } if (!importUtil.fileValid(value, fileMap)) { - return "'佐证材料'无效。"; + return "'" + title + "'无效。"; } return ""; } diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/controller/LawsConformityAssessmentController.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/controller/LawsConformityAssessmentController.java index 1a79a93d..2ed1829b 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/controller/LawsConformityAssessmentController.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/controller/LawsConformityAssessmentController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; 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.assessmentLibrary.entity.LawsConformityAssessmentLibrary; import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibraryDetail; import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryService; @@ -42,6 +43,7 @@ public class LawsConformityAssessmentController { @GetMapping(value = "/page") @ApiOperationSupport(order = 1) @RequiresPermissions("lawsConformityAssessment:search") + @Translation public Result> queryPageList(LawsConformityAssessmentLibrary lawsConformityAssessmentLibrary, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibrary.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibrary.java index 83d077e1..4fc5a3e5 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibrary.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibrary.java @@ -50,7 +50,7 @@ public class LawsConformityAssessmentLibrary implements Serializable { /** * 评估日期 */ - @ApiModelProperty(value = "评估日期") + @ApiModelProperty(value = "评估完成日期") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") private Date valuationTime; diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibraryDetail.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibraryDetail.java index 99347f6a..6068cb2a 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibraryDetail.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsConformityAssessmentLibraryDetail.java @@ -95,6 +95,13 @@ public class LawsConformityAssessmentLibraryDetail implements Serializable { @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") private String assessor; + /** + * 评估发起人 + */ + @ApiModelProperty(value = "评估发起人") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String assessorInitiator; + /** * 评估结果 */ @@ -158,6 +165,13 @@ public class LawsConformityAssessmentLibraryDetail implements Serializable { @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") private String material; + /** + * 辅助说明材料 + */ + @ApiModelProperty(value = "辅助说明材料") + @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") + private String unsatisfiedRequireAttach; + /** * 关联主表Id */ diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsEvaluationNotMetLibrary.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsEvaluationNotMetLibrary.java index eec9c6f4..864a2aee 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsEvaluationNotMetLibrary.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/LawsEvaluationNotMetLibrary.java @@ -228,6 +228,18 @@ public class LawsEvaluationNotMetLibrary implements Serializable { return file != null ? Arrays.asList(file.split(",")) : Collections.emptyList(); } + /** + * 附件 + */ + @ApiModelProperty(value = "辅助说明材料") + @ExcelCollection(name = "", orderNum = "14") + @TableField(exist = false) + private List fileListTwo = Collections.emptyList(); + + public List obtainFileTwoIds() { + return unsatisfiedRequireAttach != null ? Arrays.asList(unsatisfiedRequireAttach.split(",")) : Collections.emptyList(); + } + /** * 标准ID */ @@ -254,6 +266,23 @@ public class LawsEvaluationNotMetLibrary implements Serializable { @ApiModelProperty(value = "这条数据的所有审批人员") private String allApprovalUser; + /** + * 关闭人 + */ + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + @Excel(name = "关闭人", width = 15, orderNum = "8", dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") + @ApiModelProperty(value = "关闭人") + private String closeUser; + + /** + * 关闭时间 + */ + @ApiModelProperty(value = "关闭时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @Excel(name = "关闭时间", width = 15, orderNum = "12", format = "yyyy-MM-dd") + private Date closeTime; + /** * 关闭用主键ids */ @@ -261,6 +290,13 @@ public class LawsEvaluationNotMetLibrary implements Serializable { @ApiModelProperty(value = "关闭用主键ids") private String selections; + /** + * 辅助说明材料 + */ + @ApiModelProperty(value = "辅助说明材料") + @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") + private String unsatisfiedRequireAttach; + @TableField(exist = false) private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/LawsConformityAssessmentLibraryExportVO.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/LawsConformityAssessmentLibraryExportVO.java index 03623d04..204bb394 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/LawsConformityAssessmentLibraryExportVO.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/LawsConformityAssessmentLibraryExportVO.java @@ -2,6 +2,8 @@ package com.jero.modules.assessmentLibrary.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.jero.common.aspect.annotation.Dict; +import com.jero.modules.laws.utils.ExcelExportUtilPro.MaterialFile; +import com.jero.modules.laws.utils.ExcelExportUtilPro.UnsatisfiedRequireAttachFile; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.jeecgframework.poi.excel.annotation.Excel; @@ -162,5 +164,18 @@ public class LawsConformityAssessmentLibraryExportVO implements Serializable { @ExcelCollection(name = "") private List materialFileList = Collections.emptyList(); + /** + * 佐证材料 + */ + @ApiModelProperty(value = "辅助说明材料") + private String unsatisfiedRequireAttach; + + /** + * 佐证材料 + */ + @ApiModelProperty(value = "辅助说明材料") + @ExcelCollection(name = "") + private List unsatisfiedRequireAttachList = Collections.emptyList(); + } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/MaterialFile.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/MaterialFile.java deleted file mode 100644 index 141c4118..00000000 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/entity/vo/MaterialFile.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.assessmentLibrary.entity.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.jeecgframework.poi.excel.annotation.Excel; - -@Data -public class MaterialFile { - @ApiModelProperty(value = "id") - private String id; - - @Excel(name = "佐证材料", width = 15) - @ApiModelProperty(value = "佐证材料") - private String fileName; -} diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/mapper/xml/LawsConformityAssessmentLibraryMapper.xml b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/mapper/xml/LawsConformityAssessmentLibraryMapper.xml index 4752fdf0..b6d2e247 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/mapper/xml/LawsConformityAssessmentLibraryMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/mapper/xml/LawsConformityAssessmentLibraryMapper.xml @@ -23,14 +23,12 @@ cs.standard_id, IF(cs.standard_id IS NOT NULL, d.standard_number, cs.standard_number) AS standard_number, IF(cs.standard_id IS NOT NULL, d.standard_name, cs.standard_name) AS standard_name, - lms.country as applicableMarket, + cs.applicable_market, cs.valuation_time, cs.create_time, - cs.all_approval_user, - lms.country + cs.all_approval_user from laws_conformity_assessment_library cs - left join laws_domestic_standard as d on d.id = cs.standard_id - left join laws_market_standard as lms on lms.id = cs.applicable_market) as t + left join laws_domestic_standard as d on d.id = cs.standard_id) as t ${ew.customSqlSegment} diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsConformityAssessmentLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsConformityAssessmentLibraryServiceImpl.java index 0f76d793..515ab4e5 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsConformityAssessmentLibraryServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsConformityAssessmentLibraryServiceImpl.java @@ -6,19 +6,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.CommonAPI; import com.jero.common.api.vo.ResultCommon; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; +import com.jero.common.system.vo.SysDictItemCore; import com.jero.common.util.FileUtils; import com.jero.common.util.ZipUtil; import com.jero.common.util.obs.ObsBootUtil; +import com.jero.modules.activiti.util.ExcelUtils; import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibrary; import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibraryDetail; import com.jero.modules.assessmentLibrary.entity.vo.LawsConformityAssessmentLibraryExportVO; -import com.jero.modules.assessmentLibrary.entity.vo.MaterialFile; import com.jero.modules.assessmentLibrary.mapper.LawsConformityAssessmentLibraryMapper; import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryService; import com.jero.modules.laws.enterprise.util.BeanCopyUtils; +import com.jero.modules.laws.utils.ExcelExportUtilPro.MaterialFile; +import com.jero.modules.laws.utils.ExcelExportUtilPro.UnsatisfiedRequireAttachFile; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.sys.utils.UserUtils; @@ -65,6 +69,12 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl 0", splitStr); } } if (StringUtils.isNotBlank(lawsConformityAssessmentLibrary.getSelections())) { @@ -140,6 +151,7 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl listDict = commonAPI.getDictItemAll(); String url = exportExcelTempPath.replace(EXPORT_EXCEL_TEMP, fileName); File file = new File(url); if (!file.exists()) { @@ -180,6 +192,7 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl String regex = "<[^>]*>"; @@ -196,8 +209,20 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl newRecordsExport = new ArrayList<>(recordsExport); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, LawsConformityAssessmentLibraryExportVO.class, recordsExport); + // 翻译评估结果和佐证材料字段 + newRecordsExport.parallelStream().forEach(item -> { + String material = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getMaterial(), listDict); + if (StrUtil.isNotBlank(material)) { + item.setMaterial("佐证材料/" + material); + } + String unsatisfiedRequireAttach = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getUnsatisfiedRequireAttach(), listDict); + if (StrUtil.isNotBlank(unsatisfiedRequireAttach)) { + item.setUnsatisfiedRequireAttach("辅助说明材料/" + unsatisfiedRequireAttach); + } + }); // 生成超链接 generateHyperlink("佐证材料", newRecordsExport, workbook); + generateHyperlinkTwo("辅助说明材料", newRecordsExport, workbook); // 导出excel workbook.write(fos); // 生成并导出zip @@ -278,6 +303,33 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl vos, Workbook workbook) { + Sheet sheet = workbook.getSheetAt(0); + // 设置字体颜色、下划线 + CellStyle cellStyle = workbook.createCellStyle(); + Font font = workbook.createFont(); + font.setColor(IndexedColors.BLUE.getIndex()); + font.setUnderline(Font.U_SINGLE); + cellStyle.setFont(font); + cellStyle.setWrapText(true); + int i = 1; + for (LawsConformityAssessmentLibraryExportVO vo : vos) { + if (!Objects.isNull(vo.getUnsatisfiedRequireAttach()) && !vo.getUnsatisfiedRequireAttachList().isEmpty()) { + for (UnsatisfiedRequireAttachFile materialFile : vo.getUnsatisfiedRequireAttachList()) { + Row row = sheet.getRow(i); + Cell cell = row.getCell(19); + // 构建完整的超链接路径,包括文件夹名称 + String hyperlinkPath = folderName + "/" + materialFile.getFileName(); + cell.setCellFormula("HYPERLINK(\"" + hyperlinkPath + "\", \"" + materialFile.getFileName() + "\")"); + cell.setCellStyle(cellStyle); + i += 1; + } + } else { + i += 1; + } + } + } + private void settleDocuments(String url, String folderName, List excelVos) throws IOException { // 构建完整的文件夹路径 String directoryPath = url + File.separator + folderName; @@ -313,6 +365,41 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl excelVos) throws IOException { + // 构建完整的文件夹路径 + String directoryPath = url + File.separator + folderName; + + // 检查文件夹是否存在,如果不存在则创建 + File directory = new File(directoryPath); + if (!directory.exists()) { + directory.mkdirs(); // 使用mkdirs()而不是mkdir(),因为mkdirs()会创建所有必需的父目录 + } + + for (LawsConformityAssessmentLibraryExportVO vo : excelVos) { + // 查询文件 + if (StringUtils.isNotBlank(vo.getUnsatisfiedRequireAttach())) { + List fileIdList = Arrays.asList(vo.getUnsatisfiedRequireAttach().split(",")); + List ossFileList = ossFileService.listByIds(fileIdList); + if (!ossFileList.isEmpty()) { + // 赋值 + List materialFileList = com.jero.common.util.BeanCopyUtils.copyBeanList(ossFileList, UnsatisfiedRequireAttachFile.class); + vo.setUnsatisfiedRequireAttachList(materialFileList); + // 写出文件 + for (OSSFile ossFile : ossFileList) { + InputStream inputStream = ObsBootUtil.getOssFile(ossFile.getUrl()); + // pdf加水印 + if (StringUtils.endsWithIgnoreCase(ossFile.getFileName(), ".pdf")) { + inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream); + } + // 构建文件保存路径,将文件保存在指定文件夹下 + String filePath = url + File.separator + folderName + File.separator + ossFile.getFileName(); + writeToLocal(filePath, inputStream); + } + } + } + } + } + /** * 将InputStream写入本地文件 diff --git a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsEvaluationNotMetLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsEvaluationNotMetLibraryServiceImpl.java index 9c1d49c5..9ddb47f0 100644 --- a/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsEvaluationNotMetLibraryServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/assessmentLibrary/service/impl/LawsEvaluationNotMetLibraryServiceImpl.java @@ -6,16 +6,21 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.CommonAPI; import com.jero.common.api.vo.ResultCommon; import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.SysDictItemCore; import com.jero.common.util.FileUtils; import com.jero.common.util.ZipUtil; +import com.jero.modules.activiti.util.ExcelUtils; import com.jero.modules.assessmentLibrary.entity.AssessCommon; import com.jero.modules.assessmentLibrary.entity.LawsEvaluationNotMetLibrary; import com.jero.modules.assessmentLibrary.mapper.LawsEvaluationNotMetLibraryMapper; import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryService; import com.jero.modules.assessmentLibrary.service.ILawsEvaluationNotMetLibraryService; import com.jero.modules.laws.utils.ExcelExportUtilPro; +import com.jero.modules.laws.utils.ExcelExportUtilPro.FileDetails; +import com.jero.modules.laws.utils.ExcelExportUtilPro.UnsatisfiedRequireAttachFile; import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -52,6 +57,10 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl listDict = commonAPI.getDictItemAll(); horizontalCheck(lawsEvaluationNotMet.getSelections()); - String url = exportExcelTempPath.replace(EXPORT_EXCEL_TEMP, fileName); File file = new File(url); if (!file.exists()) { @@ -121,7 +132,8 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl lawsEvaluationNotMets = this.queryPage(lawsEvaluationNotMet, 1, Integer.MAX_VALUE, req); List records = lawsEvaluationNotMets.getRecords(); - excelExportUtilPro.settleDocuments(url, "附件", records, LawsEvaluationNotMetLibrary::obtainFileIds, LawsEvaluationNotMetLibrary::setFileList); + excelExportUtilPro.settleDocuments(url, "附件", records, LawsEvaluationNotMetLibrary::obtainFileIds, LawsEvaluationNotMetLibrary::setFileList, FileDetails.class); + excelExportUtilPro.settleDocuments(url, "辅助说明材料", records, LawsEvaluationNotMetLibrary::obtainFileTwoIds, LawsEvaluationNotMetLibrary::setFileListTwo, UnsatisfiedRequireAttachFile.class); // 去除文本的

String regex = "<[^>]*>"; @@ -138,8 +150,20 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl newRecordsExport = new ArrayList<>(records); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, LawsEvaluationNotMetLibrary.class, records); + // 翻译评估结果和佐证材料字段 + newRecordsExport.parallelStream().forEach(item -> { + String material = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getFile(), listDict); + if (StrUtil.isNotBlank(material)) { + item.setFile("附件/" + material); + } + String unsatisfiedRequireAttach = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getUnsatisfiedRequireAttach(), listDict); + if (StrUtil.isNotBlank(unsatisfiedRequireAttach)) { + item.setUnsatisfiedRequireAttach("辅助说明材料/" + unsatisfiedRequireAttach); + } + }); // 生成超链接 excelExportUtilPro.generateHyperlink("附件", newRecordsExport, workbook, LawsEvaluationNotMetLibrary::getFileList, 12); + excelExportUtilPro.generateHyperlink("辅助说明材料", newRecordsExport, workbook, LawsEvaluationNotMetLibrary::getFileList, 13); // 导出excel workbook.write(fos); // 生成并导出zip diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 749f546d..f7461304 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -457,6 +457,36 @@ public class LawsCommonServiceImpl implements ILawsCommonService { * @Date: 2023/9/11 14:49 * @Description: 是否收藏标识判断 **/ + private void collectionFlag(Map stringObjectMap) { + // 获取全部id集合 + String id = String.valueOf(stringObjectMap.get("id")); + if (StrUtil.isBlank(id)) return; + // 获取登录用户 + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + // 查询标准收藏表 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsStandardCollection::getCollectorId, loginUser.getId()); + queryWrapper.eq(LawsStandardCollection::getStandardId, id); + List standardCollectionList = lawsStandardCollectionService.list(queryWrapper); + if (CollectionUtils.isEmpty(standardCollectionList)) { + stringObjectMap.put(FieldCommon.COLLECTION_FLAG, false); + return; + } + List standardIdList = standardCollectionList.stream() + .map(LawsStandardCollection::getStandardId).collect(Collectors.toList()); + if (standardIdList.contains(id)) { + stringObjectMap.put(FieldCommon.COLLECTION_FLAG, true); + } else { + stringObjectMap.put(FieldCommon.COLLECTION_FLAG, false); + } + } + + + /** + * @Author: liao + * @Date: 2023/9/11 14:49 + * @Description: 标准详情是否收藏标识 + **/ private void collectionFlag(List> records) { // 获取全部id集合 List ids = records.stream().map(kv -> @@ -1225,6 +1255,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { splitFlag(stringObjectMap); // 添加固定字段 this.setFixedUserInfo(stringObjectMap, singleStandard); + // 标准收藏标识 + collectionFlag(stringObjectMap); // 对返回的字段做处理 return stringObjectMap; } @@ -1293,10 +1325,10 @@ public class LawsCommonServiceImpl implements ILawsCommonService { List nodeCode = lawsTreeNodeList.stream() .map(LawsTreeNode::getNodeCode).collect(Collectors.toList()); LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.and(o->{ + query.and(o -> { for (int i = 0; i < nodeCode.size(); i++) { o.likeRight(LawsNodeRelation::getNodeCode, nodeCode.get(i)); - if(i != (nodeCode.size() - 1)){ + if (i != (nodeCode.size() - 1)) { o.or(); } } @@ -1689,10 +1721,16 @@ public class LawsCommonServiceImpl implements ILawsCommonService { headerList.remove(headerList.size() - 1); headerList.add(inspectContentTag); } + + List list = lawsDomesticStandardService.list(); + List standardNoList = list.stream().map(LawsDomesticStandard::getStandardNumber) + .filter(e -> !e.contains("-") & !e.contains("—")) + .collect(Collectors.toList()); // 获取错误信息 errMsgList = importUtil.validExcelData(sheet, headerList, fileMap, insertDataList, treeNodeMap, treeNodePathMap, - sysDeaprtMap, sysDepartPathMap); + sysDeaprtMap, sysDepartPathMap, + standardNoList); } return errMsgList; } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java b/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java index 1d14d956..3a5e6ae2 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java @@ -77,7 +77,8 @@ public class ImportUtil { Map> treeNodeMap, Map treeNodePathMap, Map> sysDepartMap, - Map sysDepartPathMap + Map sysDepartPathMap, + List fbStandardNoList ) { List errMsgList = new ArrayList<>(); Map keyMap = new HashMap<>(); @@ -273,7 +274,6 @@ public class ImportUtil { cellValue = this.convertDictValue(tag.getDictField(), cellValue); } } - // 组织机构 if (FieldShowTypeEnum.SINGLE_ORGANIZATION_DIALOG.getValue().equals(tag.getFieldShowType()) || FieldShowTypeEnum.MULTI_ORGANIZATION_DIALOG.getValue().equals(tag.getFieldShowType())) { @@ -389,6 +389,12 @@ public class ImportUtil { parameterMap.put(tag.getDbFieldName(), this.convertInspectContentFile(cellValue, fileMap)); } } + // 企标稽查内容文件导入 + if (FieldCommon.REFERENCE_STANDARD.equals(tag.getDbFieldName()) && + TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(tag.getIsModel())) { + // 将转好的值加入Map + parameterMap.put(FieldCommon.REFERENCE_STANDARD, this.convertReferenceStandard(cellValue, fbStandardNoList)); + } } if (errMsg.toString().contains("列") || errMsg.toString().contains("重复") || errMsg.toString().contains("已存在")) { errMsgList.add(errMsg.toString()); @@ -399,6 +405,34 @@ public class ImportUtil { return errMsgList; } + private String convertReferenceStandard(String cellValue, List fbStandardNoList) { + if (StrUtil.isBlank(cellValue)) { + return ""; + } + List standardNoList = new ArrayList<>(Arrays.asList(cellValue.split(","))); + Iterator iterator = standardNoList.iterator(); + List addStandardNoList = new ArrayList<>(); + while (iterator.hasNext()) { + String standardNo = iterator.next(); + if (standardNo.contains("-") || standardNo.contains("—")) { + continue; + } + List match = fbStandardNoList.stream().filter(s -> s.contains(standardNo)).collect(Collectors.toList()); + if (!match.isEmpty()) { + iterator.remove(); + addStandardNoList.addAll(match); + } + } + String result = String.join(",", standardNoList); + if (!addStandardNoList.isEmpty()) { + if (!result.isEmpty()) { + result += ","; + } + result += String.join(",", addStandardNoList); + } + return result; + } + // 体系校验 public boolean standardSystemValid(String cellValue, Map> treeNodeMap, Map treeNodePathMap) { String[] cellValues = cellValue.split(","); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBox.java b/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBox.java index 5ac83e32..aaec9e9b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBox.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBox.java @@ -43,7 +43,7 @@ public class ManyStandardSelectionBox { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "实施日期") - private java.util.Date implementationDate; + private java.lang.String implementationDate; @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "新认证车实施日期") diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java index d0c82e63..0c345c31 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java @@ -232,4 +232,12 @@ public interface DocumentSplitMapper extends BaseMapper { List selectClauseList(@Param("lawsDocumentSplit") LawsDocumentSplit lawsDocumentSplit); List selectClauseListScc(@Param("lawsDocumentSplit") LawsDocumentSplit lawsDocumentSplit); + + + /** + * 根据适用市场获取条款id + * @param countryList + * @return + */ + List getSplitSelectIds(List countryList); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml index 3dbcb421..285b2043 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml @@ -316,4 +316,14 @@ SET ${updateSet} WHERE ${updateCondition} + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index b6579669..77d58446 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -82,6 +82,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.web.util.HtmlUtils; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; @@ -194,6 +195,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { private static final String MENU_ID = "menu_id"; private static final String CREATE_TIME = "create_time"; private static final String SPLIT_STATUS = "split_status"; + private static final String COUNTRY = "country"; private static final int NUMBER = 500; @@ -481,25 +483,28 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { // 组织结构 List lawsTags2 = fieldListSelect.stream() .filter(j -> FieldCommon.GROUP.contains(j.getFieldShowType())).collect(Collectors.toList()); - + List sysDictList = sysDictService.list(); + List sysDictItemList = sysDictItemService.list(); + List sysDepartListAll = sysDepartService.list(); records.parallelStream().forEach(map->{ for (LawsTag lawsTag : lawsTags) { String dbFieldName = lawsTag.getDbFieldName(); if (map.containsKey(dbFieldName)){ // 字典查找 - SysDict sysDict = sysDictService.getById(lawsTag.getDictId()); - if (!Objects.isNull(sysDict)){ - setDicText(map, dbFieldName, sysDict); - } + Optional op = sysDictList.stream().filter(o->Objects.equals(o.getId(),lawsTag.getDictId())).findFirst(); + op.ifPresent(sysDict -> setDicText(map, dbFieldName, sysDict, sysDictItemList)); } } for (LawsTag lawsTag : lawsTags2) { String dbFieldName = lawsTag.getDbFieldName(); if (map.containsKey(dbFieldName)){ - List sysDepartList = - sysDepartService.listByIds(Arrays.asList(map.get(dbFieldName).toString().split(","))); - List itemTextList = sysDepartList.stream().map(SysDepart::getDepartName).collect(Collectors.toList()); - map.put(dbFieldName + DocumentSplitCommon.DIC_TEXT, String.join(",", itemTextList)); + if(!CollectionUtils.isEmpty(sysDepartListAll)){ + List sysDepartList = sysDepartListAll.stream().filter(o-> + Arrays.asList(map.get(dbFieldName).toString().split(",")).contains(o.getId())) + .collect(Collectors.toList()); + List itemTextList = sysDepartList.stream().map(SysDepart::getDepartName).collect(Collectors.toList()); + map.put(dbFieldName + DocumentSplitCommon.DIC_TEXT, String.join(",", itemTextList)); + } } } // 特殊翻译 @@ -529,12 +534,14 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { } } - private void setDicText(Map map, String dbFieldName, SysDict sysDict) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(SysDictItem::getDictId, sysDict.getId()) - .in(SysDictItem::getItemValue, Arrays.asList(map.get(dbFieldName).toString().split(","))); + private void setDicText(Map map, String dbFieldName, SysDict sysDict,List sysDictItemList) { + if(CollectionUtils.isEmpty(sysDictItemList)){ + return; + } // 字典值查询 - List list = sysDictItemService.list(queryWrapper); + List list = sysDictItemList.stream().filter(o->Objects.equals(sysDict.getId(),o.getDictId()) && + Arrays.asList(map.get(dbFieldName).toString().split(",")).contains(o.getItemValue())) + .collect(Collectors.toList()); if(!list.isEmpty()){ List itemTextList = list.stream().map(SysDictItem::getItemText).collect(Collectors.toList()); map.put(dbFieldName + DocumentSplitCommon.DIC_TEXT, String.join(",", itemTextList)); @@ -1867,6 +1874,17 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { parameter.remove(MENU_ID); } } + // 适用市场 + if (parameter.containsKey(COUNTRY) && !StringUtils.isBlank(parameter.get(COUNTRY).toString())){ + // 查询市场下的标准 + List countryList = Arrays.asList(parameter.get(COUNTRY).toString().split(",")); + List ids = documentSplitMapper.getSplitSelectIds(countryList); + if(!CollectionUtils.isEmpty(ids)){ + // in查询 + selectCondition.append(" and s.info_id" + " in('").append(String.join("','",ids)).append("')"); + } + parameter.remove(COUNTRY); + } } /** diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml index a6934ea6..765cc432 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml @@ -58,7 +58,6 @@ sort_index DESC, standard_type_order ASC, standard_state_order ASC, - implementation_date DESC, create_time DESC diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsDomesticStandard.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsDomesticStandard.java index ce435033..eba29424 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsDomesticStandard.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsDomesticStandard.java @@ -98,7 +98,7 @@ public class LawsDomesticStandard implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "实施日期") - private java.util.Date implementationDate; + private java.lang.String implementationDate; /**在产车实施日期*/ @Excel(name = "新认证车实施日期", width = 15) @ApiModelProperty(value = "新认证车实施日期") diff --git a/laws-modules/src/main/java/com/jero/modules/laws/utils/ExcelExportUtilPro.java b/laws-modules/src/main/java/com/jero/modules/laws/utils/ExcelExportUtilPro.java index a09f9021..8a8887a4 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/utils/ExcelExportUtilPro.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/utils/ExcelExportUtilPro.java @@ -39,8 +39,30 @@ public class ExcelExportUtilPro { @ApiModelProperty(value = "id") private String id; - @Excel(name = "附件/佐证材料", width = 15) - @ApiModelProperty(value = "附件/佐证材料") + @Excel(name = "附件", width = 15) + @ApiModelProperty(value = "附件") + private String fileName; + } + + @Setter + @Getter + public static class MaterialFile { + @ApiModelProperty(value = "id") + private String id; + + @Excel(name = "佐证材料", width = 15) + @ApiModelProperty(value = "佐证材料") + private String fileName; + } + + @Setter + @Getter + public static class UnsatisfiedRequireAttachFile { + @ApiModelProperty(value = "id") + private String id; + + @Excel(name = "辅助说明材料", width = 15) + @ApiModelProperty(value = "辅助说明材料") private String fileName; } @@ -78,9 +100,10 @@ public class ExcelExportUtilPro { return cellStyle; } - public void settleDocuments(String url, String folderName, List items, - Function> fileIdProvider, - BiConsumer> fileDetailsConsumer) throws IOException { + public void settleDocuments(String url, String folderName, List items, + Function> fileIdProvider, + BiConsumer> fileDetailsConsumer, + Class fileDetailsClass) throws IOException { // 构建完整的文件夹路径 String directoryPath = url + File.separator + folderName; @@ -95,7 +118,8 @@ public class ExcelExportUtilPro { if (fileIdList != null && !fileIdList.isEmpty()) { List ossFileList = ossFileService.listByIds(fileIdList); if (!ossFileList.isEmpty()) { - List fileDetailsList = BeanCopyUtils.copyBeanList(ossFileList, FileDetails.class); + // 将OSSFile列表复制为泛型R的列表 + List fileDetailsList = BeanCopyUtils.copyBeanList(ossFileList, fileDetailsClass); fileDetailsConsumer.accept(item, fileDetailsList); for (OSSFile ossFile : ossFileList) { InputStream inputStream = ObsBootUtil.getOssFile(ossFile.getUrl()); @@ -110,6 +134,7 @@ public class ExcelExportUtilPro { } } + public void writeToLocal(String filePath, InputStream input) throws IOException { int index; byte[] bytes = new byte[1024]; diff --git a/laws-modules/src/main/java/com/jero/modules/split/controller/FileSplitItemsEOController.java b/laws-modules/src/main/java/com/jero/modules/split/controller/FileSplitItemsEOController.java index ad0aa7a5..0cc9758f 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/controller/FileSplitItemsEOController.java +++ b/laws-modules/src/main/java/com/jero/modules/split/controller/FileSplitItemsEOController.java @@ -92,9 +92,8 @@ public class FileSplitItemsEOController extends JeroController importSplitResult(@ApiParam("标准拆分条id") String splitFileId, - @ApiParam("国际化") String cut, SarFileSplitInfoEO splitInfoEO) throws IOException { - cut = CutUtils.getCurrentCut(); + String cut = CutUtils.getCurrentCut(); return fileSplitItemsEOService.importSplitResult(splitFileId, cut,splitInfoEO); } diff --git a/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java b/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java index 7b9bd629..cbe999fa 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java +++ b/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.jero.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -156,4 +157,10 @@ public class SarFileSplitInfoEO implements Serializable { @ApiModelProperty(value = "标准类别") @TableField(exist = false) private String standardClass; + /** + * 识别父子关系 + */ + @ApiModelProperty(value = "识别父子关系") + @TableField(exist = false) + private String childParentLink; } diff --git a/laws-modules/src/main/java/com/jero/modules/split/mapper/xml/SarFileSplitMenuEOMapper.xml b/laws-modules/src/main/java/com/jero/modules/split/mapper/xml/SarFileSplitMenuEOMapper.xml index 8d447559..85827283 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/mapper/xml/SarFileSplitMenuEOMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/split/mapper/xml/SarFileSplitMenuEOMapper.xml @@ -375,8 +375,11 @@ select * from SAR_FILE_SPLIT_MENU where parent_id = #{parentId} AND valid_flag = '0' - and display_seq > #{displaySeq} - order by display_seq desc + + and display_seq > #{displaySeq} + + + order by display_seq