Merge branch 'develop_3' into 'develop_master'

Develop 3

See merge request LiuChao/foton-slrs-system-rest!222
This commit is contained in:
super_liu
2021-11-07 16:49:22 +08:00
21 changed files with 475 additions and 27 deletions
@@ -28,6 +28,9 @@ public class ActDefineStartMap {
// 政策入库
map.put("laws1","lawsLibraryWkflow");
//政策征求意见, 认证重点法规/政策 流程
map.put("laws2","PolicyCommentProcessWorkFlow");
map.put("laws3","KCSTPReviewProcessWorkFlow");
//张超然
map.put("20","StandardApplyMeetProcess");
@@ -0,0 +1,99 @@
package com.adc.da.workFlow.common;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import sun.awt.SunHints;
import java.util.List;
import java.util.Map;
public class ExportExcel<T> {
private String header;
private static String[] property;
Workbook workbook=new XSSFWorkbook();
public void setProperty(String property){
this.property=property.split(",");
}
public void setHeader(String header){
this.header=header;
}
public Workbook getWorkBook(T dataJson) throws Exception {
JSONArray dataArray = JSONObject.parseArray(dataJson.toString());
CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象
cellStyle.setAlignment(HorizontalAlignment.CENTER);
Sheet sheet = workbook.createSheet();
sheet.setDefaultColumnWidth(25);
createHeader(sheet,header);
createData(sheet,dataArray);
return workbook;
}
public static void createHeader(Sheet sheet, String header){
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 createData(Sheet sheet, List<?> data) throws Exception{
if (data != null && !data.isEmpty()) {
for (int i=0;i < data.size(); i++) {
Row row = sheet.createRow(i+1);
int sheetNum = 0;
JSONObject datumJson =(JSONObject)data.get(i);
/**
* 遍历jsonObject值填入一行的单元格中
*/
for (String s : property) {
String value = datumJson.getString(s);
row.createCell(sheetNum).setCellValue(value);
sheetNum++;
}
// Class cls = importDto.getClass();
// Field[] fields = cls.getDeclaredFields();
// for (Field field : fields) {
// field.setAccessible(true);
// if (field.get(importDto)!=null){
// String value = field.get(importDto).toString();
// row.createCell(sheetNum).setCellValue(value);
// }else {
// row.createCell(sheetNum).setCellValue("");
// }
// sheetNum++;
// }
}
}
}
}
@@ -0,0 +1,69 @@
package com.adc.da.workFlow.controller;
import com.adc.da.common.ReadExcel;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.workFlow.common.ExportExcel;
import com.adc.da.workFlow.service.PolicyWorkFlowService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/${restPath}/policy/activiti")
@Api(tags = "政策征求意见和重点法规或政策认证流程")
public class PolicyWorkFlowController {
/**
* 政策征求意见导出
*/
@PostMapping("/exportExcel")
@ApiOperation("导出政策征求意见为excel")
public void exportExcel(@RequestBody String dataJson, HttpServletResponse response, HttpServletRequest request) throws Exception {
JSONObject data = JSONObject.parseObject(dataJson);
JSONArray info = data.getJSONArray("dataList");
ExportExcel exportExcel = new ExportExcel();
exportExcel.setHeader("章节编号,章节名称,修改前,修改后,修改理由,原因,提出部门,提出人");
exportExcel.setProperty("chapterNumber,chapterName,oldText,newText,changeReason,reason,department,responUserName");
Workbook workbook=exportExcel.getWorkBook(info);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment; filename=" + ReadExcel.encodeFileName("政策征求意见"+".xlsx",request));
// response.setContentType("application/force-download");
ServletOutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
}
@Autowired
private PolicyWorkFlowService policyWorkFlowService;
/**
* 政策征求意见导出
*/
@PostMapping("/enterIssue")
@ApiOperation("纳入重点问题管控")
public ResponseMessage enterIssue(@RequestBody String json){
boolean result = policyWorkFlowService.enterIssue(json);
return Result.success(result);
}
}
@@ -524,13 +524,22 @@ public class WorkFlowController {
map.put("flag","未完成");
}
if(map.get("comment")!=null && !map.get("comment").toString().equals("")){
if(map.get("comment").toString().equals("0")){
map.put("comment","同意");
}else if(map.get("comment").toString().equals("1")){
map.put("comment","同意");
}else{
map.put("comment",map.get("commentText").toString());
String comment = map.get("comment").toString();
switch (comment){
case "0":
map.put("comment","同意");
break;
case "1":
map.put("comment","不同意");
break;
default:
String commentText="";
map.put("comment",comment+map.get("commentText"));
}
}else if (map.get("commentText")!=null && !"".equals(map.get("commentText"))){
map.put("comment",map.get("commentText").toString());
}
ProcessDetailExport user = JSON.parseObject(JSON.toJSONString(map), ProcessDetailExport.class);
exportDatas.add(user);
@@ -0,0 +1,45 @@
package com.adc.da.workFlow.service;
import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue;
import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService;
import com.adc.da.util.UUIDUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class PolicyWorkFlowService {
@Autowired
private IBusinessDeptIssueService businessDeptIssueService;
public boolean enterIssue(String json){
boolean count=false; //是否成功
JSONObject dataJsonObj = JSONObject.parseObject(json);
if ("1".equals(dataJsonObj.getString("department"))) {
JSONArray dataList = dataJsonObj.getJSONArray("dataList");
/**
* 把json对象转换未实体对象
*/
List<BusinessDeptIssue> data = dataList
.stream()
.map(jsonObj -> {
BusinessDeptIssue businessDeptIssue = JSONObject.parseObject(jsonObj.toString(), BusinessDeptIssue.class);
businessDeptIssue.setId(UUIDUtils.randomUUID20());
return businessDeptIssue;
}).collect(Collectors.toList());
count=businessDeptIssueService.saveBatch(data);
}
return count;
}
}
@@ -23,6 +23,7 @@ public class ExclExport extends ExclErrorOut {
for (Map.Entry<String, List<ImportDto>> entry : dataMap.entrySet()) {
List<ImportDto> datas = entry.getValue();
Sheet sheet = workbook.createSheet(entry.getKey());
sheet.setDefaultColumnWidth(25);
super.createHeader(workbook,sheet,header);
super.createDatas(workbook,sheet,datas);
@@ -52,13 +52,15 @@ public class ImportExcelController extends BaseController<ImportDto> {
/**
* 导入系统
*/
List<ImportDto> errorList = importExcelService.storageExclData(mapMap);
// List<ImportDto> errorList = importExcelService.storageExclData(mapMap);
// mapMap.put("导入后的信息",errorList);
// List<ImportDto> guonei= mapMap.get("GNBZ");
// List<ImportDto> haiwai = mapMap.get("HWBZ");
// List<ImportDto> qibiao = mapMap.get("QYBZ");
/**
* 生成错误表格
*/
@@ -94,4 +96,47 @@ public class ImportExcelController extends BaseController<ImportDto> {
}
@ApiOperation("从excl中导入标准信息")
@PostMapping("/analysisExcl")
public void analysisExcl(MultipartFile exclFile,MultipartFile standSort, HttpServletResponse response, HttpServletRequest request) throws IOException {
/**
* 分解数据
*/
String headStr="标准号,标准类别,内容,标准名称,英文名称,发布时间,实施时间,标准状态,代替标准号,//,//";
Map<String, List<ImportDto>> stringListMap = importExcelService.analysisExcl(exclFile,standSort);
/**
* 生成错误表格
*/
OutputStream os = null;
Workbook workbook = null;
try {
String exportName="错误表格";
response.setHeader("Content-Disposition",
"attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx",request));
response.setContentType("application/force-download");
//导出数据
// workbook = exclErrorOut.exportDatas(guonei,headStr);
ExclExport exclExport = new ExclExport();
workbook = exclExport.exportData(stringListMap, headStr);
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (IOException e) {
throw new AdcDaBaseException("下载文件失败,请重试");
} finally {
IOUtils.closeQuietly(os);
if (workbook != null) {
workbook.close();
}
}
}
}
@@ -8,6 +8,10 @@ public class ImportDto extends BaseEntity {
// 标准号
private String standId;
//标准类别
private String standSort;
//
private String standIdExcludeSort;
// 标准名称
private String standName;
// 英文名称
@@ -14,4 +14,5 @@ public interface ImportExcelService extends IService<ImportDto> {
public List<ImportDto> storageExclData(Map<String, List<ImportDto>> importListMap);
public Map<String,List<ImportDto>> analysisExcl(MultipartFile exclFile,MultipartFile standSort);
}
@@ -31,6 +31,7 @@ import java.io.InputStream;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Service
public class ImportExcelServiceImpl extends ServiceImpl<ImportExcelDao, ImportDto> implements ImportExcelService {
@@ -51,9 +52,10 @@ public class ImportExcelServiceImpl extends ServiceImpl<ImportExcelDao, ImportDt
// private SarBussionessStandServiceImpl sarBussionessStandService;
/**
* 标准类别
*/
private final static String GN = "GB,GB/T,QC/T,GJB,JB,JT,HG,YV,SY,SH,GA,HJ,QB,JG,NB,JC,YS/T,FZ/T,TB/T,JJG,SJ/T,T/TBPS" +
",NB/T,CJ/T,YS/T,SJ/T,BB/T,SN/T,SB/T,MH/T,DB11,SZDB/Z,HKG,T/ZSA,CSAE,T/CAS,T/CADA,T/CHTS,T/ITS,T/BJQC";
private final static String QB = "Q/QCBFC,Q/FT,Q/FL,Q/QCFLC,Q/BQB,Q/SGT," +
@@ -205,23 +207,34 @@ public class ImportExcelServiceImpl extends ServiceImpl<ImportExcelDao, ImportDt
//赋值方法
private ImportDto getImportDto(String[] as) {
ImportDto importDto = new ImportDto();
if (as.length == 8) {
String content = as[0];
int length = as.length;
if (length>6){
for (String s : sortList) {
int sortLength = s.length();//标准类别长度
if (s.equals(content.substring(0,sortLength ))){
importDto.setStandSort(s);
importDto.setStandIdExcludeSort(content.substring(sortLength));
}
}
importDto.setStandId(null != as[0] ? as[0].trim() : "");
importDto.setStandName(null != as[1] ? as[1].trim() : "");
importDto.setStandNameEN(null != as[2] ? as[2].trim() : "");
importDto.setPublishTime(null != as[3] ? as[3].trim() : "");
importDto.setImplementedTime(null != as[4] ? as[4].trim() : "");
importDto.setStandStatus(null != as[5] ? as[5].trim() : "");
importDto.setReplaceId(null != as[6] ? as[6].trim() : "");
} else if (as.length == 7) {
importDto.setStandId(null != as[0] ? as[0].trim() : "");
importDto.setStandName(null != as[1] ? as[1].trim() : "");
importDto.setStandNameEN(null != as[2] ? as[2].trim() : "");
importDto.setPublishTime(null != as[3] ? as[3].trim() : "");
importDto.setImplementedTime(null != as[4] ? as[4].trim() : "");
importDto.setStandStatus(null != as[5] ? as[5].trim() : "");
importDto.setReplaceId("");
if (length==7){
importDto.setReplaceId("");
}else if (length==8){
importDto.setReplaceId(null != as[6] ? as[6].trim() : "");
}
}
return importDto;
}
@@ -241,7 +254,6 @@ public class ImportExcelServiceImpl extends ServiceImpl<ImportExcelDao, ImportDt
for (int j = 0; j <= lastNum; j++) {
HSSFRow row = sheet.getRow(j);
if (null != row) {
System.out.println("正在读取第"+j+"行...");
strings.add(row.getCell(0).getStringCellValue());
}
}
@@ -532,6 +544,60 @@ public class ImportExcelServiceImpl extends ServiceImpl<ImportExcelDao, ImportDt
return error;
}
private List<String> sortList=new LinkedList<>();
@Override
public Map<String,List<ImportDto>> analysisExcl(MultipartFile exclFile,MultipartFile standSort) {
//TODO analy
if (exclFile == null || exclFile.getSize() == 0) {
log.error("文件上传错误,重新上传");
}
String filename = exclFile.getOriginalFilename();
String standSortName=standSort.getOriginalFilename();
List<String> datas = new ArrayList<>();
if (filename.endsWith(".xls")) {
datas = isXls(exclFile);
} else {
datas = isXlsx(exclFile);
}
if (standSortName.endsWith(".xls")){
sortList = isXls(standSort);
}else {
sortList = isXlsx(standSort);
}
HashMap<String, List<ImportDto>> result = new HashMap<>();
LinkedList<ImportDto> exportList = new LinkedList<>();
HashSet<String> distinct = new HashSet<>();
datas.forEach(data->{
System.out.print("#");
String[] row = data.split("\\,");
if (row.length>7){
if ((!"".equals(row[0].trim()) || !"".equals(row[1].trim()))&&distinct.add(row[0].trim()+row[1].trim())){
ImportDto importDto = getImportDto(row);
if(importDto.getStandId()!=null&&importDto.getStandName()!=null){
exportList.add(importDto);
}
}
}
});
result.put("标准数据all_new",exportList);
return result;
}
/**
* 整理为标准信息实体
@@ -0,0 +1,8 @@
package com.adc.da.slrs.sarStandUnqualified.controller;
import org.springframework.stereotype.Controller;
@Controller
public class KeyIssueManagementController {
//TODO zky
}
@@ -0,0 +1,12 @@
package com.adc.da.slrs.sarStandUnqualified.dao;
import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
public interface BusinessDeptIssueDao extends BaseMapper<BusinessDeptIssue> {
}
@@ -0,0 +1,8 @@
package com.adc.da.slrs.sarStandUnqualified.dao;
import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
public interface ProductDeptIssueDao extends BaseMapper<ProductDeptIssue> {
}
@@ -0,0 +1,26 @@
package com.adc.da.slrs.sarStandUnqualified.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("business_dept_issue")
public class BusinessDeptIssue {
private String id;
private String lawId;
private String productType;
private Date implTime;
private String implRequire;
private String conformSituation;
private String devScheme;
private Date sopTime;
private String completeSituation;
private String timeoutSituation;
}
@@ -0,0 +1,25 @@
package com.adc.da.slrs.sarStandUnqualified.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("product_dept_issue")
public class ProductDeptIssue {
private String id;
private String lawId;
private String productBusiness;
private String platform;
private String pojName;
private String pojDescription;
private String currentNode;
private String conceptualState;
private Date scheduledIssuanceTime;
private String revisedPlan;
private String explanation;
}
@@ -0,0 +1,7 @@
package com.adc.da.slrs.sarStandUnqualified.service;
import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IBusinessDeptIssueService extends IService<BusinessDeptIssue> {
}
@@ -0,0 +1,4 @@
package com.adc.da.slrs.sarStandUnqualified.service;
public interface IProductDeptIssueService {
}
@@ -0,0 +1,11 @@
package com.adc.da.slrs.sarStandUnqualified.service.impl;
import com.adc.da.slrs.sarStandUnqualified.dao.BusinessDeptIssueDao;
import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue;
import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class BusinessDeptIssueService extends ServiceImpl<BusinessDeptIssueDao, BusinessDeptIssue> implements IBusinessDeptIssueService {
}
@@ -0,0 +1,9 @@
package com.adc.da.slrs.sarStandUnqualified.service.impl;
import com.adc.da.slrs.sarStandUnqualified.dao.ProductDeptIssueDao;
import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue;
import com.adc.da.slrs.sarStandUnqualified.service.IProductDeptIssueService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
public class ProductDeptIssueService extends ServiceImpl<ProductDeptIssueDao,ProductDeptIssue> implements IProductDeptIssueService {
}
@@ -96,7 +96,7 @@ public class SarStandardsInfoController extends BaseController<SarStandardsInfo>
if (null != page.getNowOrderBy()) {
switch (page.getNowOrderBy()) {
case 1:
page.setOrderByA("issueTime");//发布日期
page.setOrderByA("ISSUE_TIME");//发布日期
break;
case 2:
page.setOrderByA("SAR_STAND_ATTR_INFO.ZCCSSRQ");//新车型实施日期
@@ -674,13 +674,9 @@
</if>
<!-- 标准编号111 -->
<if test="standNumber != null and standNumber != ''">
and (
and
(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-',
SAR_STANDARDS_INFO.STAND_YEAR) like concat(concat('%',#{standNumber}),'%') and SAR_STANDARDS_INFO.STAND_YEAR != '')
or (concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER) like concat(concat('%',#{standNumber}),'%')
and SAR_STANDARDS_INFO.STAND_YEAR = '')
or (stand_name like concat(concat('%',#{standNumber}),'%'))
)
</if>
<!-- 标准名称 -->
<if test="standName != null and standName != ''">