diff --git a/pom.xml b/pom.xml
index 9a6a57b..bbf2897 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,19 +103,24 @@
cn.hutool
hutool-all
- 4.1.21
+ 5.8.0.M4
-
- org.apache.poi
- poi
- 3.17
-
+
+
+
+
+
+
+
+
+
+
org.apache.poi
poi-ooxml
- 3.17
+ 4.1.2
diff --git a/src/main/java/com/ccsens/ptccsens/api/DailyAccountController.java b/src/main/java/com/ccsens/ptccsens/api/DailyAccountController.java
index 7f19658..4224212 100644
--- a/src/main/java/com/ccsens/ptccsens/api/DailyAccountController.java
+++ b/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 export(@ApiParam @Validated @RequestBody CommonQueryDto 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);
}
//
diff --git a/src/main/java/com/ccsens/ptccsens/api/OcrController.java b/src/main/java/com/ccsens/ptccsens/api/OcrController.java
index 657d681..d5d0eab 100644
--- a/src/main/java/com/ccsens/ptccsens/api/OcrController.java
+++ b/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());
diff --git a/src/main/java/com/ccsens/ptccsens/bean/dto/DailyAccountDto.java b/src/main/java/com/ccsens/ptccsens/bean/dto/DailyAccountDto.java
index 6bed119..9d308d6 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/dto/DailyAccountDto.java
+++ b/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
diff --git a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmp.java b/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmp.java
index c7ae6c0..0bec761 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmp.java
+++ b/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();
}
diff --git a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmpExample.java b/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmpExample.java
index 4b86d12..c514fca 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountEmpExample.java
+++ b/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 values) {
+ addCriterion("sequence in", values, "sequence");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequenceNotIn(List 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 {
diff --git a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountPro.java b/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountPro.java
index f0346c5..5323bd8 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountPro.java
+++ b/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();
}
diff --git a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountProExample.java b/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountProExample.java
index 9a96404..f407e4a 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountProExample.java
+++ b/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 values) {
+ addCriterion("sequence in", values, "sequence");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequenceNotIn(List 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 {
diff --git a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTask.java b/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTask.java
index eff52e2..5091ba0 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTask.java
+++ b/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();
}
diff --git a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTaskExample.java b/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTaskExample.java
index fe37493..6f34190 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/po/PluDailyAccountTaskExample.java
+++ b/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 values) {
+ addCriterion("sequence in", values, "sequence");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequenceNotIn(List 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 values) {
+ addCriterion("checker in", values, "checker");
+ return (Criteria) this;
+ }
+
+ public Criteria andCheckerNotIn(List 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 {
diff --git a/src/main/java/com/ccsens/ptccsens/bean/vo/DailyAccountVo.java b/src/main/java/com/ccsens/ptccsens/bean/vo/DailyAccountVo.java
index c68d899..ca63517 100644
--- a/src/main/java/com/ccsens/ptccsens/bean/vo/DailyAccountVo.java
+++ b/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 pros;
}
@@ -98,6 +91,6 @@ public class DailyAccountVo {
@ApiModelProperty("项目ID列表")
private List pros;
@ApiModelProperty("多行数据列表")
- private PageInfo recs;
+ private List recs;
}
}
diff --git a/src/main/java/com/ccsens/ptccsens/service/DailyAccountService.java b/src/main/java/com/ccsens/ptccsens/service/DailyAccountService.java
index 4fe8c40..fd62635 100644
--- a/src/main/java/com/ccsens/ptccsens/service/DailyAccountService.java
+++ b/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 empProTasks =
- pluDailyAccountDao.selectEmpProTasks(param.getStartTime(),param.getEndTime(),param.getEmps(),param.getPros(),pageInfo);
-
- //组装返回
- PageInfo 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 pros = pluDailyAccountProDao.selectByExample(proExample);
+ tasks.setPros(pros.stream().map(PluDailyAccountPro::getId).collect(Collectors.toList()));
+
+ //获取每一行任务集合
+ List 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 pros = pluDailyAccountProDao.selectByExample(proExample);
+
+ //获取任务
+ List 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 pros, List 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 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();
+ }
}
diff --git a/src/main/java/com/ccsens/ptccsens/service/IDailyAccountService.java b/src/main/java/com/ccsens/ptccsens/service/IDailyAccountService.java
index 6edd35f..4ccfa50 100644
--- a/src/main/java/com/ccsens/ptccsens/service/IDailyAccountService.java
+++ b/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;
}
diff --git a/src/main/resources/mapper_dao/PluDailyAccountDao.xml b/src/main/resources/mapper_dao/PluDailyAccountDao.xml
index 7d22e86..2b5689f 100644
--- a/src/main/resources/mapper_dao/PluDailyAccountDao.xml
+++ b/src/main/resources/mapper_dao/PluDailyAccountDao.xml
@@ -4,6 +4,7 @@
+
@@ -13,6 +14,8 @@
+
+
@@ -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 >= #{startTime} AND o1.time < #{endTime}
diff --git a/src/main/resources/mapper_raw/PluDailyAccountEmpMapper.xml b/src/main/resources/mapper_raw/PluDailyAccountEmpMapper.xml
index 5fdabb9..f916326 100644
--- a/src/main/resources/mapper_raw/PluDailyAccountEmpMapper.xml
+++ b/src/main/resources/mapper_raw/PluDailyAccountEmpMapper.xml
@@ -8,6 +8,7 @@
+
@@ -68,7 +69,7 @@
- id, emp_name, operator, created_at, updated_at, rec_status
+ id, emp_name, operator, created_at, updated_at, rec_status, sequence