From 7860a92fad7e1094b9b71d97dc8d1d401096fb53 Mon Sep 17 00:00:00 2001 From: wxyclub Date: Wed, 30 Aug 2023 10:05:27 +0800 Subject: [PATCH 1/5] =?UTF-8?q?add:=E6=B7=BB=E5=8A=A0=E6=B5=B7=E5=A4=96?= =?UTF-8?q?=E6=A0=87=E5=87=86=E4=B8=AD=E8=8B=B1=E6=96=87=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=8F=AF=E6=9F=A5=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=90=8E=E5=9F=B9=E8=AE=AD=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=B8=8A=E4=BC=A0=E5=88=B0=E5=AE=A3=E8=B4=AF?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ActSarItemsBussEOService.java | 20 +++++++++++++++++++ .../impl/SarBussionessStandServiceImpl.java | 9 +++++++++ .../SarStandardsInfoMapper.xml | 2 ++ 3 files changed, 31 insertions(+) diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java index bc6d120a..9968f412 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java @@ -350,6 +350,7 @@ public class ActSarItemsBussEOService { String standType = String.valueOf(standMap.get("standType")); String DTQBBHBUSS = String.valueOf(standMap.get("DTQBBHBUSS")); String standNum = String.valueOf(standMap.get("standNum"));//制修订时顺序号 + String madelSub = String.valueOf(standMap.get("madelSub")); // 培训文件 // String isJudge = String.valueOf(standMap.get("ifIn")); //是否经过技术评估 SarBussionessStand sarBussionessStand = new SarBussionessStand(); // if(standMap.containsKey("standId")) { @@ -472,6 +473,23 @@ public class ActSarItemsBussEOService { } else { relatePro = prcNum; } + if (StringUtils.isNotBlank(madelSub)) { + // 查询原宣贯记录 + String xgjlBuss = sarBussStandAttrInfoService.selectFieldValByStandId("XGJLBUSS", standId); + if (StringUtils.isNotBlank(xgjlBuss)) { + String[] xgjlBussSplit = xgjlBuss.split(","); + Set xgjlBussSet = new HashSet<>(); + for (String xgjlBussData : xgjlBussSplit) { + xgjlBussSet.add(xgjlBussData); + } + xgjlBussSet.add(madelSub); + xgjlBuss = StringUtils.join(xgjlBussSet.toArray(), ','); + } else { + xgjlBuss = madelSub; + } + // 编辑宣贯记录 + sarBussStandAttrInfoService.updateStandInfo(standId,"XGJLBUSS",xgjlBuss); + } // 编辑标准 sarBussionessStand.setId(standId); iSarBussionessStandService.updateSarBussionessStand(sarBussionessStand); @@ -497,6 +515,8 @@ public class ActSarItemsBussEOService { // 编辑相关流程 sarBussStandAttrInfoService.updateStandInfo(sarBussionessStand.getId(),"XGLC",prcNum); + // 编辑宣贯记录 + sarBussStandAttrInfoService.updateStandInfo(sarBussionessStand.getId(),"XGJLBUSS",madelSub); } List allItems = new ArrayList<>(); //开始处理条款数据,从去重后的结果中直接处理即可 diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index 2f55a7fa..94a22cbf 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -1915,6 +1915,15 @@ public class SarBussionessStandServiceImpl extends ServiceImpl and stand_name like concat(concat('%',#{page.standName}),'%') + or stand_en_name like concat(concat('%',#{page.standName},'%')) @@ -1196,6 +1197,7 @@ and stand_name like concat(concat('%',#{page.standName}),'%') + or stand_en_name like concat(concat('%',#{page.standName}),'%') From 6dbc57394dd978206ad70af959ab6dc6b85adad9 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 30 Aug 2023 16:21:34 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E4=BC=81=E6=A0=87=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adc/da/login/security/WebMvcConfig.java | 3 + .../controller/EsRevisePlanController.java | 91 ++++++++++++ .../esRevisePlan/entity/EsRevisePlan.java | 16 +++ .../da/utils/util/EsRevisePlanExportUtil.java | 136 ++++++++++++++++++ .../adc/da/utils/util/FieldConvertUtil.java | 4 +- .../esRevisePlan/EsRevisePlanMapper.xml | 13 +- 6 files changed, 260 insertions(+), 3 deletions(-) create mode 100644 adc-da-slrs/src/main/java/com/adc/da/utils/util/EsRevisePlanExportUtil.java diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java index 0eadfd77..5617a2d5 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java @@ -185,6 +185,9 @@ public class WebMvcConfig implements WebMvcConfigurer { //在线编辑 日志 (包含把17的文件下载到16) addInterceptor.excludePathPatterns("/api/lawss/activiti/selectOnlineFile"); + // 标准法规库-企标计划导出接口 + addInterceptor.excludePathPatterns("/api/esRevisePlan/es-revise-plan/exportEsRevisePlanInfoExcel"); + // // 添加自定义拦截器,并拦截对应 url addInterceptor.addPathPatterns("/**"); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java index 7435cb01..2e040995 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java @@ -1,23 +1,36 @@ package com.adc.da.slrs.esRevisePlan.controller; +import cn.hutool.core.util.StrUtil; +import com.adc.da.common.ReadExcel; +import com.adc.da.exception.AdcDaBaseException; import com.adc.da.http.PageInfo; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanService; import com.adc.da.slrs.sarEnterpriseStandardEvaluation.dao.QualityEvaluationDao; import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.adc.da.utils.util.EsRevisePlanExportUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.ObjectUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; import io.swagger.annotations.Api; import com.adc.da.base.web.BaseController; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -34,6 +47,8 @@ import java.util.List; @RequestMapping("api/esRevisePlan/es-revise-plan") public class EsRevisePlanController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(EsRevisePlanController.class); + @Autowired IEsRevisePlanService iEsRevisePlanService; @Autowired @@ -61,6 +76,82 @@ public class EsRevisePlanController extends BaseController { return esRevisePlans; } + @ApiOperation(value = "企标计划导出excel") + @GetMapping(value = "/exportEsRevisePlanInfoExcel") + public void exportStandardsInfoExcel(EsRevisePlan esRevisePlan, HttpServletResponse response, + HttpServletRequest request) throws Exception { + esRevisePlan.setExportFlag(true); + OutputStream os = null; + Workbook workbook = null; + try { + if (StrUtil.isNotBlank(esRevisePlan.getExportIds())) { + esRevisePlan.setExportIdList(Arrays.asList(esRevisePlan.getExportIds().split(","))); + } + if(org.apache.commons.lang3.StringUtils.isEmpty(esRevisePlan.getExportName())||esRevisePlan.getExportName().equals("null")){ + esRevisePlan.setExportName("标准法规信息"); + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(esRevisePlan.getExportName()+".xlsx", + request)); + // 导出所有数据 + List datas = iEsRevisePlanService.queryAllPlans(esRevisePlan); + for (EsRevisePlan revisePlan : datas){ + String area = revisePlan.getArea(); + if (StringUtils.isNotBlank(area)){ + if (area.startsWith("[") && area.endsWith("]")){ + area = area.substring(1,area.length() - 1); + area = area.replace("\"",""); + } + } + revisePlan.setArea(area); + //查评分 + if (ObjectUtils.isNotEmpty(revisePlan.getStandId())) { + List last = new ArrayList<>(); + List evaluations = qualityEvaluationDao.getEvaluationForm(new QueryWrapper().eq("law_id", revisePlan.getStandId()).eq("evaluation_type", "quality")); + for (QualityEvaluation evaluation : evaluations) { + Double score; + String value; + if (evaluation.getProcessNode()==null){ + value=""; + }else { + value=evaluation.getProcessNode(); + } + String evaluationScore = ObjectUtils.isEmpty(evaluation.getScore()) ? "0" : evaluation.getScore(); + switch (value){ + case "征求意见": + score=Double.valueOf(evaluationScore) * 0.3; + break; + case "技术委员会评审、评审意见修改": + score=Double.valueOf(evaluationScore) * 0.4; + break; + case "重新技术委员会评审、评审意见修改": + score=Double.valueOf(evaluationScore) * 0.4; + break; + case "标准化复审": + score=Double.valueOf(evaluationScore) * 0.15; + break; + case "标准法规部高级经理审核": + score=Double.valueOf(evaluationScore) * 0.15; + break; + default: score=Double.valueOf(evaluationScore); + } + last.add(score); + } + revisePlan.setScore(last.stream().mapToDouble(Double::doubleValue).sum()); + } + } + workbook = EsRevisePlanExportUtil.exportDatas(datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + @ApiOperation(value = "多条件查询企标计划") @PostMapping("queryAllPlans") public ResponseMessage queryAllPlans(EsRevisePlan esRevisePlan){ diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java index 663f5efc..76747d32 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java @@ -169,4 +169,20 @@ public class EsRevisePlan extends BasePage { @ApiModelProperty(value = "OA是否已经发送") @TableField("OA_IS_SEND") private String oaIsSend; + + @ApiModelProperty(value = "导出的文件名") + @TableField(exist = false) + private String exportName; + + @ApiModelProperty(value = "是否为导出标识") + @TableField(exist = false) + private boolean exportFlag; + + @ApiModelProperty(value = "被前端选中的记录的ids") + @TableField(exist = false) + private String exportIds; + + @ApiModelProperty(value = "从ids转换过来的id集合") + @TableField(exist = false) + private List exportIdList; } diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/EsRevisePlanExportUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/EsRevisePlanExportUtil.java new file mode 100644 index 00000000..5b8ed72d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/EsRevisePlanExportUtil.java @@ -0,0 +1,136 @@ +package com.adc.da.utils.util; + +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.List; + +/** + * @author: Mzaxd + * @Date: 2023/8/29 17:27 + */ +public class EsRevisePlanExportUtil { + + private static final Logger logger = LoggerFactory.getLogger(BussStandExportUtil.class); + + + public static Workbook exportDatas(List datas) { + Workbook workbook = new XSSFWorkbook(); + try { + StringBuilder attrBud = new StringBuilder(); + //定义表头 + String header = FieldConvertUtil.exportFieldNamesEsRevisePlan + "," + attrBud.toString(); + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + // 创建头部 + createHeader(workbook, sheet, header); + // 创建数据 + createDatas(workbook, sheet, datas, header); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return workbook; + } + + public static void createHeader(Workbook workbook, Sheet sheet, String header) { + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i = 0; i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); + } + } + } + + public static void createDatas(Workbook workbook, Sheet sheet, List datas, + String header) throws Exception { + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + if (datas != null && !datas.isEmpty()) { + for (int i = 0; i < datas.size(); i++) { + EsRevisePlan esRevisePlan = datas.get(i); + Row row = sheet.createRow(i + 1); + String[] headerArr = header.split(","); + int sheetNum = 0; + for (String headerName : headerArr) { + String value = getValueByName(headerName, esRevisePlan); + if (StringUtils.isBlank(value) || "null".equals(value)) { + value = ""; + } + row.createCell(sheetNum).setCellValue(value); + sheetNum++; + } + } + } + } + + // 根据表头返回相应值 + public static String getValueByName(String name, EsRevisePlan esRevisePlan) throws Exception{ + String value = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + switch (name) { + case "企标类别": + value = esRevisePlan.getBussSort(); + break; + case "企标编号": + value = esRevisePlan.getStandNumber(); + break; + case "企标名称": + value = esRevisePlan.getEsName(); + break; + case "计划状态": + value = esRevisePlan.getPlanStatus(); + break; + case "制修订类型": + value = esRevisePlan.getReviseStatus(); + break; + case "起草人": + value = esRevisePlan.getDrafterName(); + break; + case "内部评审责任人": + value = esRevisePlan.getResPersonName(); + break; + case "技术委员会评审负责人": + value = esRevisePlan.getWgLeaderName(); + break; + case "计划标准初稿完成时间": + String draftTime = null; + if (esRevisePlan.getDraftTime() != null){ + draftTime = sdf.format(esRevisePlan.getDraftTime()); + } + value = draftTime; + break; + case "计划标准发布时间": + String releaseTime = null; + if (esRevisePlan.getReleaseTime() != null){ + releaseTime = sdf.format(esRevisePlan.getReleaseTime()); + } + value = releaseTime; + break; + case "起草责任单位": + value = esRevisePlan.getUnitName(); + break; + case "实际标准发布时间": + String actualTime = null; + if (esRevisePlan.getActualTime() != null){ + actualTime = sdf.format(esRevisePlan.getActualTime()); + } + value = actualTime; + break; + case "质量评分": + value = String.valueOf(esRevisePlan.getScore()); + break; + default: + value = null; + break; + } + return value; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java index 80de36bb..d19f602b 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java @@ -2,7 +2,6 @@ package com.adc.da.utils.util; import com.adc.da.util.LoginUserUtil; import com.adc.da.util.UUIDUtils; -import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import java.io.BufferedReader; @@ -56,6 +55,9 @@ public class FieldConvertUtil { public static String exportBaseFieldNamesBuss = "企标编号,中文名称,英文名称,文本状态,发布日期,企标实施日期,企标制修订状态"; + // 企标计划 表头 + public static String exportFieldNamesEsRevisePlan = "企标类别,企标编号,企标名称,计划状态,制修订类型,起草人,内部评审责任人,技术委员会评审负责人,计划标准初稿完成时间,计划标准发布时间,起草责任单位,实际标准发布时间,质量评分"; + public static String exportBaseFieldNamesBussCode = "起草部门,废止日期,代替企标编号,复审日期,起草人,被代替企标编号,采用标准,文件上传人员,采标程度,引用标准,适用车型,能源类型,适用产品线,上传时间,体系类别,备案日期,关联模块-乘用车VPPS编码,关联模块--乘用车vpps中文名称,关联模块--卡车VPPS编码,关联模块--卡车vpps中文名称"; public static String exportAttrFieldNamesBuss = "SVPPS,规范性引用文件,废止日期,复审日期,密级,授权,相关部门," + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml index adb470c0..b0a5e6ad 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml @@ -265,9 +265,18 @@ and (select group_concat(ts_institution.name) from ts_institution where find_in_set(ts_institution.id,unit)) like concat('%',#{unit},'%') + + AND es_revise_plan.id in + + #{item} + + + - - + + + +