未符合项/重点问题管理

This commit is contained in:
root
2021-06-17 11:20:10 +08:00
parent 4ffd46b830
commit 2bb3aab2e0
31 changed files with 1641 additions and 17 deletions
@@ -0,0 +1,121 @@
package com.adc.da.slrs.sarStandIssueControlCause.controller;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.ResponseMessageCodeEnum;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO;
import com.adc.da.slrs.sarStandIssueControlCause.service.ISarStandIssueControlCauseService;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO;
import com.adc.da.slrs.sarStandUnqualified.service.ISarStandUnqualifiedService;
import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
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.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import io.swagger.annotations.Api;
import com.adc.da.base.web.BaseController;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author super_liu
* @since 2021-06-16
*/
@RestController
@Api(tags = "|重点问题项管控模块-事业部|")
@RequestMapping("/sarStandIssueControlCause/sar-stand-issue-control-cause")
public class SarStandIssueControlCauseController extends BaseController<SarStandIssueControlCause> {
private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class);
@Autowired
private ISarStandIssueControlCauseService sarStandIssueControlCauseService;
/**
* 分页查询
* @param sarStandIssueControlCausePage:筛选、分页信息
* @return ResponseMessage<IPage<SarStandIssueControlCause>>
*/
@ApiOperation("分页查询")
@GetMapping
public ResponseMessage<IPage<SarStandIssueControlCause>> getSarStandIssueControlCausePage(SarStandIssueControlCausePage sarStandIssueControlCausePage){
IPage<SarStandIssueControlCause> sarStandIssueControlCauseIPage=sarStandIssueControlCauseService.getSarStandIssueControlCausePage(sarStandIssueControlCausePage);
return Result.success(sarStandIssueControlCauseIPage);
}
/**
* 分页查询历史数据
* @param sarStandIssueControlCausePage:筛选、分页信息
* @return ResponseMessage<IPage<SarStandUnqualified>>
*/
@ApiOperation("分页查询历史数据")
@GetMapping("/history")
public ResponseMessage<IPage<SarStandIssueControlCause>> getSarStandIssueControlCauseHistoryPage(SarStandIssueControlCausePage sarStandIssueControlCausePage){
IPage<SarStandIssueControlCause> sarStandIssueControlCauseIPage=sarStandIssueControlCauseService.getSarStandIssueControlCauseHistoryPage(sarStandIssueControlCausePage);
return Result.success(sarStandIssueControlCauseIPage);
}
/**
* 批量关闭
* @param standIssueControlCauseListVO:事业部重大问题ID列表
* @return ResponseMessage<List<String>>:关闭失败的事业部重大问题ID列表
*/
@ApiOperation("批量关闭")
@PostMapping("/close")
public ResponseMessage<List<String>> closeSarStandIssueControlCause(@RequestBody StandIssueControlCauseListVO standIssueControlCauseListVO){
if(standIssueControlCauseListVO==null||standIssueControlCauseListVO.getIds().size()==0){
return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"未传入ID",null);
}
List<String> failIds=sarStandIssueControlCauseService.closeSarStandIssueControlCauseList(standIssueControlCauseListVO);
if(failIds==null||failIds.size()==0){
return Result.success(null);
}else {
return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"部分关闭失败",null);
}
}
@ApiOperation("导出Excel表")
@GetMapping(value = "/exportStandUnqulifiedExcel")
public void exportStandardsInfoExcel(StandIssueControlCauseExcelVO standIssueControlCauseExcelVO, HttpServletResponse response) throws Exception {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
if(standIssueControlCauseExcelVO.getExportName()==null){
standIssueControlCauseExcelVO.setExportName("事业部重点问题项管控");
}
String fileName = URLEncoder.encode(standIssueControlCauseExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
List<SarStandIssueControlCause> data=sarStandIssueControlCauseService.getStandIssueControlCauseExcelData(standIssueControlCauseExcelVO);
// 这里需要设置不关闭流
EasyExcel.write(response.getOutputStream(), SarStandIssueControlCause.class).autoCloseStream(Boolean.FALSE).sheet("sheet1")
.doWrite(data);
} catch (Exception e) {
System.out.println(e);
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().println(JSON.toJSONString(Result.error()));
}
}
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarStandIssueControlCause.dao;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author super_liu
* @since 2021-06-16
*/
public interface SarStandIssueControlCauseDao extends BaseMapper<SarStandIssueControlCause> {
}
@@ -0,0 +1,116 @@
package com.adc.da.slrs.sarStandIssueControlCause.entity;
import com.adc.da.base.entity.BaseEntity;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import com.adc.da.slrs.sarStandUnqualified.utils.TimestampConverter;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author super_liu
* @since 2021-06-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="SarStandIssueControlCause对象", description="")
public class SarStandIssueControlCause extends BaseEntity {
private static final long serialVersionUID = 1L;
@ExcelProperty("创建部门")
@ApiModelProperty(value = "创建部门")
@TableField("CREATE_DEPT_ID")
private String createDeptId;
@ExcelProperty("创建人")
@ApiModelProperty(value = "创建人")
@TableField("CREATE_BY_ID")
private String createById;
@ExcelProperty(value = "创建时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private Timestamp createTime;
@ExcelProperty("关闭状态")
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
@TableField("CLOSE_STATE")
private Integer closeState;
@ExcelIgnore
@ApiModelProperty(value = "实际关闭时间")
@TableField("ACTUAL_CLOSE_TIME")
private Timestamp actualCloseTime;
@ExcelProperty(value = "要求关闭时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "要求关闭时间")
@TableField("REQUIRE_CLOSE_TIME")
private Timestamp requireCloseTime;
@ExcelProperty("质量工程师")
@ApiModelProperty(value = "质量工程师")
@TableField("QA_ENGINEER")
private String qaEngineer;
@ExcelProperty("认证工程师")
@ApiModelProperty(value = "认证工程师")
@TableField("AUTH_ENGINEER")
private String authEngineer;
@ExcelProperty("责任工程师")
@ApiModelProperty(value = "责任工程师")
@TableField("DUTY_ENGINEER")
private String dutyEngineer;
@ExcelProperty("责任部门")
@ApiModelProperty(value = "责任部门")
@TableField("RESPONSIBLE_UNIT")
private String responsibleUnit;
@ExcelProperty("项目名称")
@ApiModelProperty(value = "项目名称")
@TableField("PRODUCT_NAME")
private String productName;
@ExcelProperty("产品线")
@ApiModelProperty(value = "产品线")
@TableField("PRODUCT_LINE")
private String productLine;
@ExcelProperty("当前节点")
@ApiModelProperty(value = "当前节点")
@TableField("CURRENT_NODE")
private String currentNode;
@ExcelProperty("标准名称")
@ApiModelProperty(value = "标准名称")
@TableField("STAND_NAME")
private String standName;
@ExcelProperty("标准编号")
@ApiModelProperty(value = "标准编号")
@TableField("STAND_ID")
private String standId;
@ExcelIgnore
@ApiModelProperty(value = "主键")
@TableId("ID")
private String id;
}
@@ -0,0 +1,69 @@
package com.adc.da.slrs.sarStandIssueControlCause.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Timestamp;
@Data
@ApiModel(value="SarStandIssueControlCausePage对象", description="")
public class SarStandIssueControlCausePage{
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "创建部门")
private String createDeptId;
@ApiModelProperty(value = "创建人")
private String createById;
@ApiModelProperty(value = "创建时间")
private Timestamp createTime;
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
private Integer closeState;
@ApiModelProperty(value = "实际关闭时间")
private Timestamp actualCloseTime;
@ApiModelProperty(value = "要求关闭时间")
private Timestamp requireCloseTime;
@ApiModelProperty(value = "质量工程师")
private String qaEngineer;
@ApiModelProperty(value = "认证工程师")
private String authEngineer;
@ApiModelProperty(value = "责任工程师")
private String dutyEngineer;
@ApiModelProperty(value = "责任部门")
private String responsibleUnit;
@ApiModelProperty(value = "项目名称")
private String productName;
@ApiModelProperty(value = "产品线")
private String productLine;
@ApiModelProperty(value = "当前节点")
private String currentNode;
@ApiModelProperty(value = "标准名称")
private String standName;
@ApiModelProperty(value = "标准编号")
private String standId;
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty("当前页")
private Integer current;
@ApiModelProperty("每页条数")
private Integer size;
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarStandIssueControlCause.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(description = "ExcelVO类")
public class StandIssueControlCauseExcelVO {
@ApiModelProperty("文件名")
String exportName;
@ApiModelProperty("导出的ID列表")
List<String> ids;
}
@@ -0,0 +1,12 @@
package com.adc.da.slrs.sarStandIssueControlCause.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class StandIssueControlCauseListVO {
@ApiModelProperty("ID列表")
private List<String> Ids;
}
@@ -0,0 +1,49 @@
package com.adc.da.slrs.sarStandIssueControlCause.service;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author super_liu
* @since 2021-06-16
*/
public interface ISarStandIssueControlCauseService extends IService<SarStandIssueControlCause> {
/**
* 分页查询
* @param sarStandIssueControlCausePage:筛选信息、分页信息
* @return IPage<SarStandIssueControlCause>
*/
IPage<SarStandIssueControlCause> getSarStandIssueControlCausePage(SarStandIssueControlCausePage sarStandIssueControlCausePage);
/**
* 分页查询历史数据
* @param sarStandIssueControlCausePage:筛选信息、分页信息
* @return IPage<SarStandIssueControlCause>
*/
IPage<SarStandIssueControlCause> getSarStandIssueControlCauseHistoryPage(SarStandIssueControlCausePage sarStandIssueControlCausePage);
/**
* 批量关闭
* @param standIssueControlCauseListVO:问题ID列表
* @return List<String>:关闭失败的ID列表
*/
List<String> closeSarStandIssueControlCauseList(StandIssueControlCauseListVO standIssueControlCauseListVO);
/**
* 获得excel导出的数据
* @param standIssueControlCauseExcelVO :筛选ID
* @return List<SarStandIssueControlCause>
*/
List<SarStandIssueControlCause> getStandIssueControlCauseExcelData(StandIssueControlCauseExcelVO standIssueControlCauseExcelVO);
}
@@ -0,0 +1,145 @@
package com.adc.da.slrs.sarStandIssueControlCause.service.impl;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import com.adc.da.slrs.sarStandIssueControlCause.dao.SarStandIssueControlCauseDao;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO;
import com.adc.da.slrs.sarStandIssueControlCause.service.ISarStandIssueControlCauseService;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author super_liu
* @since 2021-06-16
*/
@Service
public class SarStandIssueControlCauseServiceImpl extends ServiceImpl<SarStandIssueControlCauseDao, SarStandIssueControlCause> implements ISarStandIssueControlCauseService {
@Autowired
private SarStandIssueControlCauseDao sarStandIssueControlCauseDao;
/**
* 分页查询
* @param sarStandIssueControlCausePage:筛选信息、分页信息
* @return SarStandIssueControlCause
*/
@Override
public IPage<SarStandIssueControlCause> getSarStandIssueControlCausePage(SarStandIssueControlCausePage sarStandIssueControlCausePage) {
QueryWrapper<SarStandIssueControlCause> sarStandIssueControlCauseQueryWrapper=new QueryWrapper<>();
//仅查询未关闭的
sarStandIssueControlCauseQueryWrapper.eq("close_state",1);
if(sarStandIssueControlCausePage.getStandId()!=null){
sarStandIssueControlCauseQueryWrapper.eq("stand_id",sarStandIssueControlCausePage.getStandId()).or().like("stand_name","%"+sarStandIssueControlCausePage.getStandName()+"%");
}
if(sarStandIssueControlCausePage.getProductName()!=null){
sarStandIssueControlCauseQueryWrapper.like("product_name","%"+sarStandIssueControlCausePage.getProductName()+"%");
}
if(sarStandIssueControlCausePage.getResponsibleUnit()!=null){
sarStandIssueControlCauseQueryWrapper.eq("responsible_unit",sarStandIssueControlCausePage.getResponsibleUnit());
}
Page<SarStandIssueControlCause> standIssueControlCausePage=new Page<>();
//判断前端是否提供页码和每页条数
if(sarStandIssueControlCausePage.getCurrent()!=null&&sarStandIssueControlCausePage.getSize()!=null){
standIssueControlCausePage=new Page<>(sarStandIssueControlCausePage.getCurrent(),sarStandIssueControlCausePage.getSize());
}
return sarStandIssueControlCauseDao.selectPage(standIssueControlCausePage,sarStandIssueControlCauseQueryWrapper);
}
/**
* 分页查询历史数据
* @param sarStandIssueControlCausePage:筛选信息、分页信息
* @return IPage<SarStandIssueControlCause>
*/
@Override
public IPage<SarStandIssueControlCause> getSarStandIssueControlCauseHistoryPage(SarStandIssueControlCausePage sarStandIssueControlCausePage) {
QueryWrapper<SarStandIssueControlCause> sarStandIssueControlCauseQueryWrapper=new QueryWrapper<>();
//仅查询关闭的
sarStandIssueControlCauseQueryWrapper.eq("close_state",2);
if(sarStandIssueControlCausePage.getStandId()!=null){
sarStandIssueControlCauseQueryWrapper.eq("stand_id",sarStandIssueControlCausePage.getStandId()).or().like("stand_name","%"+sarStandIssueControlCausePage.getStandName()+"%");
}
if(sarStandIssueControlCausePage.getProductName()!=null){
sarStandIssueControlCauseQueryWrapper.like("product_name","%"+sarStandIssueControlCausePage.getProductName()+"%");
}
if(sarStandIssueControlCausePage.getResponsibleUnit()!=null){
sarStandIssueControlCauseQueryWrapper.eq("responsible_unit",sarStandIssueControlCausePage.getResponsibleUnit());
}
Page<SarStandIssueControlCause> standIssueControlCausePage=new Page<>();
//判断前端是否提供页码和每页条数
if(sarStandIssueControlCausePage.getCurrent()!=null&&sarStandIssueControlCausePage.getSize()!=null){
standIssueControlCausePage=new Page<>(sarStandIssueControlCausePage.getCurrent(),sarStandIssueControlCausePage.getSize());
}
return sarStandIssueControlCauseDao.selectPage(standIssueControlCausePage,sarStandIssueControlCauseQueryWrapper);
}
/**
* 批量关闭
* @param standIssueControlCauseListVO:问题ID列表
* @return List<String>:关闭失败的ID列表
*/
@Override
public List<String> closeSarStandIssueControlCauseList(StandIssueControlCauseListVO standIssueControlCauseListVO) {
List<String> failIds=new ArrayList<>();
for(String id:standIssueControlCauseListVO.getIds()){
boolean success=closeSarStandIssueControlCause(id);
if(!success){
failIds.add(id);
}
}
return failIds;
}
/**
* 获得excel导出的数据
* @param standIssueControlCauseExcelVO :筛选ID
* @return List<SarStandIssueControlCause>
*/
@Override
public List<SarStandIssueControlCause> getStandIssueControlCauseExcelData(StandIssueControlCauseExcelVO standIssueControlCauseExcelVO) {
QueryWrapper<SarStandIssueControlCause> sarStandIssueControlCauseQueryWrapper=new QueryWrapper<>();
sarStandIssueControlCauseQueryWrapper.eq("close_state",1);
if(standIssueControlCauseExcelVO.getIds()!=null&&standIssueControlCauseExcelVO.getIds().size()>0){
sarStandIssueControlCauseQueryWrapper.in("id",standIssueControlCauseExcelVO.getIds());
}
return sarStandIssueControlCauseDao.selectList(sarStandIssueControlCauseQueryWrapper);
}
/**
* 问题关闭
* @param standIssueControlCauseIdID
* @return boolean
*/
private boolean closeSarStandIssueControlCause(String standIssueControlCauseId){
SarStandIssueControlCause sarStandIssueControlCause=sarStandIssueControlCauseDao.selectById(standIssueControlCauseId);
//判断是否存在
if(sarStandIssueControlCause==null){
return false;
}
//判断是否已关闭
if(sarStandIssueControlCause.getCloseState()==2){
return false;
}
sarStandIssueControlCause.setCloseState(2);
sarStandIssueControlCause.setActualCloseTime(new Timestamp(new Date().getTime()));
sarStandIssueControlCauseDao.updateById(sarStandIssueControlCause);
return true;
}
}
@@ -0,0 +1,122 @@
package com.adc.da.slrs.sarStandIssueControlProduct.controller;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.ResponseMessageCodeEnum;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO;
import com.adc.da.slrs.sarStandIssueControlCause.service.ISarStandIssueControlCauseService;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProductPage;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductListVO;
import com.adc.da.slrs.sarStandIssueControlProduct.service.ISarStandIssueControlProductService;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified;
import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
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.sarStandIssueControlProduct.entity.SarStandIssueControlProduct;
import io.swagger.annotations.Api;
import com.adc.da.base.web.BaseController;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zxy
* @since 2021-06-17
*/
@RestController
@Api(tags = "|重点问题项管控-产品规划部|")
@RequestMapping("/sarStandIssueControlProduct/sar-stand-issue-control-product")
public class SarStandIssueControlProductController extends BaseController<SarStandIssueControlProduct> {
private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class);
@Autowired
private ISarStandIssueControlProductService sarStandIssueControlProductService;
/**
* 分页查询
* @param sarStandIssueControlProductPage:筛选、分页信息
* @return ResponseMessage<IPage<SarStandIssueControlCause>>
*/
@ApiOperation("分页查询")
@GetMapping
public ResponseMessage<IPage<SarStandIssueControlProduct>> getSarStandIssueControlProductPage(SarStandIssueControlProductPage sarStandIssueControlProductPage){
IPage<SarStandIssueControlProduct> sarStandIssueControlCauseIPage=sarStandIssueControlProductService.getSarStandIssueControlProductPage(sarStandIssueControlProductPage);
return Result.success(sarStandIssueControlCauseIPage);
}
/**
* 分页查询历史数据
* @param sarStandIssueControlProductPage:筛选、分页信息
* @return ResponseMessage<IPage<SarStandUnqualified>>
*/
@ApiOperation("分页查询历史数据")
@GetMapping("/history")
public ResponseMessage<IPage<SarStandIssueControlProduct>> getSarStandIssueControlProductHistoryPage(SarStandIssueControlProductPage sarStandIssueControlProductPage){
IPage<SarStandIssueControlProduct> sarStandIssueControlProductIPage=sarStandIssueControlProductService.getSarStandIssueControlProductHistoryPage(sarStandIssueControlProductPage);
return Result.success(sarStandIssueControlProductIPage);
}
/**
* 批量关闭
* @param standIssueControlProductListVO:重大问题ID列表
* @return ResponseMessage<List<String>>:关闭失败的重大问题ID列表
*/
@ApiOperation("批量关闭")
@PostMapping("/close")
public ResponseMessage<List<String>> closeSarStandIssueControlCause(@RequestBody StandIssueControlProductListVO standIssueControlProductListVO){
if(standIssueControlProductListVO==null||standIssueControlProductListVO.getIds().size()==0){
return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"未传入ID",null);
}
List<String> failIds=sarStandIssueControlProductService.closeSarStandIssueControlProductList(standIssueControlProductListVO);
if(failIds==null||failIds.size()==0){
return Result.success(null);
}else {
return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"部分关闭失败",null);
}
}
@ApiOperation("导出Excel表")
@GetMapping(value = "/exportStandUnqulifiedExcel")
public void exportStandardsInfoExcel(StandIssueControlProductExcelVO standIssueControlProductExcelVO, HttpServletResponse response) throws Exception {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
if(standIssueControlProductExcelVO.getExportName()==null){
standIssueControlProductExcelVO.setExportName("产品规划部重点问题项管控");
}
String fileName = URLEncoder.encode(standIssueControlProductExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
List<SarStandIssueControlProduct> data=sarStandIssueControlProductService.getStandIssueControlProductExcelData(standIssueControlProductExcelVO);
// 这里需要设置不关闭流
EasyExcel.write(response.getOutputStream(), SarStandIssueControlProduct.class).autoCloseStream(Boolean.FALSE).sheet("sheet1")
.doWrite(data);
} catch (Exception e) {
System.out.println(e);
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().println(JSON.toJSONString(Result.error()));
}
}
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarStandIssueControlProduct.dao;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author super_liu
* @since 2021-06-17
*/
public interface SarStandIssueControlProductDao extends BaseMapper<SarStandIssueControlProduct> {
}
@@ -0,0 +1,121 @@
package com.adc.da.slrs.sarStandIssueControlProduct.entity;
import com.adc.da.base.entity.BaseEntity;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import com.adc.da.slrs.sarStandUnqualified.utils.TimestampConverter;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author super_liu
* @since 2021-06-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="SarStandIssueControlProduct对象", description="产品规划部重大问题管控")
public class SarStandIssueControlProduct extends BaseEntity {
private static final long serialVersionUID = 1L;
@ExcelProperty("创建部门")
@ApiModelProperty(value = "创建部门")
@TableField("CREATE_DEPT_ID")
private String createDeptId;
@ExcelProperty("创建人")
@ApiModelProperty(value = "创建人")
@TableField("CREATE_BY_ID")
private String createById;
@ExcelProperty(value = "创建时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private Timestamp createTime;
@ExcelIgnore
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
@TableField("CLOSE_STATE")
private Integer closeState;
@ExcelIgnore
@ApiModelProperty(value = "实际关闭时间")
@TableField("ACTUAL_CLOSE_TIME")
private Timestamp actualCloseTime;
@ExcelProperty(value = "要求关闭时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "要求关闭时间")
@TableField("REQUIRE_CLOSE_TIME")
private Timestamp requireCloseTime;
@ExcelProperty("平台")
@ApiModelProperty(value = "平台")
@TableField("PLATFORM")
private String platform;
@ExcelProperty("业务")
@ApiModelProperty(value = "业务")
@TableField("BUSINESS")
private String business;
@ExcelProperty("符合性状态")
@ApiModelProperty(value = "符合性状态")
@TableField("CONFORMANCE_STATE")
private String conformanceState;
@ExcelProperty("责任工程师")
@ApiModelProperty(value = "责任工程师")
@TableField("DUTY_ENGINEER")
private String dutyEngineer;
@ExcelProperty("责任部门")
@ApiModelProperty(value = "责任部门")
@TableField("RESPONSIBLE_UNIT")
private String responsibleUnit;
@ExcelProperty("实施要求")
@ApiModelProperty(value = "实施要求")
@TableField("IMPLEMENT_DEMAND")
private String implementDemand;
@ExcelProperty(value = "实施时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "实施时间")
@TableField("IMPLEMENT_TIME")
private Timestamp implementTime;
@ExcelProperty("当前节点")
@ApiModelProperty(value = "当前节点")
@TableField("CURRENT_NODE")
private String currentNode;
@ExcelProperty(value = "标准名称/政策名称")
@ApiModelProperty(value = "标准名称/政策名称")
@TableField("STAND_NAME")
private String standName;
@ExcelProperty("标准编号/政策编号")
@ApiModelProperty(value = "标准编号/政策编号")
@TableField("STAND_ID")
private String standId;
@ExcelIgnore
@ApiModelProperty(value = "主键")
@TableId("ID")
private String id;
}
@@ -0,0 +1,91 @@
package com.adc.da.slrs.sarStandIssueControlProduct.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Timestamp;
import java.time.LocalDateTime;
@Data
@ApiModel(description = "产品规划部重大问题管控分页")
public class SarStandIssueControlProductPage {
@ApiModelProperty(value = "创建部门")
@TableField("CREATE_DEPT_ID")
private String createDeptId;
@ApiModelProperty(value = "创建人")
@TableField("CREATE_BY_ID")
private String createById;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private Timestamp createTime;
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
@TableField("CLOSE_STATE")
private Integer closeState;
@ApiModelProperty(value = "实际关闭时间")
@TableField("ACTUAL_CLOSE_TIME")
private Timestamp actualCloseTime;
@ApiModelProperty(value = "要求关闭时间")
@TableField("REQUIRE_CLOSE_TIME")
private Timestamp requireCloseTime;
@ApiModelProperty(value = "平台")
@TableField("PLANTFORM")
private String plantform;
@ApiModelProperty(value = "业务")
@TableField("BUSINESS")
private String business;
@ApiModelProperty(value = "符合性状态")
@TableField("CONFORMANCE_STATE")
private String conformanceState;
@ApiModelProperty(value = "责任工程师")
@TableField("DUTY_ENGINEER")
private String dutyEngineer;
@ApiModelProperty(value = "责任部门")
@TableField("RESPONSIBLE_UNIT")
private String responsibleUnit;
@ApiModelProperty(value = "实施要求")
@TableField("IMPLEMEN_DEMAND")
private String implemenDemand;
@ApiModelProperty(value = "实施时间")
@TableField("IMPLEMENT_TIME")
private Timestamp implementTime;
@ApiModelProperty(value = "当前节点")
@TableField("CURRENT_NODE")
private String currentNode;
@ApiModelProperty(value = "标准名称/政策名称")
@TableField("STAND_NAME")
private String standName;
@ApiModelProperty(value = "标准编号/政策编号")
@TableField("STAND_ID")
private String standId;
@ApiModelProperty(value = "主键")
@TableId("ID")
private String id;
@ApiModelProperty("当前页")
private Integer current;
@ApiModelProperty("每页条数")
private Integer size;
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarStandIssueControlProduct.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(description = "ExcelVO类")
public class StandIssueControlProductExcelVO {
@ApiModelProperty("文件名")
String exportName;
@ApiModelProperty("导出的ID列表")
List<String> ids;
}
@@ -0,0 +1,12 @@
package com.adc.da.slrs.sarStandIssueControlProduct.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class StandIssueControlProductListVO {
@ApiModelProperty("ID列表")
private List<String> Ids;
}
@@ -0,0 +1,51 @@
package com.adc.da.slrs.sarStandIssueControlProduct.service;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProductPage;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductListVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author zxy
* @since 2021-06-17
*/
public interface ISarStandIssueControlProductService extends IService<SarStandIssueControlProduct> {
/**
* 分页查询
* @param sarStandIssueControlProductPage:筛选、分页信息
* @return IPage<SarStandIssueControlProduct>
*/
IPage<SarStandIssueControlProduct> getSarStandIssueControlProductPage(SarStandIssueControlProductPage sarStandIssueControlProductPage);
/**
* 分页查询
* @param sarStandIssueControlProductPage:筛选、分页信息
* @return IPage<SarStandIssueControlProduct>
*/
IPage<SarStandIssueControlProduct> getSarStandIssueControlProductHistoryPage(SarStandIssueControlProductPage sarStandIssueControlProductPage);
/**
* 批量关闭
* @param standIssueControlProductListVO:关闭ID列表
* @return List<String>:关闭失败的ID
*/
List<String> closeSarStandIssueControlProductList(StandIssueControlProductListVO standIssueControlProductListVO);
/**
* 获得导出excel的数据
* @param standIssueControlProductExcelVO:导出的数据ID
* @return List<SarStandIssueControlProduct>
*/
List<SarStandIssueControlProduct> getStandIssueControlProductExcelData(StandIssueControlProductExcelVO standIssueControlProductExcelVO);
}
@@ -0,0 +1,135 @@
package com.adc.da.slrs.sarStandIssueControlProduct.service.impl;
import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct;
import com.adc.da.slrs.sarStandIssueControlProduct.dao.SarStandIssueControlProductDao;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProductPage;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO;
import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductListVO;
import com.adc.da.slrs.sarStandIssueControlProduct.service.ISarStandIssueControlProductService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author super_liu
* @since 2021-06-17
*/
@Service
public class SarStandIssueControlProductServiceImpl extends ServiceImpl<SarStandIssueControlProductDao, SarStandIssueControlProduct> implements ISarStandIssueControlProductService {
@Autowired
private SarStandIssueControlProductDao sarStandIssueControlProductDao;
/**
* 分页查询
* @param sarStandIssueControlProductPage:筛选、分页信息
* @return IPage<SarStandIssueControlProduct>
*/
@Override
public IPage<SarStandIssueControlProduct> getSarStandIssueControlProductPage(SarStandIssueControlProductPage sarStandIssueControlProductPage) {
QueryWrapper<SarStandIssueControlProduct> sarStandIssueControlProductQueryWrapper=new QueryWrapper<>();
//仅查询未关闭的
sarStandIssueControlProductQueryWrapper.eq("close_state",1);
if(sarStandIssueControlProductPage.getStandId()!=null){
sarStandIssueControlProductQueryWrapper.eq("stand_id",sarStandIssueControlProductPage.getStandId()).or().like("stand_name","%"+sarStandIssueControlProductPage.getStandName()+"%");
}
if(sarStandIssueControlProductPage.getResponsibleUnit()!=null){
sarStandIssueControlProductQueryWrapper.eq("responsible_unit",sarStandIssueControlProductPage.getResponsibleUnit());
}
Page<SarStandIssueControlProduct> standIssueControlCausePage=new Page<>();
//判断前端是否提供页码和每页条数
if(sarStandIssueControlProductPage.getCurrent()!=null&&sarStandIssueControlProductPage.getSize()!=null){
standIssueControlCausePage=new Page<>(sarStandIssueControlProductPage.getCurrent(),sarStandIssueControlProductPage.getSize());
}
return sarStandIssueControlProductDao.selectPage(standIssueControlCausePage,sarStandIssueControlProductQueryWrapper);
}
/**
* 分页查询
* @param sarStandIssueControlProductPage:筛选、分页信息
* @return IPage<SarStandIssueControlProduct>
*/
@Override
public IPage<SarStandIssueControlProduct> getSarStandIssueControlProductHistoryPage(SarStandIssueControlProductPage sarStandIssueControlProductPage) {
QueryWrapper<SarStandIssueControlProduct> sarStandIssueControlProductQueryWrapper=new QueryWrapper<>();
//仅查询关闭的
sarStandIssueControlProductQueryWrapper.eq("close_state",2);
if(sarStandIssueControlProductPage.getStandId()!=null){
sarStandIssueControlProductQueryWrapper.eq("stand_id",sarStandIssueControlProductPage.getStandId()).or().like("stand_name","%"+sarStandIssueControlProductPage.getStandName()+"%");
}
if(sarStandIssueControlProductPage.getResponsibleUnit()!=null){
sarStandIssueControlProductQueryWrapper.eq("responsible_unit",sarStandIssueControlProductPage.getResponsibleUnit());
}
Page<SarStandIssueControlProduct> standIssueControlCausePage=new Page<>();
//判断前端是否提供页码和每页条数
if(sarStandIssueControlProductPage.getCurrent()!=null&&sarStandIssueControlProductPage.getSize()!=null){
standIssueControlCausePage=new Page<>(sarStandIssueControlProductPage.getCurrent(),sarStandIssueControlProductPage.getSize());
}
return sarStandIssueControlProductDao.selectPage(standIssueControlCausePage,sarStandIssueControlProductQueryWrapper);
}
/**
* 批量关闭
* @param standIssueControlProductListVO:关闭ID列表
* @return List<String>:关闭失败的ID
*/
@Override
public List<String> closeSarStandIssueControlProductList(StandIssueControlProductListVO standIssueControlProductListVO) {
List<String> failIds=new ArrayList<>();
for(String id:standIssueControlProductListVO.getIds()){
boolean success=closeSarStandIssueControlProduct(id);
if(!success){
failIds.add(id);
}
}
return failIds;
}
/**
* 获得导出excel的数据
* @param standIssueControlProductExcelVO:导出的数据ID
* @return List<SarStandIssueControlProduct>
*/
@Override
public List<SarStandIssueControlProduct> getStandIssueControlProductExcelData(StandIssueControlProductExcelVO standIssueControlProductExcelVO) {
QueryWrapper<SarStandIssueControlProduct> sarStandIssueControlProductQueryWrapper=new QueryWrapper<>();
sarStandIssueControlProductQueryWrapper.eq("close_state",1);
if(standIssueControlProductExcelVO.getIds()!=null&&standIssueControlProductExcelVO.getIds().size()>0){
sarStandIssueControlProductQueryWrapper.in("id",standIssueControlProductExcelVO.getIds());
}
return sarStandIssueControlProductDao.selectList(sarStandIssueControlProductQueryWrapper);
}
/**
* 问题关闭
* @param standIssueControlCauseIdID
* @return boolean
*/
private boolean closeSarStandIssueControlProduct(String standIssueControlCauseId){
SarStandIssueControlProduct sarStandIssueControlProduct=sarStandIssueControlProductDao.selectById(standIssueControlCauseId);
//判断是否存在
if(sarStandIssueControlProduct==null){
return false;
}
//判断是否已关闭
if(sarStandIssueControlProduct.getCloseState()==2){
return false;
}
sarStandIssueControlProduct.setCloseState(2);
sarStandIssueControlProduct.setActualCloseTime(new Timestamp(new Date().getTime()));
sarStandIssueControlProductDao.updateById(sarStandIssueControlProduct);
return true;
}
}
@@ -2,17 +2,7 @@ package com.adc.da.slrs.sarStandProjectLibrary.service;
import com.adc.da.slrs.sarStandProjectLibrary.entity.SarStandProjectLibrary;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author super_liu
* @since 2021-06-02
*/
public interface ISarStandProjectLibraryService extends IService<SarStandProjectLibrary> {
public interface ISarStandProjectLibraryService {
IPage<SarStandProjectLibrary> queryMaintenanceProject(int current, int pageSize);
}
@@ -1,15 +1,42 @@
package com.adc.da.slrs.sarStandUnqualified.controller;
import com.adc.da.common.ReadExcel;
import com.adc.da.exception.AdcDaBaseException;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.ResponseMessageCodeEnum;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO;
import com.adc.da.slrs.sarStandUnqualified.service.ISarStandUnqualifiedService;
import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController;
import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo;
import com.adc.da.slrs.sarStandardsInfo.entity.StandardsInfoExcelVO;
import com.adc.da.utils.util.StandExportUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
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.RequestMapping;
import org.springframework.web.bind.annotation.*;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
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.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 前端控制器
@@ -22,8 +49,79 @@ import com.adc.da.base.web.BaseController;
@Api(tags = "未符合项整改")
@RequestMapping("/sarStandUnqualified/sar-stand-unqualified")
public class SarStandUnqualifiedController extends BaseController<SarStandUnqualified> {
private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class);
@Autowired
private ISarStandUnqualifiedService sarStandUnqualifiedService;
/**
* 分页查询未符合项
* @param sarStandUnqualifiedPage:筛选、分页信息
* @return ResponseMessage<IPage<SarStandUnqualified>>
*/
@ApiOperation("分页查询未符合项")
@GetMapping
public ResponseMessage<IPage<SarStandUnqualified>> getSarStandUnqualifiedPage(SarStandUnqualifiedPage sarStandUnqualifiedPage){
IPage<SarStandUnqualified> sarStandUnqualifiedIPage=sarStandUnqualifiedService.getSarStandUnqualifiedPage(sarStandUnqualifiedPage);
return Result.success(sarStandUnqualifiedIPage);
}
/**
* 分页查询未符合项历史数据
* @param sarStandUnqualifiedPage:筛选、分页信息
* @return ResponseMessage<IPage<SarStandUnqualified>>
*/
@ApiOperation("分页查询未符合项历史数据")
@GetMapping("/history")
public ResponseMessage<IPage<SarStandUnqualified>> getSarStandUnqualifiedHistoryPage(SarStandUnqualifiedPage sarStandUnqualifiedPage){
IPage<SarStandUnqualified> sarStandUnqualifiedIPage=sarStandUnqualifiedService.getSarStandUnqualifiedHistoryPage(sarStandUnqualifiedPage);
return Result.success(sarStandUnqualifiedIPage);
}
/**
* 批量关闭未符合项
* @param standUnqualifiedListVO:未符合项ID列表
* @return ResponseMessage<List<String>>:关闭失败的未符合项ID
*/
@ApiOperation("批量关闭未符合项")
@PostMapping("/close")
public ResponseMessage<List<String>> closeSarStandUnqualified(@RequestBody StandUnqualifiedListVO standUnqualifiedListVO){
if(standUnqualifiedListVO==null||standUnqualifiedListVO.getIds().size()==0){
return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"未传入未符合项ID",null);
}
List<String> failIds=sarStandUnqualifiedService.closeSarStandUnqualifiedList(standUnqualifiedListVO);
if(failIds==null||failIds.size()==0){
return Result.success(null);
}else {
return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"部分未符合项关闭失败",null);
}
}
@ApiOperation("导出Excel表")
@GetMapping(value = "/exportStandUnqulifiedExcel")
public void exportStandardsInfoExcel(StandUnqualifiedExcelVO standUnqualifiedExcelVO, HttpServletResponse response) throws Exception {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
if(standUnqualifiedExcelVO.getExportName()==null){
standUnqualifiedExcelVO.setExportName("未符合项信息");
}
String fileName = URLEncoder.encode(standUnqualifiedExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
List<SarStandUnqualified> data=sarStandUnqualifiedService.getStandUnqualifiedExcelData(standUnqualifiedExcelVO);
// 这里需要设置不关闭流
EasyExcel.write(response.getOutputStream(), SarStandUnqualified.class).autoCloseStream(Boolean.FALSE).sheet("sheet1")
.doWrite(data);
} catch (Exception e) {
System.out.println(e);
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().println(JSON.toJSONString(Result.error()));
}
}
}
@@ -1,7 +1,13 @@
package com.adc.da.slrs.sarStandUnqualified.entity;
import com.adc.da.base.entity.BaseEntity;
import java.time.LocalDateTime;
import java.sql.Timestamp;
import com.adc.da.slrs.sarStandUnqualified.utils.ProductTypeConverter;
import com.adc.da.slrs.sarStandUnqualified.utils.TimestampConverter;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
@@ -26,74 +32,92 @@ public class SarStandUnqualified extends BaseEntity {
private static final long serialVersionUID = 1L;
@ExcelProperty("创建部门")
@ApiModelProperty(value = "创建部门")
@TableField("CREATE_DEPT_ID")
private String createDeptId;
@ExcelProperty("创建人")
@ApiModelProperty(value = "创建人")
@TableField("CREATE_BY_ID")
private String createById;
@ExcelProperty(value = "创建时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
private Timestamp createTime;
@ExcelIgnore
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
@TableField("CLOSE_STATE")
private Integer closeState;
@ExcelIgnore
@ApiModelProperty(value = "实际关闭时间")
@TableField("ACTUAL_CLOSE_TIME")
private LocalDateTime actualCloseTime;
private Timestamp actualCloseTime;
@ExcelProperty(value = "计划关闭时间",converter = TimestampConverter.class)
@ApiModelProperty(value = "计划关闭时间")
@TableField("PLAN_CLOSE_TIME")
private LocalDateTime planCloseTime;
private Timestamp planCloseTime;
@ExcelProperty("质量工程师")
@ApiModelProperty(value = "质量工程师")
@TableField("QA_ENGINEER")
private String qaEngineer;
@ExcelProperty("认证工程师")
@ApiModelProperty(value = "认证工程师")
@TableField("AUTH_ENGINEER")
private String authEngineer;
@ExcelProperty("责任工程师")
@ApiModelProperty(value = "责任工程师")
@TableField("DUTY_ENGINEER")
private String dutyEngineer;
@ExcelProperty("责任部门")
@ApiModelProperty(value = "责任部门")
@TableField("RESPONSIBLE_UNIT")
private String responsibleUnit;
@ExcelProperty("项目名称")
@ApiModelProperty(value = "项目名称")
@TableField("PRODUCT_NAME")
private String productName;
@ExcelProperty("产品线")
@ApiModelProperty(value = "产品线")
@TableField("PRODUCT_LINE")
private String productLine;
@ExcelProperty(value = "产品类型",converter = ProductTypeConverter.class)
@ApiModelProperty(value = "产品类型(research为在研产品,product为在产产品)")
@TableField("PRODUCT_TYPE")
private String productType;
@ExcelProperty("条款名称")
@ApiModelProperty(value = "条款名称")
@TableField("ITEMS_NAME")
private String itemsName;
@ExcelProperty("条款号")
@ApiModelProperty(value = "条款号")
@TableField("ITEMS_NUM")
private String itemsNum;
@ExcelProperty("标准名称")
@ApiModelProperty(value = "标准名称")
@TableField("STAND_NAME")
private String standName;
@ExcelProperty("标准编号")
@ApiModelProperty(value = "标准ID")
@TableField("STAND_ID")
private String standId;
@ExcelIgnore
@ApiModelProperty(value = "主键")
@TableId("ID")
private String id;
@@ -0,0 +1,88 @@
package com.adc.da.slrs.sarStandUnqualified.entity;
import com.adc.da.base.entity.BaseEntity;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonBackReference;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author super_liu
* @since 2021-06-15
*/
@Data
@ApiModel(value="SarStandUnqualifiedPage对象", description="")
public class SarStandUnqualifiedPage {
@ApiModelProperty(value = "创建部门")
private String createDeptId;
@ApiModelProperty(value = "创建人")
private String createById;
@ApiModelProperty(value = "创建时间")
private Timestamp createTime;
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
private Integer closeState;
@ApiModelProperty(value = "实际关闭时间")
private Timestamp actualCloseTime;
@ApiModelProperty(value = "计划关闭时间")
private Timestamp planCloseTime;
@ApiModelProperty(value = "质量工程师")
private String qaEngineer;
@ApiModelProperty(value = "认证工程师")
private String authEngineer;
@ApiModelProperty(value = "责任工程师")
private String dutyEngineer;
@ApiModelProperty(value = "责任部门")
private String responsibleUnit;
@ApiModelProperty(value = "项目名称")
private String productName;
@ApiModelProperty(value = "产品线")
private String productLine;
@ApiModelProperty(value = "产品类型(research为在研产品,product为在产产品)")
private String productType;
@ApiModelProperty(value = "条款名称")
private String itemsName;
@ApiModelProperty(value = "条款号")
private String itemsNum;
@ApiModelProperty(value = "标准名称")
private String standName;
@ApiModelProperty(value = "标准ID")
private String standId;
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty("当前页")
private Integer current;
@ApiModelProperty("每页条数")
private Integer size;
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarStandUnqualified.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(description = "未符合项ExcelVO类")
public class StandUnqualifiedExcelVO {
@ApiModelProperty("文件名")
String exportName;
@ApiModelProperty("导出的未符合项ID列表")
List<String> ids;
}
@@ -0,0 +1,12 @@
package com.adc.da.slrs.sarStandUnqualified.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class StandUnqualifiedListVO {
@ApiModelProperty("未符合项ID列表")
private List<String> Ids;
}
@@ -1,8 +1,14 @@
package com.adc.da.slrs.sarStandUnqualified.service;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
@@ -13,4 +19,31 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISarStandUnqualifiedService extends IService<SarStandUnqualified> {
/**
* 分页查询未符合项
* @param sarStandUnqualifiedPage:筛选、分页信息
* @returnIPage<SarStandUnqualified>
*/
IPage<SarStandUnqualified> getSarStandUnqualifiedPage(SarStandUnqualifiedPage sarStandUnqualifiedPage);
/**
* 分页查询未符合项历史数据
* @param sarStandUnqualifiedPage:筛选、分页信息
* @returnIPage<SarStandUnqualified>
*/
IPage<SarStandUnqualified> getSarStandUnqualifiedHistoryPage(SarStandUnqualifiedPage sarStandUnqualifiedPage);
/**
* 批量关闭未符合项
* @param standUnqualifiedListVO :要关闭的未符合项目列表
* @return
*/
List<String> closeSarStandUnqualifiedList(StandUnqualifiedListVO standUnqualifiedListVO);
/**
* 获取导出excel的数据
* @param standUnqualifiedExcelVOids
* @return List<SarStandUnqualified>
*/
List<SarStandUnqualified> getStandUnqualifiedExcelData(StandUnqualifiedExcelVO standUnqualifiedExcelVO);
}
@@ -2,9 +2,23 @@ package com.adc.da.slrs.sarStandUnqualified.service.impl;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified;
import com.adc.da.slrs.sarStandUnqualified.dao.SarStandUnqualifiedDao;
import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO;
import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO;
import com.adc.da.slrs.sarStandUnqualified.service.ISarStandUnqualifiedService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
@@ -17,4 +31,109 @@ import org.springframework.stereotype.Service;
@Service
public class SarStandUnqualifiedServiceImpl extends ServiceImpl<SarStandUnqualifiedDao, SarStandUnqualified> implements ISarStandUnqualifiedService {
@Autowired
private SarStandUnqualifiedDao sarStandUnqualifiedDao;
/**
* 分页查询未符合项
* @param sarStandUnqualifiedPage:筛选、分页信息
* @returnIPage<SarStandUnqualified>
*/
@Override
public IPage<SarStandUnqualified> getSarStandUnqualifiedPage(SarStandUnqualifiedPage sarStandUnqualifiedPage) {
QueryWrapper<SarStandUnqualified> sarStandUnqualifiedQueryWrapper=new QueryWrapper<>();
//仅查询未关闭的
sarStandUnqualifiedQueryWrapper.eq("close_state",1);
if(sarStandUnqualifiedPage.getStandId()!=null){
sarStandUnqualifiedQueryWrapper.eq("stand_id",sarStandUnqualifiedPage.getStandId()).or().like("stand_name","%"+sarStandUnqualifiedPage.getStandName()+"%");
}
if(sarStandUnqualifiedPage.getProductName()!=null){
sarStandUnqualifiedQueryWrapper.like("product_name","%"+sarStandUnqualifiedPage.getProductName()+"%");
}
if(sarStandUnqualifiedPage.getResponsibleUnit()!=null){
sarStandUnqualifiedQueryWrapper.eq("responsible_unit",sarStandUnqualifiedPage.getResponsibleUnit());
}
Page<SarStandUnqualified> standUnqualifiedPage=new Page<>();
//判断前端是否提供页码和每页条数
if(sarStandUnqualifiedPage.getCurrent()!=null&&sarStandUnqualifiedPage.getSize()!=null){
standUnqualifiedPage=new Page<>(sarStandUnqualifiedPage.getCurrent(),sarStandUnqualifiedPage.getSize());
}
return sarStandUnqualifiedDao.selectPage(standUnqualifiedPage,sarStandUnqualifiedQueryWrapper);
}
/**
* 分页查询未符合项历史数据
* @param sarStandUnqualifiedPage:筛选、分页信息
* @returnIPage<SarStandUnqualified>
*/
@Override
public IPage<SarStandUnqualified> getSarStandUnqualifiedHistoryPage(SarStandUnqualifiedPage sarStandUnqualifiedPage) {
QueryWrapper<SarStandUnqualified> sarStandUnqualifiedQueryWrapper=new QueryWrapper<>();
//仅查询关闭的
sarStandUnqualifiedQueryWrapper.eq("close_state",2);
if(sarStandUnqualifiedPage.getStandId()!=null){
sarStandUnqualifiedQueryWrapper.eq("stand_id",sarStandUnqualifiedPage.getStandId()).or().like("stand_name","%"+sarStandUnqualifiedPage.getStandName()+"%");
}
if(sarStandUnqualifiedPage.getProductName()!=null){
sarStandUnqualifiedQueryWrapper.like("product_name","%"+sarStandUnqualifiedPage.getProductName()+"%");
}
if(sarStandUnqualifiedPage.getResponsibleUnit()!=null){
sarStandUnqualifiedQueryWrapper.eq("responsible_unit",sarStandUnqualifiedPage.getResponsibleUnit());
}
Page<SarStandUnqualified> standUnqualifiedPage=new Page<>();
//判断前端是否提供页码和每页条数
if(sarStandUnqualifiedPage.getCurrent()!=null&&sarStandUnqualifiedPage.getSize()!=null){
standUnqualifiedPage=new Page<>(sarStandUnqualifiedPage.getCurrent(),sarStandUnqualifiedPage.getSize());
}
return sarStandUnqualifiedDao.selectPage(standUnqualifiedPage,sarStandUnqualifiedQueryWrapper);
}
/**
* 批量关闭未符合项
* @param standUnqualifiedListVO :要关闭的未符合项目列表
* @return List<String>:失败的ID列表
*/
@Transactional
@Override
public List<String> closeSarStandUnqualifiedList(StandUnqualifiedListVO standUnqualifiedListVO) {
List<String> failIds=new ArrayList<>();
for(String id:standUnqualifiedListVO.getIds()){
boolean success=closeSarStandUnqualified(id);
if(!success){
failIds.add(id);
}
}
return failIds;
}
/**
* 获取导出excel的数据
* @param standUnqualifiedExcelVOids
* @return List<SarStandUnqualified>
*/
@Override
public List<SarStandUnqualified> getStandUnqualifiedExcelData(StandUnqualifiedExcelVO standUnqualifiedExcelVO) {
QueryWrapper<SarStandUnqualified> sarStandUnqualifiedQueryWrapper=new QueryWrapper<>();
sarStandUnqualifiedQueryWrapper.eq("close_state",1);
if(standUnqualifiedExcelVO.getIds()!=null&&standUnqualifiedExcelVO.getIds().size()>0){
sarStandUnqualifiedQueryWrapper.in("id",standUnqualifiedExcelVO.getIds());
}
return sarStandUnqualifiedDao.selectList(sarStandUnqualifiedQueryWrapper);
}
private boolean closeSarStandUnqualified(String standUnqualifiedId){
SarStandUnqualified sarStandUnqualified=sarStandUnqualifiedDao.selectById(standUnqualifiedId);
//判断是否存在
if(sarStandUnqualified==null){
return false;
}
//判断是否已关闭
if(sarStandUnqualified.getCloseState()==2){
return false;
}
sarStandUnqualified.setCloseState(2);
sarStandUnqualified.setActualCloseTime(new Timestamp(new Date().getTime()));
sarStandUnqualifiedDao.updateById(sarStandUnqualified);
return true;
}
}
@@ -0,0 +1,47 @@
package com.adc.da.slrs.sarStandUnqualified.utils;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
/**
* excel产品类型转换
*/
public class ProductTypeConverter implements Converter<String> {
//在java中性别是用 0 1 来标识的 所以是int
@Override
public Class<?> supportJavaTypeKey() {return String.class;}
// 在excel中是男女 所以是string
@Override
public CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}
//将excel的数据类型转为java数据类型
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
String stringValue = cellData.getStringValue();
if (stringValue != null) {
if(stringValue.equals("在研产品")){
return "research";
}
if(stringValue.equals("在产产品")){
return "product";
}
}
return null;
}
@Override
public CellData<String> convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if(s!=null){
if(s.equals("research")){
return new CellData<>("在研产品");
}
if(s.equals("product")){
return new CellData<>("在产产品");
}
}
return null;
}
}
@@ -0,0 +1,42 @@
package com.adc.da.slrs.sarStandUnqualified.utils;
import com.adc.da.utils.util.DateUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.sql.Timestamp;
import java.text.ParseException;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* excel输出时Timestamp和String的转换
*/
public class TimestampConverter implements Converter<Timestamp> {
@Override
public Class<Timestamp> supportJavaTypeKey() {
return Timestamp.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Timestamp convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws ParseException {
return new Timestamp(DateUtil.stingToDate(cellData.getDataFormatString(),"yyyy-MM-dd HH:mm:ss").getTime());
}
@Override
public CellData<String> convertToExcelData(Timestamp value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return new CellData<>(DateUtil.dateToString(new Date(value.getTime()),"yyyy-MM-dd HH:mm:ss"));
}
}
@@ -55,6 +55,36 @@ public class DateUtil {
return dateTime;
}
/**
* 将日期对象转换为指定的日期字符串
*
* @param date 传入的日期对象
* @param format 格式
* @return 日期字符串
* @author 赵肖云
*/
public static String dateToString(Date date, String format) {
String string = "";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
if (date != null) {
string = simpleDateFormat.format(date);
}
return string;
}
/**
* 将日期字符串转换为一个日期对象
*
* @param datestr 日期字符串
* @param format 格式
* @return Date
* @author 赵肖云
*/
public static Date stingToDate(String datestr, String format) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.parse(datestr);
}
public static void main(String[] args) {
String utcTime = "2021-04-15T01:43:54.296Z";