diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Analysis.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Analysis.java new file mode 100644 index 00000000..a9b06720 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Analysis.java @@ -0,0 +1,125 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.time.Year; +import java.util.HashSet; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@Component +public class Analysis { + + private static final Logger logger = LoggerFactory.getLogger(Contrast.class); + + public void run(MultipartFile file, MultipartFile sort) throws IOException { + + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + HashSet sortSet = getSet(sort); + + for (Row row : sheet) { + if (row.getCell(1)!=null){ + //获取表1的标准号 + String value = row.getCell(1).toString().trim(); + Cell sortCell = row.createCell(11); + Cell sortNumber = row.createCell(12); + Cell sortYear = row.createCell(13); + + sortCell.setCellType(CellType.STRING); + sortNumber.setCellType(CellType.STRING); + sortYear.setCellType(CellType.STRING); + + List collect = sortSet.stream() + .filter(item ->{ + int length = item.length(); + if (value.length()>length){ + return value.substring(0, length).contains(item.trim()); + }else return false; + }) + .collect(Collectors.toList()); + + //对比在表2中是否存在 + if (collect.size()==1){ + + String sortStr = collect.get(0); + int length = sortStr.length(); + logger.info("*"); +// Pattern pattern = Pattern.compile("^\\S*\\s\\S*[\\u2014\\u002d\\s]\\d{4}$"); +// pattern.matcher(standId).matches() + if (value.length()>=length+5){ + sortCell.setCellValue(collect.get(0)); + sortNumber.setCellValue(value.substring(length,value.length()-5)); + sortYear.setCellValue(value.substring(value.length()-4)); + } + }else if (collect.size()>1){ + String maxLenSort=""; + for (String s : collect) { + if (s.length()>maxLenSort.length()){ + maxLenSort=s; + } + } + + int length = maxLenSort.length(); + + if (value.length()>=length+5){ + logger.info("+"); + + + sortCell.setCellValue(maxLenSort); + sortNumber.setCellValue(value.substring(length,value.length()-5)); + sortYear.setCellValue(value.substring(value.length()-4)); + } + + } else { + logger.info("-"); + + sortCell.setCellValue("-"); + sortNumber.setCellValue("-"); + sortYear.setCellValue("-"); + } + } + } + File result = new File("C:\\Users\\22501\\Desktop\\foton标准数据\\拆分标准号-海外.xlsx"); + FileOutputStream os = new FileOutputStream(result); + workbook.write(os); +// HashMap map = new HashMap<>(); + + } + + private HashSet getSet(MultipartFile file) throws IOException { + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + +// int lastNum = sheet.getLastRowNum(); + + HashSet stringHashSet= new HashSet<>(); + + for (Row row : sheet) { + if (row.getCell(0)!=null){ + stringHashSet.add(row.getCell(0).toString().trim()); + } + } + + return stringHashSet; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java index b311005d..2a2c313b 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java @@ -1,21 +1,24 @@ package com.adc.da.slrs.sarStandUnqualified.controller; -import com.adc.da.base.page.Pager; import com.adc.da.base.web.BaseController; -import com.adc.da.http.PageInfo; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssueVo; import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; + import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.Arrays; import java.util.List; @@ -31,24 +34,24 @@ public class BusinessDeptIssueController extends BaseController { @PutMapping() @ApiOperation("新增事业部重点问题") - public ResponseMessage addIssueTrack(@RequestBody BusinessDeptIssue issue){ - boolean b = iBusinessDeptIssueService.addBussDeptIssue(issue); + public ResponseMessage addBussDeptIssue(@RequestBody BusinessDeptIssue issue){ + boolean b = iBusinessDeptIssueService.addBusinessDeptIssue(issue); return Result.success(b); } @DeleteMapping @ApiOperation("删除事业部重点问题") - public ResponseMessage removeIssueTrack(@RequestParam(value="selectedString") String idList){ + public ResponseMessage removeBussDeptIssue(@RequestParam(value="selectedString") String idList){ List stringList = Arrays.asList(idList.split(",")); - boolean b = iBusinessDeptIssueService.removeBussDeptIssue(stringList); + boolean b = iBusinessDeptIssueService.removeBusinessDeptIssue(stringList); return Result.success(b); } @GetMapping @ApiOperation("查询事业部重点问题") - public ResponseMessage> getIssueTrack(@RequestParam() BusinessDeptIssueVo pageVo){ - IPage page = iBusinessDeptIssueService.getBussDeptIssue(pageVo); + public ResponseMessage> getBussDeptIssue(BusinessDeptIssueVo pageVo){ + IPage page = iBusinessDeptIssueService.getBusinessDeptIssue(pageVo); return Result.success(page); @@ -57,10 +60,57 @@ public class BusinessDeptIssueController extends BaseController { @PostMapping @ApiOperation("更新事业部重点问题") - public ResponseMessage updateIssueTrack(@RequestBody BusinessDeptIssue issue){ - boolean b = iBusinessDeptIssueService.updateBussDeptIssue(issue); + public ResponseMessage updateBussDeptIssue(@RequestBody BusinessDeptIssue issue){ + boolean b = iBusinessDeptIssueService.updateBusinessDeptIssue(issue); return Result.success(b); } + @PostMapping("/closeIssue") + @ApiOperation("批量关闭事业部重点问题") + public ResponseMessage closeBusinessIssue(@RequestParam(value="ids")String idList){ + List stringList = Arrays.asList(idList.split(",")); + boolean b = iBusinessDeptIssueService.closeBusinessDeptIssue(stringList); + return Result.success(b); + + } + + + @GetMapping("/exportIssue") + @ApiOperation("导出事业部重点问题") + public void exportIssue(HttpServletResponse response,BusinessDeptIssueVo issue) throws IOException { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + + //TODO + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + + if(issue.getFileName()==null || issue.getFileName()==""){ + issue.setFileName("事业部重点问题信息"); + } + String fileName = URLEncoder.encode(issue.getFileName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); +// List data=sarStandUnqualifiedService.getStandUnqualifiedExcelData(standUnqualifiedExcelVO); + + JSONObject jsonObject = JSONObject.parseObject(issue.getExportContent()); + + BusinessDeptIssueVo businessDeptIssueVo = JSONObject.toJavaObject(jsonObject, BusinessDeptIssueVo.class); + IPage page = iBusinessDeptIssueService.getBusinessDeptIssue(businessDeptIssueVo); + + + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), BusinessDeptIssue.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(page.getRecords()); + } catch (Exception e) { + e.printStackTrace(); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSONObject.toJSONString(Result.error())); + } + } + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java index 7e5c8d87..de432cda 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java @@ -3,6 +3,8 @@ package com.adc.da.slrs.sarStandUnqualified.entity; import com.adc.da.base.page.BasePage; import com.adc.da.http.PageInfo; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; @@ -16,55 +18,78 @@ import java.util.Date; @TableName("business_dept_issue") public class BusinessDeptIssue { + + @ExcelIgnore @TableId private String id; + + @ExcelIgnore @TableField("law_id") private String lawId; + @ExcelProperty("标准号") @TableField(exist = false) private String lawNumber; + @ExcelProperty("标准名称") @TableField(exist = false) private String lawName; + @ExcelProperty("产品类别") @TableField("product_type") private String productType; + @ExcelProperty("实施实践") @TableField("impl_time") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd") private Date implTime; + @ExcelProperty("实施要求") @TableField("impl_require") private String implRequire; + @ExcelProperty("资源符合状态") @TableField("conform_situation") private String conformSituation; + @ExcelProperty("开发情况") @TableField("dev_scheme") private String devScheme; + @ExcelProperty("sop时间") @TableField("sop_time") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd") private Date sopTime; + @ExcelProperty("完成情况") @TableField("complete_situation") private String completeSituation; + @ExcelProperty("超出sop时限后计划") @TableField("timeout_situation") private String timeoutSituation; + @ExcelIgnore @TableLogic(value = "0",delval = "1") private String delFlag; + @ExcelProperty("责任部门") @TableField("response_dept") private String responseDept; + @ExcelProperty("责任人") @TableField("response_people") private String responsePeople; + @ExcelIgnore + @TableField("is_close") + private String isClose; + + @ExcelIgnore @TableField(exist = false) private Integer page; + @ExcelIgnore @TableField(exist = false) private Integer pageSize; } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java index e7214289..a2f4f90a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java @@ -2,8 +2,25 @@ package com.adc.da.slrs.sarStandUnqualified.entity; import lombok.Data; +import java.util.Arrays; +import java.util.List; + @Data public class BusinessDeptIssueVo extends BusinessDeptIssue { private String numberOrName; + + private String fileName; + + private String idList; + + private String exportContent; + + public List getIdList(){ + if (this.idList!=null){ + return Arrays.asList(this.idList.split(",")); + }else { + return null; + } + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java index 4548872b..2103c61a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java @@ -12,11 +12,13 @@ import java.util.List; public interface IBusinessDeptIssueService extends IService { - public boolean addBussDeptIssue(BusinessDeptIssue obj); + public boolean addBusinessDeptIssue(BusinessDeptIssue obj); - public boolean removeBussDeptIssue(List idList); + public boolean removeBusinessDeptIssue(List idList); - public IPage getBussDeptIssue(BusinessDeptIssueVo objVo); + public IPage getBusinessDeptIssue(BusinessDeptIssueVo objVo); - public boolean updateBussDeptIssue(BusinessDeptIssue obj); + public boolean updateBusinessDeptIssue(BusinessDeptIssue obj); + + public boolean closeBusinessDeptIssue(List idList); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java index 0cc26cce..b807d0c6 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java @@ -1,7 +1,5 @@ package com.adc.da.slrs.sarStandUnqualified.service.impl; -import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; -import com.adc.da.slrs.sarIssueTrack.entity.IssueTrack; import com.adc.da.slrs.sarStandUnqualified.dao.BusinessDeptIssueDao; import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssueVo; @@ -14,8 +12,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Service public class BusinessDeptIssueService extends ServiceImpl implements IBusinessDeptIssueService { @@ -24,48 +22,79 @@ public class BusinessDeptIssueService extends ServiceImpl idList) { + public boolean removeBusinessDeptIssue(List idList) { return removeByIds(idList); } @Override - public IPage getBussDeptIssue(BusinessDeptIssueVo pageVo) { + public IPage getBusinessDeptIssue(BusinessDeptIssueVo pageVo) { - IPage page=new Page<>(pageVo.getPage(),pageVo.getPageSize()); + IPage page = new Page<>(); + QueryWrapper wrapper = new QueryWrapper<>(); + //是否分页 + if (pageVo.getPage()!=null && pageVo.getPageSize()!=null){ + page=new Page<>(pageVo.getPage(),pageVo.getPageSize()); - QueryWrapper wrapper = new QueryWrapper<>(); - - if (pageVo.getNumberOrName()!=null){ - wrapper.like("law_number",pageVo.getNumberOrName()) - .or() - .like("law_name",pageVo.getNumberOrName()); - } + }else { + Integer count = businessDeptIssueDao.selectCount(wrapper); + page=new Page<>(0,count,false); + } - if (pageVo.getLawNumber()!=null || pageVo.getProductType()!=null){ - wrapper.like("law_number",pageVo.getLawNumber()) - .or() - .like("law_name",pageVo.getLawName()); - } + //查询条件 + if (pageVo.getIsClose()!=null){ + wrapper.like("is_close",pageVo.getIsClose()); + } - if (pageVo.getResponseDept()!=null){ - wrapper.like("product_type",pageVo.getResponseDept()); - } + if (pageVo.getLawNumber()!=null || pageVo.getLawName()!=null){ + wrapper.like("laws.LAWS_NUMBER",pageVo.getLawNumber()) + .or() + .like("laws.LAWS_NAME",pageVo.getLawName()); + } - page = businessDeptIssueDao.findPage(page, wrapper); + if (pageVo.getProductType()!=null){ + wrapper.like("product_type",pageVo.getProductType()); + } + + if (pageVo.getResponseDept()!=null){ + wrapper.like("response_dept",pageVo.getResponseDept()); + } + + /** + * 导出 + */ + if (pageVo.getIdList()!=null){ + wrapper.in("issue.ID",pageVo.getIdList()); + } + + page = businessDeptIssueDao.findPage(page, wrapper); return page; } @Override - public boolean updateBussDeptIssue(BusinessDeptIssue obj) { + public boolean updateBusinessDeptIssue(BusinessDeptIssue obj) { return this.updateById(obj); } + + @Override + public boolean closeBusinessDeptIssue(List idList){ + List collect = idList.stream() + .map(item -> { + BusinessDeptIssue businessDeptIssue = new BusinessDeptIssue(); + businessDeptIssue.setId(item); + businessDeptIssue.setIsClose("1"); + return businessDeptIssue; + }).collect(Collectors.toList()); + + return this.updateBatchById(collect); + } + } diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml index 672fa243..01548dcc 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml @@ -7,16 +7,16 @@ - - - - - - - - - - + + + + + + + + + +