Quellcode durchsuchen

出差数据统计导出

yurk vor 2 Jahren
Ursprung
Commit
b04ee1aede

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BusinessTripController.java

@@ -81,5 +81,10 @@ public class BusinessTripController {
         return businessTripService.summaryData(keyword, startDate, endDate, userId);
 
     }
+    @RequestMapping("/exportData")
+    public HttpRespMsg exportData(BusinessTrip sheet,@RequestParam(defaultValue = "0") Integer keyword, String startDate, String endDate){
+        String userId = request.getHeader("Token");
+        return businessTripService.exportData(sheet,keyword, startDate, endDate, userId);
+    }
 }
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/BusinessTripService.java

@@ -27,4 +27,6 @@ public interface BusinessTripService extends IService<BusinessTrip> {
     HttpRespMsg add(BusinessTrip sheet);
 
     HttpRespMsg modifyProject(BusinessTrip sheet);
+
+    HttpRespMsg exportData(BusinessTrip sheet,Integer keyword, String startDate, String endDate, String userId);
 }

+ 97 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BusinessTripServiceImpl.java

@@ -9,12 +9,15 @@ import com.management.platform.mapper.*;
 import com.management.platform.service.BusinessTripService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.service.DepartmentService;
+import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -28,6 +31,8 @@ import java.util.stream.Collectors;
  */
 @Service
 public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, BusinessTrip> implements BusinessTripService {
+    @Value("${upload.path}")
+    private String path;
     @Resource
     private UserMapper userMapper;
     @Resource
@@ -54,6 +59,90 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
         return msg;
     }
 
+    @Override
+    public HttpRespMsg exportData(BusinessTrip sheet,Integer keyword, String startDate, String endDate, String userId) {
+        User user = userMapper.selectById(userId);
+        HttpRespMsg httpRespMsg = queryList(sheet, null, null, 0);
+        HashMap map= (HashMap) httpRespMsg.data;
+        List<BusinessTrip> recordsList = (List<BusinessTrip>) map.get("records");
+        List<List<String>> sheetOneDataList=new ArrayList<>();
+        List<List<String>> sheetTwoDataList=new ArrayList<>();
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String[] sheetOneTitleArray=new String[]{"出差人员","出差事由","出差详情","交通工具","出差天数","出差开始时间","出差结束时间","状态","备注"};
+        String[] sheetTwoTitleArray=new String[]{"出差人员","总出差天数"};
+        List<String> sheetOneTitleList=Arrays.asList(sheetOneTitleArray);
+        List<String> sheetTwoTitleList=Arrays.asList(sheetTwoTitleArray);
+        sheetOneDataList.add(sheetOneTitleList);
+        sheetTwoDataList.add(sheetTwoTitleList);
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
+        for (BusinessTrip businessTrip : recordsList) {
+            List<String> item=new ArrayList<>();
+            item.add(businessTrip.getOwnerName());
+            item.add(businessTrip.getReason());
+            List<BustripProject> businessTripProjectList = businessTrip.getProjectList();
+            String detail="";
+            if(businessTripProjectList.size()>0){
+                for (int i = 0; i < businessTripProjectList.size(); i++) {
+                    BustripProject bustripProject = businessTripProjectList.get(i);
+                    if(i<businessTripProjectList.size()-1){
+                        detail+=bustripProject.getStartDate()+"至"+bustripProject.getEndDate()+" "+(StringUtils.isEmpty(bustripProject.getProjectName())?"":bustripProject.getProjectName())+" "+(StringUtils.isEmpty(bustripProject.getDegreeName())?"":bustripProject.getDegreeName())+"\n";
+                    }else {
+                        detail+=bustripProject.getStartDate()+"至"+bustripProject.getEndDate()+" "+(StringUtils.isEmpty(bustripProject.getProjectName())?"":bustripProject.getProjectName())+" "+(StringUtils.isEmpty(bustripProject.getDegreeName())?"":bustripProject.getDegreeName());
+                    }
+
+                }
+            }
+            item.add(detail);
+            switch (businessTrip.getWay()){
+                case 0:item.add("飞机");
+                    break;
+                case 1:item.add("火车");
+                    break;
+                case 2:item.add("汽车");
+                    break;
+                case 3:item.add("轮船");
+                    break;
+                case 4:item.add("其他");
+                    break;
+            }
+            item.add(String.valueOf(businessTrip.getDayCount()));
+            item.add(df.format(businessTrip.getStartDate()));
+            item.add(df.format(businessTrip.getEndDate()));
+            switch (businessTrip.getStatus()){
+                case 0:item.add("审核通过");
+                    break;
+                case 1:item.add("待审核");
+                    break;
+                case 2:item.add("驳回");
+                    break;
+                case 3:item.add("已撤回");
+                    break;
+            }
+            item.add(businessTrip.getRemark());
+            sheetOneDataList.add(item);
+        }
+        Map<String, List<BusinessTrip>> collect = recordsList.stream().collect(Collectors.groupingBy(rl -> rl.getOwnerName()));
+        for (User targetUser : userList) {
+            List<BusinessTrip> businessTrips = collect.get(targetUser.getName());
+            if(businessTrips!=null&&!businessTrips.isEmpty()){
+                List<String> item=new ArrayList<>();
+                item.add(businessTrips.get(0).getOwnerName());
+                int days=0;
+                for (BusinessTrip businessTrip : businessTrips) {
+                    days+=businessTrip.getDayCount();
+                }
+                item.add(String.valueOf(days));
+                sheetTwoDataList.add(item);
+            }
+        }
+        //生成excel文件导出
+        String fileName = "出差统计导出_"+System.currentTimeMillis();
+        String resp=ExcelUtil.exportTwoSheetGeneralExcelByTitleAndList(fileName,sheetOneDataList,sheetTwoDataList,path,"人员出差详情表","人员出差统计");
+        httpRespMsg.data = resp;
+
+        return httpRespMsg;
+    }
+
     @Override
     public HttpRespMsg add(BusinessTrip sheet) {
         HttpRespMsg msg = new HttpRespMsg();
@@ -151,8 +240,14 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
         if (checkState==1){
             queryWrapper.ge("day_count",10);
         }
-        IPage<BusinessTrip> listIPager = businessTripMapper.selectPage(new Page<>(pageIndex, pageSize),
-                queryWrapper);
+        IPage<BusinessTrip> listIPager;
+        if(pageIndex!=null&&pageSize!=null){
+            listIPager = businessTripMapper.selectPage(new Page<>(pageIndex, pageSize),
+                    queryWrapper);
+        }else {
+            listIPager = businessTripMapper.selectPage(new Page<>(-1, -1),
+                    queryWrapper);
+        }
         List<BusinessTrip> records = listIPager.getRecords();
         //赋值项目名称
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", sheet.getCompanyId()));