Browse Source

项目进度详情开发

anderx 1 year ago
parent
commit
7e75bf0d39

+ 30 - 14
src/main/java/com/goafanti/common/utils/excel/NewExcelUtil.java

@@ -7,7 +7,7 @@ import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.common.utils.excel.Excel.ColumnType;
 import com.goafanti.common.utils.excel.Excel.Type;
-import com.goafanti.techproject.bo.TaskDetailsBo;
+import com.goafanti.techproject.bo.OutTaskDetailsBo;
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
@@ -1905,27 +1905,21 @@ public class NewExcelUtil<T> {
 	}
 
 
-	public Result exportTaskDetailsExcel(TaskDetailsBo byTid, String uploadPath) {
+	public Result exportTaskDetailsExcel(OutTaskDetailsBo byTid, String sheetName, String uploadPath) {
 		OutputStream out = null;
 		String filename="";
+		downloadPath=uploadPath;
 		uploadPath=uploadPath+"/"+"tmp/member_progress.xls";
         try {
             FileInputStream fileInputStream = new FileInputStream(uploadPath);
-			Workbook workbook = new HSSFWorkbook(fileInputStream);
-			sheet = workbook.getSheetAt(0);
+			wb = new HSSFWorkbook(fileInputStream);
+			styles=createStyles(wb);
+			sheet = wb.getSheetAt(0);
 			Row row = sheet.createRow(5);
 
 			filename = encodingFilename(sheetName);
-			out = new FileOutputStream(getAbsoluteFile(filename));
-			T vo = (T) byTid;
-			int column = 0;
-			for (Object[] os : fields) {
-				Field field = (Field) os[0];
-				Excel excel = (Excel) os[1];
-				// 设置实体类私有属性可访问
-				field.setAccessible(true);
-				this.addCell(excel, row, vo, field, column++);
-			}
+			out = Files.newOutputStream(Paths.get(getAbsoluteFile(filename)));
+			addCell( row,byTid);
 			wb.write(out);
 			return new Result().data(filename);
 		} catch (Exception e) {
@@ -1948,4 +1942,26 @@ public class NewExcelUtil<T> {
 			}
 		}
     }
+
+	private void addCell(Row row,OutTaskDetailsBo o) {
+		for (int i = 0; i < 20; i++) {
+			Cell cell = row.createCell(i);
+			cell.setCellStyle(styles.get("data4"));
+			if (i==0)cell.setCellValue(1);
+			else if(i==1)cell.setCellValue(o.getUserName());
+			else if(i==2)cell.setCellValue(o.getServiceProject());
+			else if(i==3)cell.setCellValue(o.getServiceyear());
+			else if(i==4)cell.setCellValue("");
+			else if(i==5)cell.setCellValue(o.getMemberLvl());
+			else if(i==6)cell.setCellValue(o.getBeforeLastSalesAmount().stripTrailingZeros().toPlainString());
+			else if(i==7)cell.setCellValue(o.getBeforeLastRdBudget().stripTrailingZeros().toPlainString());
+			else if(i==8)cell.setCellValue(o.getLastSalesAmount().stripTrailingZeros().toPlainString());
+			else if(i==9)cell.setCellValue(o.getLastRdBudget().stripTrailingZeros().toPlainString());
+
+
+
+		}
+
+
+	}
 }

File diff suppressed because it is too large
+ 1171 - 0
src/main/java/com/goafanti/techproject/bo/OutTaskDetailsBo.java


+ 71 - 0
src/main/java/com/goafanti/techproject/bo/TaskDetailsBo.java

