From 6298c37440ebc70faf2c491dd2a8746f7f72b7e4 Mon Sep 17 00:00:00 2001 From: cuijiaming <1410452759@qq.com> Date: Thu, 16 Mar 2023 16:47:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=BA=93-=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E6=B8=85=E5=8D=95-=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/ISysDictItemService.java | 10 + .../service/impl/SysDictItemServiceImpl.java | 48 + .../mapper/BussDocumentLibraryEOMapper.java | 2 + .../xml/BussDocumentLibraryEOMapper.xml | 5 + .../IBussDocumentLibraryEOService.java | 7 + .../BussDocumentLibraryEOServiceImpl.java | 6 + ...ectCertificationInventoryEOController.java | 29 + .../ProjectCertificationInventoryEO.java | 97 +- .../ProjectCertificationInventoryEOEn.java | 207 ++++ ...rojectCertificationInventoryEOService.java | 25 + ...ctCertificationInventoryEOServiceImpl.java | 886 +++++++++++------- 11 files changed, 960 insertions(+), 362 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEOEn.java diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java index 6669f5ac4..30e9d7eed 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java @@ -36,4 +36,14 @@ public interface ISysDictItemService extends IService { void setEditOrderNum(SysDictItem sysDictItem); String disposeShowDictItemValue(List sysDictItems,String fieldValues,String cut,String dicCode); + + /** + * 导入时将item_text处置为item_value存入 + * @param sysDictItems + * @param fieldTexts + * @param cut + * @param dicCode + * @return + */ + String disposeShowDictItemText(List sysDictItems,String fieldTexts,String cut,String dicCode); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java index 8214cbcf4..dc1122fe6 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java @@ -183,4 +183,52 @@ public class SysDictItemServiceImpl extends ServiceImpl sysDictItems, String fieldTexts, String cut, String dicCode) { + String result = ""; + List sysDictItemList = sysDictItems.stream().filter(e -> { + boolean flag = false; + if(StringUtils.equals(e.getDictCode(),dicCode)){ + flag = true; + } + return flag; + }).distinct().collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(sysDictItemList)){ + if(StringUtils.equals(cut, CutEnum.CN.getValue())){ + result = sysDictItemList.stream().filter(e -> { + boolean flag = false; + List fieldTextStrList = Arrays.asList(fieldTexts.split(",")); + for (String fieldTextStr : fieldTextStrList) { + if(StringUtils.equals(fieldTextStr,e.getItemText())){ + flag = true; + break; + } + } + return flag; + }).map(SysDictItem::getItemValue).collect(Collectors.joining(",")); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + result = sysDictItemList.stream().filter(e -> { + boolean flag = false; + List fieldTextStrList = Arrays.asList(fieldTexts.split(",")); + for (String fieldTextStr : fieldTextStrList) { + if(StringUtils.equals(fieldTextStr,e.getItemText())){ + flag = true; + break; + } + } + return flag; + }).map(SysDictItem::getItemValue).collect(Collectors.joining(",")); + } + } + return result; + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java index 77d3a42c7..acc7d152f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java @@ -99,5 +99,7 @@ public interface BussDocumentLibraryEOMapper extends BaseMapper> queryListByIds(@Param("ids") String ids); + BussDocumentLibraryEO getBySerialNumber(@Param("serialNumber") String serialNumber); + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml index 806a6daaa..90d9be497 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml @@ -115,4 +115,9 @@ #{item} + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java index 9011efffc..562e2337b 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java @@ -225,4 +225,11 @@ public interface IBussDocumentLibraryEOService extends IService queryConditionVOList); int updateES(); + + /** + * 根据serialNumber获取BussDumentLibrar对象 + * @param serialNumber + * @return + */ + BussDocumentLibraryEO getBySerialNumber(String serialNumber); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index 58ce204a7..bec609f0b 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -6632,4 +6632,10 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl importData(@RequestParam(value = "file", required = false) MultipartFile file, + ProjectCertificationInventoryEO projectCertificationInventoryEO) { + projectCertificationInventoryEOService.importData(file,projectCertificationInventoryEO); + return Result.OK("导入成功"); + } + /** + * 导出数据 + * @param request + * @param projectCertificationInventoryEO + */ + @ApiOperation(value="项目库-认证清单表-导出数据", notes="项目库-认证清单表-导出数据") + @RequestMapping(value = "/exportData",method = RequestMethod.GET) +// @RequiresPermissions("projectLawsInventory:exportData") + public void exportData(HttpServletResponse response, + HttpServletRequest request, + ProjectCertificationInventoryEO projectCertificationInventoryEO) { + projectCertificationInventoryEOService.exportData(response,request, projectCertificationInventoryEO); + } + @AutoLog(value = "项目库-认证清单表-调取添加") @ApiOperation(value="项目库-认证清单表-调取添加", notes="项目库-认证清单表-调取添加") @PostMapping(value = "/callAdd") diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java index 67bcd878b..74d413d05 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java @@ -3,6 +3,8 @@ package com.jero.modules.project.entity; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.util.Date; + import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -36,110 +38,110 @@ public class ProjectCertificationInventoryEO implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") - private java.lang.String id; + private String id; /**创建人*/ @ApiModelProperty(value = "创建人") - private java.lang.String createBy; + private String createBy; /**创建日期*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "创建日期") - private java.util.Date createTime; + private Date createTime; /**更新人*/ @ApiModelProperty(value = "更新人") - private java.lang.String updateBy; + private String updateBy; /**更新日期*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新日期") - private java.util.Date updateTime; + private Date updateTime; /**所属部门*/ @ApiModelProperty(value = "所属部门") - private java.lang.String sysOrgCode; + private String sysOrgCode; /**类别*/ @Excel(name = "类别", width = 15) @ApiModelProperty(value = "类别") - private java.lang.String category; + private String category; /**检验项目*/ @Excel(name = "检验项目", width = 15) @ApiModelProperty(value = "检验项目") - private java.lang.String inspectionItem; + private String inspectionItem; /**配置项*/ @Excel(name = "配置项", width = 15) @ApiModelProperty(value = "配置项") @Dict(dicCode = "ren4_zheng4_qing1_dan1_-_pei4_zhi4_xiang4") - private java.lang.String configItem; + private String configItem; /**WVTA ID*/ @Excel(name = "WVTA ID", width = 15) @ApiModelProperty(value = "WVTA ID") - private java.lang.String wvtaId; + private String wvtaId; /**标准编号*/ - @Excel(name = "标准编号", width = 15) + @Excel(name = "*标准编号", width = 15) @ApiModelProperty(value = "标准编号") - private java.lang.String serialNumber; + private String serialNumber; /**责任领域*/ - @Excel(name = "责任领域", width = 15) @ApiModelProperty(value = "责任领域") - private java.lang.String dutyTerritory; + private String dutyTerritory; /**责任领域名称**/ + @Excel(name = "*责任领域", width = 15) @TableField(exist = false) private String dutyTerritoryName; /**责任领域名称-英文**/ @TableField(exist = false) private String dutyTerritoryNameEn; - /**交付物*/ - @Excel(name = "交付物", width = 15) - @ApiModelProperty(value = "交付物") - private java.lang.String deliverable; - - /**文档库id*/ - @Excel(name = "文档库id", width = 15) - @ApiModelProperty(value = "文档库id") - private java.lang.String bussDocumentLibraryId; - - /**工程接口人*/ - @Excel(name = "工程接口人", width = 15) + /**工程接口人*/ @ApiModelProperty(value = "工程接口人") - private java.lang.String sdt; - /**工程接口人名称**/ - @TableField(exist = false) + private String sdt; + /**工程接口人名称**/ + @Excel(name = "工程接口人", width = 15) + @TableField(exist = false) private String sdtName; - /**责任人*/ - @Excel(name = "责任人", width = 15) + /**责任人*/ @ApiModelProperty(value = "责任人") - private java.lang.String dutyPerson; + private String dutyPerson; /**责任人名称**/ + @Excel(name = "责任人", width = 15) @TableField(exist = false) private String dutyPersonName; - /**交付物类型*/ - @Excel(name = "交付物类型", width = 15) + /**交付物类型*/ @ApiModelProperty(value = "交付物类型") - private java.lang.String deliverableType; + private String deliverableType; // 交付物类型名称 + @Excel(name = "交付物类型", width = 15) @TableField(exist = false) private String deliverableTypeName; // 交付物类型名称-英文 @TableField(exist = false) private String deliverableTypeNameEn; + /**交付物*/ +// @Excel(name = "交付物", width = 15) + @ApiModelProperty(value = "交付物") + private String deliverable; + + /**文档库id*/ +// @Excel(name = "文档库id", width = 15) + @ApiModelProperty(value = "文档库id") + private String bussDocumentLibraryId; + /**交付物模板*/ - @Excel(name = "交付物模板", width = 15) +// @Excel(name = "交付物模板", width = 15) @ApiModelProperty(value = "交付物模板") - private java.lang.String deliverableTemplate; + private String deliverableTemplate; /**交付物模板名称**/ @TableField(exist = false) private String deliverableTemplateName; @@ -147,48 +149,48 @@ public class ProjectCertificationInventoryEO implements Serializable { /**交付结果*/ @Excel(name = "交付结果", width = 15) @ApiModelProperty(value = "交付结果") - private java.lang.String deliveryResult; + private String deliveryResult; /**截止日期*/ @Excel(name = "截止日期", width = 15, format = "yyyy-MM-dd") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "截止日期") - private java.util.Date endTime; + private Date endTime; /**流程状态*/ - @Excel(name = "流程状态", width = 15) @ApiModelProperty(value = "流程状态") - private java.lang.String flowStatus; + private String flowStatus; // 流程状态展示名称 + @Excel(name = "流程状态", width = 15) @TableField(exist = false) private String flowStatusName; /**报告编号*/ @Excel(name = "报告编号", width = 15) @ApiModelProperty(value = "报告编号") - private java.lang.String reportNumber; + private String reportNumber; /**产品型号*/ @Excel(name = "产品型号", width = 15) @ApiModelProperty(value = "产品型号") - private java.lang.String productModel; + private String productModel; /**生产企业名称*/ @Excel(name = "生产企业名称", width = 15) @ApiModelProperty(value = "生产企业名称") - private java.lang.String productionEnterpriseName; + private String productionEnterpriseName; /**认证进度*/ @Excel(name = "认证进度", width = 15) @ApiModelProperty(value = "认证进度") - private java.lang.String certificationProgress; + private String certificationProgress; /**认证进度展示名称**/ @TableField(exist = false) private String certificationProgress_dictText; - @Excel(name = "认证进度备注", width = 15) +// @Excel(name = "认证进度备注", width = 15) @ApiModelProperty(value = "认证进度备注") private String certificationProgressRemark; @@ -208,4 +210,7 @@ public class ProjectCertificationInventoryEO implements Serializable { /**值类型,对应SysCategoryValueTypeEnum中value**/ @TableField(exist = false) private String valueType; + + @TableField(exist = false) + private String excelName; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEOEn.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEOEn.java new file mode 100644 index 000000000..d9f5e41fd --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEOEn.java @@ -0,0 +1,207 @@ +package com.jero.modules.project.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + + +/** + * @Description: 项目库-认证清单表 + * @Author: jero-boot + * @Date: 2023-03-03 + * @Version: V1.0 + */ +@Data +@TableName("project_certification_inventory") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="project_certification_inventory对象", description="项目库-认证清单表") +public class ProjectCertificationInventoryEOEn implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + + /**类别*/ + @Excel(name = "Category", width = 15) + @ApiModelProperty(value = "类别") + private java.lang.String category; + + /**检验项目*/ + @Excel(name = "Inspection Items", width = 15) + @ApiModelProperty(value = "检验项目") + private java.lang.String inspectionItem; + + /**配置项*/ + @Excel(name = "Configuration Item", width = 15) + @ApiModelProperty(value = "配置项") + @Dict(dicCode = "ren4_zheng4_qing1_dan1_-_pei4_zhi4_xiang4") + private java.lang.String configItem; + + /**WVTA ID*/ + @Excel(name = "WVTA ID", width = 15) + @ApiModelProperty(value = "WVTA ID") + private java.lang.String wvtaId; + + /**标准编号*/ + @Excel(name = "*Standard No", width = 15) + @ApiModelProperty(value = "标准编号") + private java.lang.String serialNumber; + + /**责任领域*/ + @ApiModelProperty(value = "责任领域") + private java.lang.String dutyTerritory; + /**责任领域名称**/ + @Excel(name = "*Responsible Field", width = 15) + @TableField(exist = false) + private String dutyTerritoryName; + /**责任领域名称-英文**/ + @TableField(exist = false) + private String dutyTerritoryNameEn; + + /**工程接口人*/ + @ApiModelProperty(value = "工程接口人") + private java.lang.String sdt; + /**工程接口人名称**/ + @Excel(name = "Eng. Interface", width = 15) + @TableField(exist = false) + private String sdtName; + + /**责任人*/ + @ApiModelProperty(value = "责任人") + private java.lang.String dutyPerson; + /**责任人名称**/ + @Excel(name = "Assignee", width = 15) + @TableField(exist = false) + private String dutyPersonName; + + /**交付物类型*/ + @ApiModelProperty(value = "交付物类型") + private java.lang.String deliverableType; + // 交付物类型名称 + @Excel(name = "Deliverable Type", width = 15) + @TableField(exist = false) + private String deliverableTypeName; + // 交付物类型名称-英文 + @TableField(exist = false) + private String deliverableTypeNameEn; + + /**交付物*/ +// @Excel(name = "交付物", width = 15) + @ApiModelProperty(value = "交付物") + private java.lang.String deliverable; + + /**文档库id*/ +// @Excel(name = "文档库id", width = 15) + @ApiModelProperty(value = "文档库id") + private java.lang.String bussDocumentLibraryId; + + /**交付物模板*/ +// @Excel(name = "交付物模板", width = 15) + @ApiModelProperty(value = "交付物模板") + private java.lang.String deliverableTemplate; + /**交付物模板名称**/ + @TableField(exist = false) + private String deliverableTemplateName; + + /**交付结果*/ + @Excel(name = "Deliverables Result", width = 15) + @ApiModelProperty(value = "交付结果") + private java.lang.String deliveryResult; + + /**截止日期*/ + @Excel(name = "Due Date", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "截止日期") + private java.util.Date endTime; + + /**流程状态*/ + @ApiModelProperty(value = "流程状态") + private java.lang.String flowStatus; + // 流程状态展示名称 + @Excel(name = "Process Status", width = 15) + @TableField(exist = false) + private String flowStatusName; + + /**报告编号*/ + @Excel(name = "Report No", width = 15) + @ApiModelProperty(value = "报告编号") + private java.lang.String reportNumber; + + /**产品型号*/ + @Excel(name = "Product Model", width = 15) + @ApiModelProperty(value = "产品型号") + private java.lang.String productModel; + + /**生产企业名称*/ + @Excel(name = "Name Of Manufacturer", width = 15) + @ApiModelProperty(value = "生产企业名称") + private java.lang.String productionEnterpriseName; + + /**认证进度*/ + @Excel(name = "Homologation Progress", width = 15) + @ApiModelProperty(value = "认证进度") + private java.lang.String certificationProgress; + + /**认证进度展示名称**/ + @TableField(exist = false) + private String certificationProgress_dictText; + + // @Excel(name = "认证进度备注", width = 15) + @ApiModelProperty(value = "认证进度备注") + private String certificationProgressRemark; + + /**项目库id*/ + @ApiModelProperty(value = "项目库id") + private String projectLibraryId; + + @TableField(exist = false) + private String cut; + + @TableField(exist = false) + private String ids; + + @TableField(exist = false) + private String roleCode; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java index 0017c61ac..c24e7c499 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java @@ -11,6 +11,7 @@ import com.jero.modules.system.entity.SysCategory; import com.jero.modules.system.entity.SysRole; import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -93,6 +94,15 @@ public interface IProjectCertificationInventoryEOService extends IService datas, String cut); + /** + * 导入时的数据处理 + * @param datas + * @param cut + */ + void importDisposeData(List datas, String cut); + + String getTreeNameImport(String cut, List categoryList, List technologyTerritoryList); + String getTreeName(String cut, List categoryList, List technologyTerritoryList); /** @@ -185,6 +195,21 @@ public interface IProjectCertificationInventoryEOService extends IService callAdd(JSONObject json); + /** + * 导入数据 + * @param file + * @param projectCertificationInventoryEO + */ + void importData(MultipartFile file, ProjectCertificationInventoryEO projectCertificationInventoryEO); + + /** + * projectCertificationInventoryEO + * @param response + * @param request + * @param projectCertificationInventoryEO + */ + void exportData(HttpServletResponse response, HttpServletRequest request, ProjectCertificationInventoryEO projectCertificationInventoryEO); + /** * 引用交付物 * @param json diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java index a07261c80..62f93c1a3 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java @@ -1,5 +1,7 @@ package com.jero.modules.project.service.impl; +import cn.hutool.core.util.ZipUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.utils.IOUtils; @@ -10,15 +12,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; +import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.DateUtils; import com.jero.modules.authDummy.entity.AuthDummyInventoryInfoEO; import com.jero.modules.authDummy.service.IAuthDummyInventoryBaseEOService; import com.jero.modules.authDummy.service.IAuthDummyInventoryInfoEOService; +import com.jero.modules.document.controller.BussDocumentLibraryEOController; +import com.jero.modules.document.entity.BussDocumentLibraryEO; +import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; import com.jero.modules.feishu.enums.TemplateInfoEnum2; import com.jero.modules.feishu.service.IFeishuService; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.project.entity.*; import com.jero.modules.project.entity.ProjectCertificationInventoryEO; import com.jero.modules.project.entity.ProjectCertificationInventoryLogEO; import com.jero.modules.project.entity.ProjectLibraryBase; @@ -26,6 +33,7 @@ import com.jero.modules.project.entity.ProjectRelatedPersonnel; import com.jero.modules.project.enums.*; import com.jero.modules.project.service.IProjectCertificationInventoryLogEOService; import com.jero.modules.project.service.IProjectRelatedPersonnelService; +import com.jero.modules.split.common.FileUnZip; import com.jero.modules.system.enums.ProjectRoleEnum; import com.jero.modules.project.mapper.ProjectCertificationInventoryEOMapper; import com.jero.modules.project.service.IProjectCertificationInventoryEOService; @@ -35,6 +43,7 @@ import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysRole; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.enums.SysCategoryValueTypeEnum; +import com.jero.modules.system.mapper.SysCategoryMapper; import com.jero.modules.system.mapper.SysRoleMapper; import com.jero.modules.system.service.ISysCategoryService; import com.jero.modules.system.service.ISysDictItemService; @@ -46,16 +55,17 @@ import com.jero.modules.todoCenter.enums.TodoCenterStatusEnum; import com.jero.modules.todoCenter.service.IProcessInfoDetailEOService; import com.jero.modules.todoCenter.service.IProcessInfoEOService; import com.jero.modules.wkflow.enums.FlowTypeEnum; -import org.apache.poi.hssf.usermodel.HSSFCellStyle; -import org.apache.poi.hssf.usermodel.HSSFRichTextString; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.HorizontalAlignment; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.VerticalAlignment; +import lombok.SneakyThrows; +import org.apache.commons.io.FileUtils; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; +import org.aspectj.util.FileUtil; +import org.jeecgframework.poi.excel.ExcelExportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; import org.springframework.beans.BeanUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -63,9 +73,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -73,6 +83,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -114,13 +125,18 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl editBeforeList = new ArrayList<>(); - ProjectCertificationInventoryEO editBefore = this.queryById(projectCertificationInventoryEO.getId()); - editBeforeList.add(editBefore); - this.disposeData(editBeforeList,CutEnum.CN.getValue()); - List editAfterList = new ArrayList<>(); - editAfterList.add(projectCertificationInventoryEO); - this.disposeData(editAfterList,CutEnum.CN.getValue()); - this.setEditProjectCertificationInventoryLogEO(editBeforeList,editAfterList); - - Date now = new Date(); + Date now = new Date(); projectCertificationInventoryEO.setUpdateTime(now); saveOrUpdate(projectCertificationInventoryEO); } - /** - * 对比编辑前后 认证清单信息,设置修改历史日志 - * @param editBeforeList 编辑前 - * @param editAfterList 编辑后 - */ - public void setEditProjectCertificationInventoryLogEO(List editBeforeList,List editAfterList){ - if(CollectionUtils.isNotEmpty(editBeforeList) && CollectionUtils.isNotEmpty(editAfterList)){ - LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - List projectCertificationInventoryLogEOList = new ArrayList<>(); - - for (ProjectCertificationInventoryEO editAfter : editAfterList) { - ProjectCertificationInventoryEO editBeforeById = editBeforeList.stream().filter(editBefore -> { - boolean flag = false; - if (StringUtils.equals(editBefore.getId(), editAfter.getId())) { - flag = true; - } - return flag; - }).collect(Collectors.toList()).get(0); - - if(!ObjectUtils.isEmpty(editBeforeById)){ - StringBuilder contentCnSb = new StringBuilder(); - StringBuilder contentEnSb = new StringBuilder(); - - contentCnSb.append("\"").append(currentUser.getUsername()).append("\"").append("将"); - contentEnSb.append("\"").append(currentUser.getUsername()).append("\"").append(" changes "); - - boolean saveFlag = false; - - if(!StringUtils.equals(editBeforeById.getSerialNumber(),editAfter.getSerialNumber())){ - contentCnSb.append("\"").append("法规编号").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getSerialNumber()) ? editBeforeById.getSerialNumber() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getSerialNumber()) ? editAfter.getSerialNumber() : "空").append(","); - - contentEnSb.append("\"").append("Regulation No").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getSerialNumber()) ? editBeforeById.getSerialNumber() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getSerialNumber()) ? editAfter.getSerialNumber() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getWvtaId(),editAfter.getWvtaId())){ - contentCnSb.append("\"").append("WVTA ID").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getWvtaId()) ? editBeforeById.getWvtaId() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getWvtaId()) ? editAfter.getWvtaId() : "空").append(","); - - contentEnSb.append("\"").append("WVTA ID").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getWvtaId()) ? editBeforeById.getWvtaId() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getWvtaId()) ? editAfter.getWvtaId() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getCategory(),editAfter.getCategory())){ - contentCnSb.append("\"").append("类别").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getCategory()) ? editBeforeById.getCategory() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getCategory()) ? editAfter.getCategory() : "空").append(","); - - contentEnSb.append("\"").append("Category").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getCategory()) ? editBeforeById.getCategory() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getCategory()) ? editAfter.getCategory() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getInspectionItem(),editAfter.getInspectionItem())){ - contentCnSb.append("\"").append("检验项目").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getInspectionItem()) ? editBeforeById.getInspectionItem() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getInspectionItem()) ? editAfter.getInspectionItem() : "空").append(","); - - contentEnSb.append("\"").append("Inspection Items").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getInspectionItem()) ? editBeforeById.getInspectionItem() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getInspectionItem()) ? editAfter.getInspectionItem() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getConfigItem(),editAfter.getConfigItem())){ - contentCnSb.append("\"").append("配置项").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getConfigItem()) ? editBeforeById.getConfigItem() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getConfigItem()) ? editAfter.getConfigItem() : "空").append(","); - - contentEnSb.append("\"").append("Configuration Item").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getConfigItem()) ? editBeforeById.getConfigItem() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getConfigItem()) ? editAfter.getConfigItem() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getDutyTerritory(),editAfter.getDutyTerritory())){ - contentCnSb.append("\"").append("责任领域").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getDutyTerritoryName()) ? editBeforeById.getDutyTerritoryName() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getDutyTerritoryName()) ? editAfter.getDutyTerritoryName() : "空").append(","); - - contentEnSb.append("\"").append("Responsible Field").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getDutyTerritoryNameEn()) ? editBeforeById.getDutyTerritoryNameEn() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getDutyTerritoryNameEn()) ? editAfter.getDutyTerritoryNameEn() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getDeliverableType(),editAfter.getDeliverableType())){ - contentCnSb.append("\"").append("交付物类型").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getDeliverableTypeName()) ? editBeforeById.getDeliverableTypeName() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getDeliverableTypeName()) ? editAfter.getDeliverableTypeName() : "空").append(","); - - contentEnSb.append("\"").append("Deliverable Type").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getDeliverableTypeNameEn()) ? editBeforeById.getDeliverableTypeNameEn() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getDeliverableTypeNameEn()) ? editAfter.getDeliverableTypeNameEn() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getDeliverableTemplateName(),editAfter.getDeliverableTemplateName())){ - contentCnSb.append("\"").append("交付物模板").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getDeliverableTemplateName()) ? editBeforeById.getDeliverableTemplateName() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getDeliverableTemplateName()) ? editAfter.getDeliverableTemplateName() : "空").append(","); - - contentEnSb.append("\"").append("Deliverable Template").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getDeliverableTemplateName()) ? editBeforeById.getDeliverableTemplateName() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getDeliverableTemplateName()) ? editAfter.getDeliverableTemplateName() : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getSdtName(),editAfter.getSdtName())){ - contentCnSb.append("\"").append("工程接口人").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeById.getSdtName()) ? editBeforeById.getSdtName() : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfter.getSdtName()) ? editAfter.getSdtName() : "空").append(","); - - contentEnSb.append("\"").append("Eng. Interface").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeById.getSdtName()) ? editBeforeById.getSdtName() : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfter.getSdtName()) ? editAfter.getSdtName() : "null").append(","); - saveFlag = true; - } - String editBeforeEndTime = ""; - if(editBeforeById.getEndTime() != null){ - editBeforeEndTime = DateUtils.formatDate(editBeforeById.getEndTime()); - } - String editAfterEndTime = ""; - if(editAfter.getEndTime() != null){ - editAfterEndTime = DateUtils.formatDate(editAfter.getEndTime()); - } - - if(!StringUtils.equals(editBeforeEndTime,editAfterEndTime)){ - contentCnSb.append("\"").append("截止时间").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(StringUtils.isNotEmpty(editBeforeEndTime) ? editBeforeEndTime : "空"); - contentCnSb.append(" 修改为 "); - contentCnSb.append(StringUtils.isNotEmpty(editAfterEndTime) ? editAfterEndTime : "空").append(","); - - contentEnSb.append("\"").append("Due Date").append("\""); - contentEnSb.append(StringUtils.isNotEmpty(editBeforeEndTime) ? editBeforeEndTime : "null"); - contentEnSb.append(" to "); - contentEnSb.append(StringUtils.isNotEmpty(editAfterEndTime) ? editAfterEndTime : "null").append(","); - saveFlag = true; - } - if(!StringUtils.equals(editBeforeById.getDutyPersonName(),editAfter.getDutyPersonName())){ - contentCnSb.append("\"").append("责任人").append("\""); - contentCnSb.append("由 "); - contentCnSb.append(editBeforeById.getDutyPersonName()); - contentCnSb.append(" 修改为 "); - contentCnSb.append(editAfter.getDutyPersonName()).append(","); - - contentEnSb.append("\"").append("Assignee").append("\""); - contentEnSb.append(editBeforeById.getDutyPersonName()); - contentEnSb.append(" to "); - contentEnSb.append(editAfter.getDutyPersonName()).append(","); - saveFlag = true; - } - - String contentCn = ""; - if(StringUtils.isNotEmpty(contentCnSb.toString())){ - contentCn = contentCnSb.toString().substring(0,contentCnSb.toString().length()-1); - } - String contentEn = ""; - if(StringUtils.isNotEmpty(contentEnSb.toString())){ - contentEn = contentEnSb.toString().substring(0,contentEnSb.toString().length()-1); - } - - if(saveFlag){ - ProjectCertificationInventoryLogEO projectCertificationInventoryLogEO = new ProjectCertificationInventoryLogEO(); - projectCertificationInventoryLogEO.setProjectCertificationInventoryId(editAfter.getId()); - projectCertificationInventoryLogEO.setContentCn(contentCn); - projectCertificationInventoryLogEO.setContentEn(contentEn); - projectCertificationInventoryLogEO.setOperatorType(OperatorTypeEnum.CERTIFICATION_INVENTORY_EDIT.getValue()); - projectCertificationInventoryLogEOList.add(projectCertificationInventoryLogEO); - } - } - } - if(CollectionUtils.isNotEmpty(projectCertificationInventoryLogEOList)){ - this.projectCertificationInventoryLogEOService.insertBatch(projectCertificationInventoryLogEOList); - } - } - } - /** * 通过id删除 * @@ -377,8 +178,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl detailRemoveWrap = new QueryWrapper<>(); detailRemoveWrap.lambda().eq(ProcessInfoDetailEO::getProjectLawsInventoryId,id); this.processInfoDetailEOService.remove(detailRemoveWrap); - - this.projectCertificationInventoryLogEOService.deleteByProjectCertificationInventoryIdList(Arrays.asList(id.split(","))); } /** @@ -398,8 +197,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl datas, String cut) { + if(CollectionUtils.isNotEmpty(datas)){ + List categoryList = this.sysCategoryService.list(); + List sysDictItems = this.sysDictItemServiceImpl.getBaseMapper().selectItemsAll(); + + List userNameList = new ArrayList<>(); + + userNameList.addAll(datas.stream().map(ProjectCertificationInventoryEO::getSdtName).collect(Collectors.toList())); + userNameList.addAll(datas.stream().map(ProjectCertificationInventoryEO::getDutyPersonName).collect(Collectors.toList())); + List sysUserList = this.sysUserService.queryUserIdListByNameList(userNameList); + + for(ProjectCertificationInventoryEO data : datas){ + //通过工程接口人名字获取sdt + if(StringUtils.isNotEmpty(data.getSdtName())){ + String sdt = sysUserList.stream().filter(sysUser -> { + boolean flag = false; + if (StringUtils.equals(sysUser.getUsername(), data.getSdtName())) { + flag = true; + } + return flag; + }).map(SysUser::getId).collect(Collectors.joining(",")); + data.setSdt(sdt); + } + //通过责任人的名字获取dutyperson + if(StringUtils.isNotEmpty(data.getDutyPersonName())){ + String dutyPerson = sysUserList.stream().filter(sysUser -> { + boolean flag = false; + if (StringUtils.equals(sysUser.getUsername(), data.getDutyPersonName())) { + flag = true; + } + return flag; + }).map(SysUser::getId).collect(Collectors.joining(",")); + data.setDutyPerson(dutyPerson); + } + //交付物类型 + if(CutEnum.CN.getValue().equals(cut)){ + if(StringUtils.isNotEmpty(data.getDeliverableTypeName())){ + String deliverableType = this.getTreeNameImport(cut, categoryList, Arrays.asList(data.getDeliverableTypeName().split(","))); + data.setDeliverableType(deliverableType); + + String valueType = categoryList.stream().filter(category -> { + boolean flag = false; + if (StringUtils.equals(data.getDeliverableTypeName(), category.getName())) { + flag = true; + } + return flag; + }).map(SysCategory::getValueType).distinct().collect(Collectors.joining(",")); + data.setValueType(valueType); + } + }else { + if(StringUtils.isNotEmpty(data.getDeliverableTypeNameEn())){ + + String deliverableType = this.getTreeNameImport(CutEnum.EN.getValue(), categoryList, Arrays.asList(data.getDeliverableTypeNameEn().split(","))); + data.setDeliverableType(deliverableType); + + String valueType = categoryList.stream().filter(category -> { + boolean flag = false; + if (StringUtils.equals(data.getDeliverableTypeNameEn(), category.getEnName())) { + flag = true; + } + return flag; + }).map(SysCategory::getValueType).distinct().collect(Collectors.joining(",")); + data.setValueType(valueType); + } + } + //责任领域 + if(CutEnum.CN.getValue().equals(cut)){ + if(StringUtils.isNotEmpty(data.getDutyTerritoryName())){ + String dutyTerritory = this.sysDictItemService.disposeShowDictItemText(sysDictItems,data.getDutyTerritoryName(),cut, ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue()); + data.setDutyTerritory(dutyTerritory); + } + }else { + if (StringUtils.isNotEmpty(data.getDutyTerritoryNameEn())){ + String dutyTerritory = this.sysDictItemService.disposeShowDictItemText(sysDictItems,data.getDutyTerritoryNameEn(),cut, ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue()); + data.setDutyTerritory(dutyTerritory); + } + } + //通过编号查找文档库的id + if(StringUtils.isNotEmpty(data.getSerialNumber())){ + BussDocumentLibraryEO bySerialNumber = bussDocumentLibraryEOMapper.getBySerialNumber(data.getSerialNumber()); + data.setBussDocumentLibraryId(bySerialNumber.getId()); + } + List list = new ArrayList<>(); + list.add(data); + if (list.size()>0) { + projectCertificationInventoryEOService.saveBatch(list); + } + } + } + } + + @Override + public String getTreeNameImport(String cut, List categoryList, List technologyTerritoryList) { + StringBuilder sb = new StringBuilder(); + for (String technologyTerritory : technologyTerritoryList) { + List collect = new ArrayList<>(); + if(CutEnum.CN.getValue().equals(cut)){ + collect = categoryList.stream().filter(e -> technologyTerritory.equals(e.getName())).collect(Collectors.toList()); + }else { + collect = categoryList.stream().filter(e -> technologyTerritory.equals(e.getEnName())).collect(Collectors.toList()); + } + sb.append(collect.get(0).getId()); + } + String technologyTerritoryId = ""; + if (StringUtils.isNotBlank(sb)) { + technologyTerritoryId = sb.substring(0, sb.length()-0); + } + return technologyTerritoryId; + } + @Override public void disposeData(List datas, String cut) { if (CollectionUtils.isNotEmpty(datas)) { @@ -562,9 +469,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl deliverableTemplateFileInfos = this.ossFileService.getFileInfos(data.getDeliverableTemplate()); - if(CollectionUtils.isNotEmpty(deliverableTemplateFileInfos)){ - String deliverableTemplateNames = deliverableTemplateFileInfos.stream().map(OSSFile::getFileName).distinct().collect(Collectors.joining(",")); - data.setDeliverableTemplateName(deliverableTemplateNames); - } - } } } } + + @Override public String getTreeName(String cut, List categoryList, List technologyTerritoryList) { StringBuilder sb = new StringBuilder(); @@ -646,28 +545,12 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl projectCertificationInventoryLogEOList = new ArrayList<>(); List processInfoDetailEOList = new ArrayList<>(); for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) { // 将数据的状态更新为:清单待校核,更新截止时间。等待认证工程师进行操作。 projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.LIST_TO_BE_CHECKED.getValue()); // projectCertificationInventoryEO.setEndTime(DateUtils.str2Date(endTime,DateUtils.date_sdf.get())); - - String contentCn = "\"" + currentUser.getUsername() + "\"" +"发布了认证清单"; - String contentEn = "\"" + currentUser.getUsername() + "\"" +" publishes the authentication list"; - ProjectCertificationInventoryLogEO projectCertificationInventoryLogEO = new ProjectCertificationInventoryLogEO(); - projectCertificationInventoryLogEO.setProjectCertificationInventoryId(projectCertificationInventoryEO.getId()); - projectCertificationInventoryLogEO.setContentCn(contentCn); - projectCertificationInventoryLogEO.setContentEn(contentEn); - projectCertificationInventoryLogEO.setOperatorType(OperatorTypeEnum.CERTIFICATION_INVENTORY_STUDIO_ISSUE.getValue()); - projectCertificationInventoryLogEOList.add(projectCertificationInventoryLogEO); - } - - if(CollectionUtils.isNotEmpty(projectCertificationInventoryLogEOList)){ - this.projectCertificationInventoryLogEOService.insertBatch(projectCertificationInventoryLogEOList); } String projectLibraryId = json.getString("projectLibraryId"); @@ -1766,9 +1649,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl certificationEngineerIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(",")); - List certificationEngineerList = this.sysUserService.querySysUserListByIdList(certificationEngineerIdList); - String certificationEngineerUserNames = certificationEngineerList.stream().map(SysUser::getUsername).distinct().collect(Collectors.joining(",")); - String PRN_EN = projectLibraryBase.getProjectNameEn();//项目名称 英文 String PRN_CN = projectLibraryBase.getProjectNameCn();//项目名称 中文 @@ -1819,8 +1699,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl projectCertificationInventoryLogEOList = new ArrayList<>(); for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) { // 把交付结果、截止日期清空,流程状态 设置为 清单待发布 LambdaUpdateWrapper updateWrap = new LambdaUpdateWrapper<>(); @@ -1829,28 +1707,10 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl certificationEngineerList = this.sysUserService.querySysUserListByIdList(certificationEngineerIdList); if(CollectionUtils.isNotEmpty(certificationEngineerList)){ for (String certificationEngineerId : certificationEngineerIdList) { String thirdId = this.sysUserService.getUserThirdIdByUserId(certificationEngineerList,certificationEngineerId); @@ -2281,8 +2141,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl authDummyInventoryInfoEOList = this.authDummyInventoryInfoEOService.list(authDummyInfoQueryWrap); if(CollectionUtils.isNotEmpty(authDummyInventoryInfoEOList)){ - LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - List projectCertificationInventoryEOList = new ArrayList<>(); for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : authDummyInventoryInfoEOList) { ProjectCertificationInventoryEO projectCertificationInventoryEOTemp = new ProjectCertificationInventoryEO(); @@ -2291,43 +2149,439 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl projectCertificationInventoryLogEOList = new ArrayList<>(); - for (ProjectCertificationInventoryEO certificationInventoryEO : projectCertificationInventoryEOList) { - StringBuilder contentCnSb = new StringBuilder(); - contentCnSb.append("\"").append(currentUser.getUsername()).append("\"").append(" 添加了 "); - contentCnSb.append("\"").append(certificationInventoryEO.getCategory()).append("\"").append(" "); - contentCnSb.append("\"").append(certificationInventoryEO.getInspectionItem()).append("\"").append(" "); - contentCnSb.append("\"").append(certificationInventoryEO.getConfigItem()).append("\"").append(" "); - contentCnSb.append("\"").append(certificationInventoryEO.getSerialNumber()).append("\"").append(" "); - - StringBuilder contentEnSb = new StringBuilder(); - contentEnSb.append("\"").append(currentUser.getUsername()).append("\"").append(" added "); - contentEnSb.append("\"").append(certificationInventoryEO.getCategory()).append("\"").append(" "); - contentEnSb.append("\"").append(certificationInventoryEO.getInspectionItem()).append("\"").append(" "); - contentEnSb.append("\"").append(certificationInventoryEO.getConfigItem()).append("\"").append(" "); - contentEnSb.append("\"").append(certificationInventoryEO.getSerialNumber()).append("\""); - - ProjectCertificationInventoryLogEO projectCertificationInventoryLogEO = new ProjectCertificationInventoryLogEO(); - projectCertificationInventoryLogEO.setProjectCertificationInventoryId(certificationInventoryEO.getId()); - projectCertificationInventoryLogEO.setContentCn(contentCnSb.toString()); - projectCertificationInventoryLogEO.setContentEn(contentEnSb.toString()); - projectCertificationInventoryLogEO.setOperatorType(OperatorTypeEnum.CERTIFICATION_INVENTORY_CALL.getValue()); - projectCertificationInventoryLogEOList.add(projectCertificationInventoryLogEO); - } - this.projectCertificationInventoryLogEOService.insertBatch(projectCertificationInventoryLogEOList); } return Result.OK("调取成功!"); } + + /** + * 数据导入 + * @param file + * @param projectCertificationInventoryEO + */ + @SneakyThrows + @Override + public void importData(MultipartFile file, ProjectCertificationInventoryEO projectCertificationInventoryEO) { + String title = ""; + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + title = "类别,检验项目,配置项,WVTA ID," + + "*标准编号,*责任领域,工程接口人,责任人," + + "交付物类型,交付结果,截止日期,流程状态," + + "报告编号,产品型号,生产企业名称,认证进度"; + }else{ + title = "Category,Inspection Items,Configuration Item,WVTA ID," + + "*Standard No,*Responsible Field,Eng. Interface,Assignee," + + "Deliverable Type,Deliverables Result,Due Date,Process Status," + + "Report No,Product Model,Name Of Manufacturer,Homologation Progress"; + } + + int pos = file.getOriginalFilename().lastIndexOf("."); + String str = file.getOriginalFilename().substring(pos + 1).toLowerCase(); + String filenameorg = file.getOriginalFilename().substring(0, pos); + //判断上传文件必须是zip + if (!str.equals("zip")) { + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("请上传zip格式的文件或rar格式的文件"); + }else{ + throw new JeroBootException("Please upload a zip file or rar file"); + } + + } + String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis(); + File saveDirectory = new File(path); + if (!saveDirectory.isDirectory()) { + saveDirectory.mkdir(); + } + FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename())); + //解压缩 + String zipEntryName = ""; + if (str.equals("zip")) { + zipEntryName = FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), path); + } + + + //判断压缩包下是否只有一个文件夹 + File fileTemp = new File(path); + int length = fileTemp.listFiles().length; + if (length > 2) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("压缩包中必须有且仅有一个文件夹,请重新上传"); + }else{ + throw new JeroBootException("There must be only one folder in the compressed package Please upload it again"); + } + + } + File fileNew = new File(zipEntryName); + List fileList = new ArrayList<>(); + for (File file1 : fileNew.listFiles()) { + if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx")) { + fileList.add(file1); + } + } + if (fileList.size() == 0) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("压缩包根目录下没有excel作为导入数据,请重新上传"); + }else{ + throw new JeroBootException("Excel does not exist in the root directory of the compressed package Please upload it again"); + } + + } else if (fileList.size() > 1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("压缩包根目录下仅能存在一个excel为导入数据,请重新上传"); + }else{ + throw new JeroBootException("Only one Excel file can be imported in the compressed package root directory. Please upload data again"); + } + + } + + // 数据相关处理, + // 1.获取其中的Excel, + List excelfilelist = FileUnZip.readImpExcelFile(zipEntryName); + System.gc(); + if (excelfilelist.size() < 1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("压缩包内没有上传Excel数据"); + }else{ + throw new JeroBootException("No Excel data is uploaded in the compressed package"); + } + + } else if (excelfilelist.size() > 1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("压缩包内有多个Excel数据源"); + }else{ + throw new JeroBootException("There are multiple Excel data sources in the zip package"); + } + + } + List datas = new ArrayList<>(); + File excelFile = excelfilelist.get(0); + Workbook workbook = WorkbookFactory.create(excelFile); + List> dataList = new ArrayList<>(); + if (workbook != null) { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + Sheet sheet = workbook.getSheetAt(0); + if (sheet != null) { + StringBuilder headerSb = new StringBuilder(); + int rowNos = sheet.getLastRowNum();// 得到excel的总记录条数 + for (int i = 0; i <= rowNos; i++) { + Row row = sheet.getRow(i); + Row headerRow = sheet.getRow(i); + boolean isBlank = isRowEmpty(row); + String key = ""; + if (row != null && !isBlank) { + int columNos = headerRow.getLastCellNum();// 表头总共的列数 + Map rowList = new LinkedHashMap<>(); + for (int j = 0; j < columNos; j++) { + Cell cell = row.getCell(j); + Cell headerCell = headerRow.getCell(j); + if (cell != null) { + if (i == 0) { + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + headerSb.append(cell.getStringCellValue() + ","); + if(j == 15){ + break; + } + } else if(i > 1){ + List headList = Arrays.asList(headerSb.toString().split(",")); + String field =""; + if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType() && HSSFDateUtil.isCellDateFormatted(cell)) { + Date d = cell.getDateCellValue(); + field = fieldConvert(headList.get(j)); + rowList.put(field, df.format(d)); + } else { + field = fieldConvert(headList.get(j)); + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + String stringCellValue = cell.getStringCellValue(); + if (StringUtils.isNotBlank(stringCellValue)) { + String replace = stringCellValue.replace(",", ","); + rowList.put(field, replace); + } else { + rowList.put(field, ""); + } + } + } + } + } + if (i > 1) { + dataList.add(rowList); + } + } + } + + if (dataList.size() == 0) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("请填写必填字段内容,带*的为必填"); + }else{ + throw new JeroBootException("Please fill in the required fields marked with *"); + } + + }else{ + //数据转换 JSON.parseObject(JSON.toJSONString(map), MyUser.class) + for (Map stringStringMap : dataList) { + ProjectCertificationInventoryEO projectCertificationInventoryEOTemp = JSON.parseObject(JSON.toJSONString(stringStringMap), ProjectCertificationInventoryEO.class); +// projectCertificationInventoryEOTemp.setCut(projectCertificationInventoryEO.getCut()); + projectCertificationInventoryEOTemp.setProjectLibraryId(projectCertificationInventoryEO.getProjectLibraryId()); + projectCertificationInventoryEOTemp.setFlowStatus(CertificationInventoryFlowStatusEnum.LIST_TO_BE_RELEASED.getValue()); + datas.add(projectCertificationInventoryEOTemp); + } + } + // 校验头部是否符合模板 + String substring = headerSb.toString(); + if (substring.endsWith(",") || substring.endsWith(",")){ + substring = headerSb.substring(0, headerSb.length() - 1); + } + + String excelHeader = substring.toString(); + if (!title.equals(excelHeader)) { + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("读取失败,请严格按照模板文件导入数据"); + }else{ + throw new JeroBootException("The data fails to be read. Import data strictly according to the template file"); + } + + } + } + } + workbook.close(); +// List categoryList = sysCategoryService.list(); + //普通数据字典 +// List dictItemList = sysDictItemServiceImpl.selectItemsAll(); +// importDatas(datas, dictItemList, zipEntryName,saveDirectory,projectCertificationInventoryEO,categoryList); + String cut = projectCertificationInventoryEO.getCut(); + importDisposeData(datas,cut); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + + } + + /** + * 导出数据 + * @param response + * @param request + * @param projectCertificationInventoryEO + */ + @Override + public void exportData(HttpServletResponse response, HttpServletRequest request, ProjectCertificationInventoryEO projectCertificationInventoryEO) { + List dataList = new ArrayList<>(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(projectCertificationInventoryEO,request.getParameterMap()); + queryWrapper.in("project_library_id",projectCertificationInventoryEO.getProjectLibraryId()); + if(StringUtils.isNotBlank(projectCertificationInventoryEO.getIds())){ + queryWrapper.in("id",Arrays.asList(projectCertificationInventoryEO.getIds().split(","))); + } + queryWrapper.orderByDesc("create_time","serial_number"); + //导出的数据 + dataList = this.list(queryWrapper); + for (int i = 0; i < dataList.size(); i++) { + if(StringUtils.isNotEmpty(dataList.get(i).getDeliveryResult())){ + String fileName = ossFileService.getFileInfos(dataList.get(i).getDeliveryResult()).stream().map(OSSFile::getFileName).distinct().collect(Collectors.joining(",")); + dataList.get(i).setDeliveryResult(fileName); + } + } + String cut = projectCertificationInventoryEO.getCut(); + disposeData(dataList,cut); + + OutputStream os = null; + try { + response.setContentType("application/force-download"); + Workbook workbook = new XSSFWorkbook(); + String path = uploadpath + "/tempZip"; + File fileTemp = new File(path); + if (fileTemp.exists()) { + fileTemp.delete(); + } + fileTemp.mkdirs(); + //文件 +// exportFile(dataList,fileInfos); + String excelName = projectCertificationInventoryEO.getExcelName()+".xlsx"; +// String excelName = ""; +// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ +// excelName = "认证清单.xlsx"; +// }else{ +// excelName = "Certification List.xlsx"; +// } + //excel + OutputStream excelOS = new FileOutputStream(path + File.separator + excelName); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + workbook = ExcelExportUtil.exportExcel(exportParams, ProjectCertificationInventoryEO.class, dataList); + }else{ + List dataListEn = new ArrayList<>(); + for (ProjectCertificationInventoryEO projectCertificationInventoryEOTemp : dataList) { + ProjectCertificationInventoryEOEn projectCertificationInventoryEOEn = new ProjectCertificationInventoryEOEn(); + BeanUtils.copyProperties(projectCertificationInventoryEOTemp,projectCertificationInventoryEOEn); + dataListEn.add(projectCertificationInventoryEOEn); + } + //下拉选中英文转换 +// transition(dataListEn,projectCertificationInventoryEO); + workbook = ExcelExportUtil.exportExcel(exportParams, ProjectCertificationInventoryEOEn.class, dataListEn); + } + + workbook.write(excelOS); + excelOS.flush(); + + ZipUtil.zip(path, path + ".zip"); + //文件 + FileInputStream fis = new FileInputStream(path + ".zip"); + os = response.getOutputStream(); + + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + fis.close(); + } catch (IOException e) { + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + throw new JeroBootException("下载文件失败"); + }else{ + throw new JeroBootException("Failed to download file"); + } + } finally { + IOUtils.closeQuietly(os); + File file = new File(uploadpath + "/tempZip"); + FileUtil.deleteContents(file); + } + + } +// private void transition(List dataListEn,ProjectCertificationInventoryEO projectCertificationInventoryEO){ +// //下拉选数据字典 +// List sysCategoryList = sysCategoryService.list(); +// +// //技术领域数据字典 +// List sysDictItems = sysDictItemServiceImpl.selectItemsAll(); +// for (ProjectCertificationInventoryEOEn projectCertificationInventoryEOEn : dataListEn) { +// +// //责任领域dutyTerritory +// String dutyTerritory = projectCertificationInventoryEOEn.getDutyTerritory(); +// String pullDutyTerritory = pull(sysDictItems, dutyTerritory,"duty_territory"); +// if(StringUtils.isNotBlank(pullDutyTerritory)){ +// projectCertificationInventoryEOEn.setDutyTerritory(pullDutyTerritory); +// } +// +// } +// } + private String pull(List sysDictItems, String field,String dictCode) { + if(StringUtils.isBlank(field)){ + return null; + } + StringBuilder sb = new StringBuilder(); + for (String s : field.split(",")) { + List collect = sysDictItems.stream().filter(e -> dictCode.equals(e.getDictCode()) && s.equals(e.getItemValue())).collect(Collectors.toList()); + if(collect.size() != 0){ + sb.append(collect.get(0).getEnName() + ","); + } + } + if(StringUtils.isNotBlank(sb)){ + String substring = sb.substring(0, sb.length() - 1); + return substring; + } + return null; + } + + + //判断row是否为空 空返回true + public boolean isRowEmpty(Row row) { + if (null == row) { + return true; + } + int firstCellNum = row.getFirstCellNum(); //第一个列位置 + int lastCellNum = row.getLastCellNum(); //最后一列位置 + int nullCellNum = 0; //空列数量 + for (int c = firstCellNum; c < lastCellNum; c++) { + Cell cell = row.getCell(c); + if (null == cell) { + nullCellNum++; + continue; + } + String value = ""; + switch (cell.getCellType()) { + case HSSFCell.CELL_TYPE_NUMERIC: // 数字 + //如果为时间格式的内容 + value = String.valueOf(cell.getNumericCellValue()); + break; + case HSSFCell.CELL_TYPE_STRING: // 字符串 + value = cell.getStringCellValue(); + break; + case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean + value = cell.getBooleanCellValue() + ""; + break; + case HSSFCell.CELL_TYPE_FORMULA: // 公式 + value = cell.getCellFormula() + ""; + break; + default: + break; + } + if (org.apache.commons.lang.StringUtils.isEmpty(value)) { + nullCellNum++; + } + } + //所有列都为空 + if (nullCellNum == (lastCellNum - firstCellNum)) { + return true; + } + return false; + } + + private String fieldConvert(String field){ + if (field == null) return null; + switch (field) { + case "类别": return "category"; + case "检验项目": return "inspectionItem"; + case "配置项": return "configItem"; + case "WVTA ID": return "wvtaId"; + case "*标准编号": return "serialNumber"; + case "*责任领域": return "dutyTerritoryName"; + case "工程接口人": return "sdtName"; + case "责任人": return "dutyPersonName"; + case "交付物类型": return "deliverableTypeName"; + case "交付结果": return "deliveryResult"; + case "截止日期": return "endTime"; + case "流程状态": return "flowStatus"; + case "报告编号": return "reportNumber"; + case "产品型号": return "productModel"; + case "生产企业名称": return "productionEnterpriseName"; + case "认证进度": return "certificationProgress"; + + case "Category": return "category"; + case "Inspection Items": return "inspectionItem"; + case "Configuration Item": return "configItem"; + case "*Standard No": return "serialNumber"; + case "*Responsible Field": return "dutyTerritoryNameEn"; + case "Eng. Interface": return "sdtName"; + case "Assignee": return "dutyPersonName"; + case "Deliverable Type": return "deliverableTypeNameEn"; + case "Deliverables Result": return "deliveryResult"; + case "Due Date": return "endTime"; + case "Process Status": return "flowStatus"; + case "Report No": return "reportNumber"; + case "Product Model": return "productModel"; + case "Name Of Manufacturer": return "productionEnterpriseName"; + case "Homologation Progress": return "certificationProgress"; + + default: return null; + //"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," + + } + } + /** * 模板下载 * @param projectCertificationInventoryEO @@ -2345,7 +2599,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl