Browse Source

交付物插件添加导出接口

master
zhangsan 3 years ago
parent
commit
713924c27e
  1. 19
      pom.xml
  2. 26
      src/main/java/com/ccsens/ptccsens/api/DailyAccountController.java
  3. 4
      src/main/java/com/ccsens/ptccsens/api/OcrController.java
  4. 8
      src/main/java/com/ccsens/ptccsens/bean/dto/DailyAccountDto.java
  5. 11
      src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmp.java
  6. 60
      src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmpExample.java
  7. 11
      src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountPro.java
  8. 60
      src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountProExample.java
  9. 22
      src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTask.java
  10. 130
      src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTaskExample.java
  11. 15
      src/main/java/com/ccsens/ptccsens/bean/vo/DailyAccountVo.java
  12. 157
      src/main/java/com/ccsens/ptccsens/service/DailyAccountService.java
  13. 14
      src/main/java/com/ccsens/ptccsens/service/IDailyAccountService.java
  14. 8
      src/main/resources/mapper_dao/PluDailyAccountDao.xml
  15. 29
      src/main/resources/mapper_raw/PluDailyAccountEmpMapper.xml
  16. 29
      src/main/resources/mapper_raw/PluDailyAccountProMapper.xml
  17. 44
      src/main/resources/mapper_raw/PluDailyAccountTaskMapper.xml

19
pom.xml

@ -103,19 +103,24 @@
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.21</version>
<version>5.8.0.M4</version>
</dependency>
<!--Poi Excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.apache.poi</groupId>-->
<!-- <artifactId>poi</artifactId>-->
<!-- <version>3.17</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.poi</groupId>-->
<!-- <artifactId>poi-ooxml</artifactId>-->
<!-- <version>3.17</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
<version>4.1.2</version>
</dependency>
<!--websocket-->
<dependency>

26
src/main/java/com/ccsens/ptccsens/api/DailyAccountController.java

@ -84,20 +84,20 @@ public class DailyAccountController {
@RequestMapping(value = "/export", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<String> export(@ApiParam @Validated @RequestBody CommonQueryDto<DailyAccountDto.QueryTasksDto> params) throws Exception{
log.info("提交任务--{}",params);
// //设定开始和结束时间默认值
// if(params.getParam().getStartTime() == null){
// //今天0点
// Calendar cal = Calendar.getInstance();
// cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH),0,0,0);
// params.getParam().setStartTime(cal.getTimeInMillis()/1000*1000);
// //明天0点
// cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH) + 1,0,0,0);
// params.getParam().setEndTime(cal.getTimeInMillis()/1000*1000);
// }
// //查询任务
// DailyAccountVo.QueryTasks tasks = dailyAccountService.queryTasks(params.getParam(),params.getPageInfo());
//设定开始和结束时间默认值
if(params.getParam().getStartTime() == null){
//今天0点
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH),0,0,0);
params.getParam().setStartTime(cal.getTimeInMillis()/1000*1000);
//明天0点
cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH) + 1,0,0,0);
params.getParam().setEndTime(cal.getTimeInMillis()/1000*1000);
}
//查询任务并生成excel文件
String excelPath = dailyAccountService.exportTasks(params.getParam());
log.info("提交任务返回--{}","");
return JsonResponse.newInstance().ok("http://101.201.226.163/uploads/20220429-01.xlsx");
return JsonResponse.newInstance().ok(excelPath);
}
//

4
src/main/java/com/ccsens/ptccsens/api/OcrController.java

