|
@@ -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()));
|