@@ -2,12 +2,15 @@ package com.goafanti.techproject.bo;
 
 import com.goafanti.common.model.TaskDetails;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
 public class TaskDetailsBo extends TaskDetails {
     private String orderNo;
     private String contractNo;
+
+    private String userName;
     /**
      * 会员  0否 1是
      */
@@ -17,8 +20,76 @@ public class TaskDetailsBo extends TaskDetails {
      */
     private String memberLvl;
 
+
+
     List<Map<String,Object >> taskList;
 
+    private String lastYear;
+    private BigDecimal lastSalesAmount;
+    private BigDecimal lastRdBudget;
+    private String beforeLastYear;
+    private BigDecimal beforeLastSalesAmount;
+    private BigDecimal beforeLastRdBudget;
+
+
+    public String getLastYear() {
+        return lastYear;
+    }
+
+    public void setLastYear(String lastYear) {
+        this.lastYear = lastYear;
+    }
+
+
+
+    public String getBeforeLastYear() {
+        return beforeLastYear;
+    }
+
+    public void setBeforeLastYear(String beforeLastYear) {
+        this.beforeLastYear = beforeLastYear;
+    }
+
+    public BigDecimal getLastSalesAmount() {
+        return lastSalesAmount;
+    }
+
+    public void setLastSalesAmount(BigDecimal lastSalesAmount) {
+        this.lastSalesAmount = lastSalesAmount;
+    }
+
+    public BigDecimal getLastRdBudget() {
+        return lastRdBudget;
+    }
+
+    public void setLastRdBudget(BigDecimal lastRdBudget) {
+        this.lastRdBudget = lastRdBudget;
+    }
+
+    public BigDecimal getBeforeLastSalesAmount() {
+        return beforeLastSalesAmount;
+    }
+
+    public void setBeforeLastSalesAmount(BigDecimal beforeLastSalesAmount) {
+        this.beforeLastSalesAmount = beforeLastSalesAmount;
+    }
+
+    public BigDecimal getBeforeLastRdBudget() {
+        return beforeLastRdBudget;
+    }
+
+    public void setBeforeLastRdBudget(BigDecimal beforeLastRdBudget) {
+        this.beforeLastRdBudget = beforeLastRdBudget;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
     public List<Map<String, Object>> getTaskList() {
         return taskList;
     }

+ 1 - 0
src/main/java/com/goafanti/techproject/controller/TaskDetailsController.java

@@ -103,6 +103,7 @@ public class TaskDetailsController extends BaseController {
      */
     @GetMapping("/export")
     public Result<TaskDetails> export(Integer id) {
+
         return new Result<>().data(this.taskDetailsService.export(id));
     }
 

+ 30 - 6
src/main/java/com/goafanti/techproject/service/impl/TaskDetailsServiceImpl.java

@@ -7,6 +7,7 @@ import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.bo.TOrderTaskBo;
+import com.goafanti.techproject.bo.OutTaskDetailsBo;
 import com.goafanti.techproject.bo.TaskDetailsBo;
 import com.goafanti.techproject.service.TaskDetailsService;
 import org.springframework.beans.BeanUtils;
@@ -57,11 +58,14 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
 
     @Override
     public TaskDetailsBo getByTid(Integer id) {
+        TaskDetailsBo res = new TaskDetailsBo();
         TOrderNew tOrderNew = tOrderNewMapper.selectByTid(id);
         TOrderMid mid = tOrderMidMapper.selectByOrderNo(tOrderNew.getOrderNo());
         List<TOrderTaskBo> tOrderTaskBos = tOrderTaskMapper.selectOrderTaskAll(tOrderNew.getOrderNo(), 4);
         List<Map<String,Object >> list=new ArrayList<>();
         TaskDetails taskDetails=taskDetailsMapper.selectByTid(id);
+        LocalDate now = LocalDate.now();
+
         //如果是会员
         TOrderTaskBo thisTask = null;
         for (TOrderTaskBo e : tOrderTaskBos) {
@@ -87,10 +91,20 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
                 list.add(map);
             }
         }
-
-
-        TaskDetailsBo res = new TaskDetailsBo();
         if (taskDetails != null) {
+            int year = now.getYear();
+            List<TaskAnnualReport> taskAnnualReports = taskAnnualReportMapper.selectThreeYear(taskDetails.getTid(), year);
+            for (TaskAnnualReport e : taskAnnualReports) {
+                if (e.getYear()==(year-1)){
+                    res.setLastYear(e.getYear().toString());
+                    res.setLastSalesAmount(e.getSalesAmount());
+                    res.setLastRdBudget(e.getResearchAmount());
+                }else if (e.getYear()==(year-2)){
+                    res.setBeforeLastYear(e.getYear().toString());
+                    res.setBeforeLastSalesAmount(e.getSalesAmount());
+                    res.setBeforeLastRdBudget(e.getResearchAmount());
+                }
+            }
             BeanUtils.copyProperties(taskDetails, res);
         }
         BigDecimal totalAmount = tOrderNew.getTotalAmount();
@@ -102,6 +116,7 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
         }else if (totalAmount.compareTo(new BigDecimal("8"))>0){
             lvl="AAA";
         }
+        res.setUserName(mid.getBuyerName());
         res.setOrderNo(tOrderNew.getOrderNo());
         res.setContractNo(tOrderNew.getContractNo());
         res.setMemberStatus(mid.getProjectType());
@@ -241,9 +256,18 @@ public class TaskDetailsServiceImpl extends BaseMybatisDao<TaskDetailsMapper> im
 
     @Override
     public Object export(Integer id) {
-        NewExcelUtil<TaskDetailsBo> excel=new NewExcelUtil<TaskDetailsBo>(TaskDetailsBo.class);
+        OutTaskDetailsBo res = new OutTaskDetailsBo();
+        NewExcelUtil<OutTaskDetailsBo> excel=new NewExcelUtil<>(OutTaskDetailsBo.class);
         TaskDetailsBo byTid = getByTid(id);
-
-        return excel.exportTaskDetailsExcel(byTid,uploadPath);
+        BeanUtils.copyProperties(byTid,res);
+        StringBuffer sb = new StringBuffer();
+        byTid.getTaskList().forEach(e->{
+            if (res.getServiceyear()==null){
+                res.setServiceyear((String) e.get("serviceYear"));
+            }
+            sb.append(e.get("taskName")).append(" ;");
+        });
+        res.setServiceProject(sb.toString());
+        return excel.exportTaskDetailsExcel(res,"项目进度表",uploadPath);
     }
 }