@ -1,9 +1,9 @@
package com.ccsens.ptccsens.api;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ImageUtil;
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto;
import com.ccsens.ptccsens.bean.vo.OcrVo;
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo;
@ -50,7 +50,7 @@ public class OcrController {
log.info("图像识别");
// 压缩图像
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageUtil.scale(ImageIO.read(part.getInputStream()), out, 1f);
ImgUtil.scale(ImageIO.read(part.getInputStream()), out, 1f);
String img = Base64.encode(out.toByteArray());
//保存文件
// String extName = FileUtil.extName(part.getSubmittedFileName());

8
src/main/java/com/ccsens/ptccsens/bean/dto/DailyAccountDto.java

@ -52,12 +52,16 @@ public class DailyAccountDto {
@ApiModelProperty("任务时长")
@NotNull
private Long duration;
@ApiModelProperty("交付物链接")
@ApiModelProperty("检查人")
@NotNull
private String checker;
@ApiModelProperty("交付物链接")
private String deliverLink;
@ApiModelProperty("备注")
@NotNull
private String remark;
@ApiModelProperty("序号")
@NotNull
private Integer sequence;
}
@Data

11
src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmp.java

@ -16,6 +16,8 @@ public class PluDailyAccountEmp implements Serializable {
private Byte recStatus;
private Integer sequence;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -66,6 +68,14 @@ public class PluDailyAccountEmp implements Serializable {
this.recStatus = recStatus;
}
public Integer getSequence() {
return sequence;
}
public void setSequence(Integer sequence) {
this.sequence = sequence;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -78,6 +88,7 @@ public class PluDailyAccountEmp implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", sequence=").append(sequence);
sb.append("]");
return sb.toString();
}

60
src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmpExample.java

@ -474,6 +474,66 @@ public class PluDailyAccountEmpExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andSequenceIsNull() {
addCriterion("sequence is null");
return (Criteria) this;
}
public Criteria andSequenceIsNotNull() {
addCriterion("sequence is not null");
return (Criteria) this;
}
public Criteria andSequenceEqualTo(Integer value) {
addCriterion("sequence =", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotEqualTo(Integer value) {
addCriterion("sequence <>", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceGreaterThan(Integer value) {
addCriterion("sequence >", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceGreaterThanOrEqualTo(Integer value) {
addCriterion("sequence >=", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceLessThan(Integer value) {
addCriterion("sequence <", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceLessThanOrEqualTo(Integer value) {
addCriterion("sequence <=", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceIn(List<Integer> values) {
addCriterion("sequence in", values, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotIn(List<Integer> values) {
addCriterion("sequence not in", values, "sequence");
return (Criteria) this;
}
public Criteria andSequenceBetween(Integer value1, Integer value2) {
addCriterion("sequence between", value1, value2, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotBetween(Integer value1, Integer value2) {
addCriterion("sequence not between", value1, value2, "sequence");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

11
src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountPro.java

@ -22,6 +22,8 @@ public class PluDailyAccountPro implements Serializable {
private Byte recStatus;
private Integer sequence;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -96,6 +98,14 @@ public class PluDailyAccountPro implements Serializable {
this.recStatus = recStatus;
}
public Integer getSequence() {
return sequence;
}
public void setSequence(Integer sequence) {
this.sequence = sequence;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -111,6 +121,7 @@ public class PluDailyAccountPro implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", sequence=").append(sequence);
sb.append("]");
return sb.toString();
}

60
src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountProExample.java

@ -684,6 +684,66 @@ public class PluDailyAccountProExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andSequenceIsNull() {
addCriterion("sequence is null");
return (Criteria) this;
}
public Criteria andSequenceIsNotNull() {
addCriterion("sequence is not null");
return (Criteria) this;
}
public Criteria andSequenceEqualTo(Integer value) {
addCriterion("sequence =", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotEqualTo(Integer value) {
addCriterion("sequence <>", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceGreaterThan(Integer value) {
addCriterion("sequence >", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceGreaterThanOrEqualTo(Integer value) {
addCriterion("sequence >=", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceLessThan(Integer value) {
addCriterion("sequence <", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceLessThanOrEqualTo(Integer value) {
addCriterion("sequence <=", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceIn(List<Integer> values) {
addCriterion("sequence in", values, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotIn(List<Integer> values) {
addCriterion("sequence not in", values, "sequence");
return (Criteria) this;
}
public Criteria andSequenceBetween(Integer value1, Integer value2) {
addCriterion("sequence between", value1, value2, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotBetween(Integer value1, Integer value2) {
addCriterion("sequence not between", value1, value2, "sequence");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

22
src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTask.java

@ -28,6 +28,10 @@ public class PluDailyAccountTask implements Serializable {
private Byte recStatus;
private Integer sequence;
private String checker;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -126,6 +130,22 @@ public class PluDailyAccountTask implements Serializable {
this.recStatus = recStatus;
}
public Integer getSequence() {
return sequence;
}
public void setSequence(Integer sequence) {
this.sequence = sequence;
}
public String getChecker() {
return checker;
}
public void setChecker(String checker) {
this.checker = checker == null ? null : checker.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -144,6 +164,8 @@ public class PluDailyAccountTask implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", sequence=").append(sequence);
sb.append(", checker=").append(checker);
sb.append("]");
return sb.toString();
}

130
src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTaskExample.java

@ -864,6 +864,136 @@ public class PluDailyAccountTaskExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andSequenceIsNull() {
addCriterion("sequence is null");
return (Criteria) this;
}
public Criteria andSequenceIsNotNull() {
addCriterion("sequence is not null");
return (Criteria) this;
}
public Criteria andSequenceEqualTo(Integer value) {
addCriterion("sequence =", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotEqualTo(Integer value) {
addCriterion("sequence <>", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceGreaterThan(Integer value) {
addCriterion("sequence >", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceGreaterThanOrEqualTo(Integer value) {
addCriterion("sequence >=", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceLessThan(Integer value) {
addCriterion("sequence <", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceLessThanOrEqualTo(Integer value) {
addCriterion("sequence <=", value, "sequence");
return (Criteria) this;
}
public Criteria andSequenceIn(List<Integer> values) {
addCriterion("sequence in", values, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotIn(List<Integer> values) {
addCriterion("sequence not in", values, "sequence");
return (Criteria) this;
}
public Criteria andSequenceBetween(Integer value1, Integer value2) {
addCriterion("sequence between", value1, value2, "sequence");
return (Criteria) this;
}
public Criteria andSequenceNotBetween(Integer value1, Integer value2) {
addCriterion("sequence not between", value1, value2, "sequence");
return (Criteria) this;
}
public Criteria andCheckerIsNull() {
addCriterion("checker is null");
return (Criteria) this;
}
public Criteria andCheckerIsNotNull() {
addCriterion("checker is not null");
return (Criteria) this;
}
public Criteria andCheckerEqualTo(String value) {
addCriterion("checker =", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerNotEqualTo(String value) {
addCriterion("checker <>", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerGreaterThan(String value) {
addCriterion("checker >", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerGreaterThanOrEqualTo(String value) {
addCriterion("checker >=", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerLessThan(String value) {
addCriterion("checker <", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerLessThanOrEqualTo(String value) {
addCriterion("checker <=", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerLike(String value) {
addCriterion("checker like", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerNotLike(String value) {
addCriterion("checker not like", value, "checker");
return (Criteria) this;
}
public Criteria andCheckerIn(List<String> values) {
addCriterion("checker in", values, "checker");
return (Criteria) this;
}
public Criteria andCheckerNotIn(List<String> values) {
addCriterion("checker not in", values, "checker");
return (Criteria) this;
}
public Criteria andCheckerBetween(String value1, String value2) {
addCriterion("checker between", value1, value2, "checker");
return (Criteria) this;
}
public Criteria andCheckerNotBetween(String value1, String value2) {
addCriterion("checker not between", value1, value2, "checker");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

15
src/main/java/com/ccsens/ptccsens/bean/vo/DailyAccountVo.java

@ -52,22 +52,14 @@ public class DailyAccountVo {
private Long deadline;
@ApiModelProperty("任务时长")
private Long duration;
@ApiModelProperty("检查人")
private String checker;
@ApiModelProperty("交付物链接")
private String deliverLink;
@ApiModelProperty("备注")
private String remark;
}
@Data
@ApiModel("时间、员工、项目、任务关联信息")
public static class DailyAccountEmpProTasks{
private Long id;
private Long time;
private Long empId;
private Long proId;
private DailyAccountTask task;
}
@Data
@ApiModel("流水账基本信息")
public static class DailyAccountInfo{
@ -89,6 +81,7 @@ public class DailyAccountVo {
public static class TableRow{
private Long time;
private Long empId;
private String empName;
private List<ProjectTask> pros;
}
@ -98,6 +91,6 @@ public class DailyAccountVo {
@ApiModelProperty("项目ID列表")
private List<Long> pros;
@ApiModelProperty("多行数据列表")
private PageInfo<TableRow> recs;
private List<TableRow> recs;
}
}

157
src/main/java/com/ccsens/ptccsens/service/DailyAccountService.java

@ -1,28 +1,38 @@
package com.ccsens.ptccsens.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.ccsens.ptccsens.bean.dto.CommonQueryDto;
import com.ccsens.ptccsens.bean.dto.DailyAccountDto;
import com.ccsens.ptccsens.bean.po.PluDailyAccountEmpProTask;
import com.ccsens.ptccsens.bean.po.PluDailyAccountEmpProTaskExample;
import com.ccsens.ptccsens.bean.po.PluDailyAccountTask;
import com.ccsens.ptccsens.bean.po.*;
import com.ccsens.ptccsens.bean.vo.DailyAccountVo;
import com.ccsens.ptccsens.persist.dao.PluDailyAccountDao;
import com.ccsens.ptccsens.persist.dao.PluDailyAccountEmpDao;
import com.ccsens.ptccsens.persist.dao.PluDailyAccountProDao;
import com.ccsens.ptccsens.persist.mapper.PluDailyAccountEmpProTaskMapper;
import com.ccsens.ptccsens.persist.mapper.PluDailyAccountTaskMapper;
import com.ccsens.util.PropUtil;
import com.ccsens.util.StringUtil;
import com.ccsens.util.WebConstant;
import com.ccsens.util.exception.BaseException;
import com.ccsensptos.tallsdk.bean.vo.TallTaskVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.*;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@ -34,6 +44,7 @@ import java.util.stream.Collectors;
* @version: v1.0
*/
@Service
@Slf4j
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class DailyAccountService implements IDailyAccountService{
@Resource
@ -59,34 +70,6 @@ public class DailyAccountService implements IDailyAccountService{
return info;
}
@Override
public DailyAccountVo.QueryTasks queryTasks(DailyAccountDto.QueryTasksDto param, CommonQueryDto.PageInfo pageInfo) {
DailyAccountVo.QueryTasks tasks = new DailyAccountVo.QueryTasks();
//获取项目集合
if(CollectionUtil.isNotEmpty(param.getPros())){
tasks.setPros(param.getPros());
}else{
tasks.setPros(pluDailyAccountProDao.selectProjects().stream().map(DailyAccountVo.DailyAccountPro::getId).collect(Collectors.toList()));
}
//查询总页数
Long total = pluDailyAccountDao.selectEmpProTasksRecordNums(param.getStartTime(),param.getEndTime(),param.getEmps());
//获取任务
List<DailyAccountVo.TableRow> empProTasks =
pluDailyAccountDao.selectEmpProTasks(param.getStartTime(),param.getEndTime(),param.getEmps(),param.getPros(),pageInfo);
//组装返回
PageInfo<DailyAccountVo.TableRow> pageResult = new PageInfo<>(empProTasks);
pageResult.setTotal(total);
pageResult.setPageNum(pageInfo.getPageNum().intValue());
pageResult.setPageSize(pageInfo.getPageSize());
pageResult.setPages((total.intValue()-1) / pageInfo.getPageSize() + 1);
tasks.setRecs(pageResult);
return tasks;
}
@Override
public void saveTask(DailyAccountDto.SubmitTask param) {
//处理时间信息,转换为0:0:0
@ -127,4 +110,116 @@ public class DailyAccountService implements IDailyAccountService{
pluDailyAccountEmpProTaskMapper.insertSelective(empProTask);
}
}
@Override
public DailyAccountVo.QueryTasks queryTasks(DailyAccountDto.QueryTasksDto param, CommonQueryDto.PageInfo pageInfo) {
DailyAccountVo.QueryTasks tasks = new DailyAccountVo.QueryTasks();
//获取项目集合
PluDailyAccountProExample proExample = new PluDailyAccountProExample();
PluDailyAccountProExample.Criteria criteria = proExample.createCriteria();
if(CollectionUtil.isNotEmpty(param.getPros())) {
criteria.andIdIn(param.getPros());
}
criteria.andRecStatusEqualTo(WebConstant.REC_STATUS.Normal.value);
proExample.setOrderByClause("sequence asc");
List<PluDailyAccountPro> pros = pluDailyAccountProDao.selectByExample(proExample);
tasks.setPros(pros.stream().map(PluDailyAccountPro::getId).collect(Collectors.toList()));
//获取每一行任务集合
List<DailyAccountVo.TableRow> empProTasks =
pluDailyAccountDao.selectEmpProTasks(param.getStartTime(),param.getEndTime(),param.getEmps(),param.getPros(),null);
//组装返回
tasks.setRecs(empProTasks);
return tasks;
}
@Override
public String exportTasks(DailyAccountDto.QueryTasksDto param) throws IOException {
DailyAccountVo.QueryTasks tasks = new DailyAccountVo.QueryTasks();
//获取项目集合
PluDailyAccountProExample proExample = new PluDailyAccountProExample();
PluDailyAccountProExample.Criteria criteria = proExample.createCriteria();
if(CollectionUtil.isNotEmpty(param.getPros())) {
criteria.andIdIn(param.getPros());
}
criteria.andRecStatusEqualTo(WebConstant.REC_STATUS.Normal.value);
proExample.setOrderByClause("sequence asc");
List<PluDailyAccountPro> pros = pluDailyAccountProDao.selectByExample(proExample);
//获取任务
List<DailyAccountVo.TableRow> empProTasks =
pluDailyAccountDao.selectEmpProTasks(param.getStartTime(),param.getEndTime(),param.getEmps(),param.getPros(),null);
//生成文件路径
String fileName = "exportWbs/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx";
String path = PropUtil.path + fileName;
File tmpFile = new File(path);
if (!tmpFile.getParentFile().exists()) {
tmpFile.getParentFile().mkdirs();
}
//创建ExcelWriter
ExcelWriter writer = ExcelUtil.getWriter(path);
//生成wbs表的数据
writeTasksToExcel(writer, pros, empProTasks);
//关闭文件
writer.close();
return PropUtil.imgDomain + "/" + fileName;
}
private void writeTasksToExcel(ExcelWriter writer, List<PluDailyAccountPro> pros, List<DailyAccountVo.TableRow> empProTasks) {
//写入标题
int row = 0,col = 0;
writer.writeCellValue(col++,row,"时间");
writer.writeCellValue(col++,row,"姓名");
for (PluDailyAccountPro pro : pros) {
writer.writeCellValue(col++,row,pro.getProjectShortName());
}
row++;
col = 0;
//写入内容
for (DailyAccountVo.TableRow empProTask : empProTasks) {
writer.writeCellValue(col++,row,DateUtil.format(new Date(empProTask.getTime()),"yyyy/MM/dd"));
writer.writeCellValue(col++,row,empProTask.getEmpName());
//循环所有要导出的项目
for (PluDailyAccountPro titlePro : pros) {
for (DailyAccountVo.ProjectTask pro : empProTask.getPros()) {
if (titlePro.getId().longValue() == pro.getProId().longValue()){
//write tasks
writer.writeCellValue(col,row,formatTasksString(pro.getTasks()));
break;
}
}
col++;
}
row++;
col = 0;
}
}
private Object formatTasksString(List<DailyAccountVo.DailyAccountTask> tasks) {
String format = "【{}】计划结果{}【{}】,交付物【{}】,截至【{}】,时长【{}】,检查人【{}】,链接【{}】\r\n";
StringBuilder stringBuilder = new StringBuilder();
int index = 0;
for (DailyAccountVo.DailyAccountTask task : tasks) {
stringBuilder.append(
StrUtil.format(format,task.getCooperation().intValue() == 0 ? "自" : "协" ,
++index,
task.getTaskName(),
task.getDeliverName(),
DateUtil.format(new Date(task.getDeadline()),"yyyy/MM/dd"),
task.getDuration()/1000/3600,
task.getChecker(),
task.getDeliverLink())
);
}
return stringBuilder.toString();
}
}

14
src/main/java/com/ccsens/ptccsens/service/IDailyAccountService.java

@ -4,6 +4,9 @@ import com.ccsens.ptccsens.bean.dto.CommonQueryDto;
import com.ccsens.ptccsens.bean.dto.DailyAccountDto;
import com.ccsens.ptccsens.bean.vo.DailyAccountVo;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* @author mr.zhangsan
* @date 2022/4/28 14:49
@ -16,6 +19,12 @@ public interface IDailyAccountService {
*/
DailyAccountVo.DailyAccountInfo queryDailyAccountInfo() ;
/**
* 提交任务
* @param param
*/
void saveTask(DailyAccountDto.SubmitTask param);
/**
* 查询任务列表
* @param param
@ -24,8 +33,9 @@ public interface IDailyAccountService {
DailyAccountVo.QueryTasks queryTasks(DailyAccountDto.QueryTasksDto param, CommonQueryDto.PageInfo pageInfo);
/**
* 提交任务
* 根据条件查询任务并导出excel
* @param param
* @return
*/
void saveTask(DailyAccountDto.SubmitTask param);
String exportTasks(DailyAccountDto.QueryTasksDto param) throws IOException;
}

8
src/main/resources/mapper_dao/PluDailyAccountDao.xml

@ -4,6 +4,7 @@
<resultMap id="queryTaskResultMap" type="com.ccsens.ptccsens.bean.vo.DailyAccountVo$TableRow">
<result column="time" property="time"/>
<result column="emp_id" property="empId"/>
<result column="emp_name" property="empName"/>
<collection property="pros" ofType="com.ccsens.ptccsens.bean.vo.DailyAccountVo$ProjectTask">
<id column="pro_id" property="proId"/>
<collection property="tasks" ofType="com.ccsens.ptccsens.bean.vo.DailyAccountVo$DailyAccountTask">
@ -13,6 +14,8 @@
<result column="deliver_name" property="deliverName"/>
<result column="deadline" property="deadline"/>
<result column="duration" property="duration"/>
<result column="checker" property="checker"/>
<result column="deliver_link" property="deliverLink"/>
</collection>
</collection>
</resultMap>
@ -36,10 +39,11 @@
select
distinct
o.time,o.emp_id,o.pro_id,
t.id as taskId, t.cooperation, t.task_name, t.deliver_name, t.deadline, t.duration, t.deliver_link
te.emp_name,
t.id as taskId, t.cooperation, t.task_name, t.deliver_name, t.deadline, t.duration, t.checker, t.deliver_link
from
(
SELECT distinct o1.time, o1.emp_id, oe.sequence as empSequence
SELECT distinct o1.time, o1.emp_id, oe.emp_name, oe.sequence as empSequence
from t_plu_daily_account_emp_pro_task o1 join t_plu_daily_account_emp oe on o1.emp_id = oe.id
where
o1.time &gt;= #{startTime} AND o1.time &lt; #{endTime}

29
src/main/resources/mapper_raw/PluDailyAccountEmpMapper.xml

@ -8,6 +8,7 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="sequence" jdbcType="INTEGER" property="sequence" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -68,7 +69,7 @@
</where>
</sql>
<sql id="Base_Column_List">
id, emp_name, operator, created_at, updated_at, rec_status
id, emp_name, operator, created_at, updated_at, rec_status, sequence
</sql>
<select id="selectByExample" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountEmpExample" resultMap="BaseResultMap">
select
@ -102,11 +103,11 @@
</delete>
<insert id="insert" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountEmp">
insert into t_plu_daily_account_emp (id, emp_name, operator,
created_at, updated_at, rec_status
)
created_at, updated_at, rec_status,
sequence)
values (#{id,jdbcType=BIGINT}, #{empName,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT},
#{sequence,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountEmp">
insert into t_plu_daily_account_emp
@ -129,6 +130,9 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="sequence != null">
sequence,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -149,6 +153,9 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="sequence != null">
#{sequence,jdbcType=INTEGER},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountEmpExample" resultType="java.lang.Long">
@ -178,6 +185,9 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.sequence != null">
sequence = #{record.sequence,jdbcType=INTEGER},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -190,7 +200,8 @@
operator = #{record.operator,jdbcType=BIGINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
sequence = #{record.sequence,jdbcType=INTEGER}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -213,6 +224,9 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="sequence != null">
sequence = #{sequence,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -222,7 +236,8 @@
operator = #{operator,jdbcType=BIGINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
sequence = #{sequence,jdbcType=INTEGER}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

29
src/main/resources/mapper_raw/PluDailyAccountProMapper.xml

@ -11,6 +11,7 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="sequence" jdbcType="INTEGER" property="sequence" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -72,7 +73,7 @@
</sql>
<sql id="Base_Column_List">
id, project_name, project_short_name, project_no, project_manager_name, operator,
created_at, updated_at, rec_status
created_at, updated_at, rec_status, sequence
</sql>
<select id="selectByExample" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountProExample" resultMap="BaseResultMap">
select
@ -107,12 +108,12 @@
<insert id="insert" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountPro">
insert into t_plu_daily_account_pro (id, project_name, project_short_name,
project_no, project_manager_name, operator,
created_at, updated_at, rec_status
)
created_at, updated_at, rec_status,
sequence)
values (#{id,jdbcType=BIGINT}, #{projectName,jdbcType=VARCHAR}, #{projectShortName,jdbcType=VARCHAR},
#{projectNo,jdbcType=VARCHAR}, #{projectManagerName,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT},
#{sequence,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountPro">
insert into t_plu_daily_account_pro
@ -144,6 +145,9 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="sequence != null">
sequence,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -173,6 +177,9 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="sequence != null">
#{sequence,jdbcType=INTEGER},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountProExample" resultType="java.lang.Long">
@ -211,6 +218,9 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.sequence != null">
sequence = #{record.sequence,jdbcType=INTEGER},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -226,7 +236,8 @@
operator = #{record.operator,jdbcType=BIGINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
sequence = #{record.sequence,jdbcType=INTEGER}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -258,6 +269,9 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="sequence != null">
sequence = #{sequence,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -270,7 +284,8 @@
operator = #{operator,jdbcType=BIGINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
sequence = #{sequence,jdbcType=INTEGER}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

44
src/main/resources/mapper_raw/PluDailyAccountTaskMapper.xml

@ -14,6 +14,8 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="sequence" jdbcType="INTEGER" property="sequence" />
<result column="checker" jdbcType="VARCHAR" property="checker" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -75,7 +77,7 @@
</sql>
<sql id="Base_Column_List">
id, cooperation, task_name, deliver_name, deadline, duration, deliver_link, remark,
operator, created_at, updated_at, rec_status
operator, created_at, updated_at, rec_status, sequence, checker
</sql>
<select id="selectByExample" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountTaskExample" resultMap="BaseResultMap">
select
@ -111,13 +113,13 @@
insert into t_plu_daily_account_task (id, cooperation, task_name,
deliver_name, deadline, duration,
deliver_link, remark, operator,
created_at, updated_at, rec_status
)
created_at, updated_at, rec_status,
sequence, checker)
values (#{id,jdbcType=BIGINT}, #{cooperation,jdbcType=TINYINT}, #{taskName,jdbcType=VARCHAR},
#{deliverName,jdbcType=VARCHAR}, #{deadline,jdbcType=BIGINT}, #{duration,jdbcType=BIGINT},
#{deliverLink,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT},
#{sequence,jdbcType=INTEGER}, #{checker,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountTask">
insert into t_plu_daily_account_task
@ -158,6 +160,12 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="sequence != null">
sequence,
</if>
<if test="checker != null">
checker,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -196,6 +204,12 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="sequence != null">
#{sequence,jdbcType=INTEGER},
</if>
<if test="checker != null">
#{checker,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.ptccsens.bean.po.PluDailyAccountTaskExample" resultType="java.lang.Long">
@ -243,6 +257,12 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.sequence != null">
sequence = #{record.sequence,jdbcType=INTEGER},
</if>
<if test="record.checker != null">
checker = #{record.checker,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -261,7 +281,9 @@
operator = #{record.operator,jdbcType=BIGINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
sequence = #{record.sequence,jdbcType=INTEGER},
checker = #{record.checker,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -302,6 +324,12 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="sequence != null">
sequence = #{sequence,jdbcType=INTEGER},
</if>
<if test="checker != null">
checker = #{checker,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -317,7 +345,9 @@
operator = #{operator,jdbcType=BIGINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
sequence = #{sequence,jdbcType=INTEGER},
checker = #{checker,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
Loading…
Cancel
Save