Преглед на файлове

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

ggooalice преди 2 години
родител
ревизия
d9cbd662bf

+ 7 - 15
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BusinessTripController.java

@@ -1,29 +1,16 @@
 package com.management.platform.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.BusinessTrip;
-import com.management.platform.entity.Department;
-import com.management.platform.entity.LeaveSheet;
-import com.management.platform.entity.User;
-import com.management.platform.entity.vo.SysRichFunction;
-import com.management.platform.mapper.DepartmentMapper;
-import com.management.platform.mapper.SysFunctionMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.BusinessTripService;
-import com.management.platform.service.DepartmentService;
-import com.management.platform.service.LeaveSheetService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
-
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -64,8 +51,8 @@ public class BusinessTripController {
     }
 
     @RequestMapping("/list")
-    public HttpRespMsg list(BusinessTrip sheet, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
-        return businessTripService.queryList(sheet, pageIndex, pageSize);
+    public HttpRespMsg list(BusinessTrip sheet, @RequestParam Integer pageIndex, @RequestParam Integer pageSize,@RequestParam(defaultValue = "0") Integer checkState) {
+        return businessTripService.queryList(sheet, pageIndex, pageSize,checkState);
     }
 
     @RequestMapping("/approve")
@@ -94,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);
+    }
 }
 

+ 10 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -20,6 +20,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -272,6 +273,7 @@ public class TaskController {
     @RequestMapping("/finish")
     public HttpRespMsg finish(Task task) {
         HttpRespMsg msg = new HttpRespMsg();
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         //进行完成操作时需要检查子任务是否全部完成
@@ -303,7 +305,14 @@ public class TaskController {
                     }
                 }
             }
-
+            TaskComment taskComment=new TaskComment();
+            taskComment.setUserName(user.getName());
+            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+"完成了任务");
+            taskComment.setTaskId(task.getId());
+            taskComment.setUserId(user.getId());
+            taskComment.setCreateTime(LocalDateTime.now());
+            taskComment.setType(3);
+            taskCommentMapper.insert(taskComment);
         } else if (task.getTaskStatus() == 1) {
             task.setTaskStatus(0);
         } else {

+ 4 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/BusinessTripService.java

@@ -1,8 +1,7 @@
 package com.management.platform.service;
 
-import com.management.platform.entity.BusinessTrip;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.management.platform.entity.LeaveSheet;
+import com.management.platform.entity.BusinessTrip;
 import com.management.platform.util.HttpRespMsg;
 
 /**
@@ -21,11 +20,13 @@ public interface BusinessTripService extends IService<BusinessTrip> {
 
     HttpRespMsg deny(Integer id, String denyReason);
 
-    HttpRespMsg queryList(BusinessTrip sheet, Integer pageIndex, Integer pageSize);
+    HttpRespMsg queryList(BusinessTrip sheet, Integer pageIndex, Integer pageSize,Integer checkState);
 
     HttpRespMsg delete(Integer id);
 
     HttpRespMsg add(BusinessTrip sheet);
 
     HttpRespMsg modifyProject(BusinessTrip sheet);
+
+    HttpRespMsg exportData(BusinessTrip sheet,Integer keyword, String startDate, String endDate, String userId);
 }

+ 108 - 4
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();
@@ -88,12 +177,18 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
 
     @Override
     public HttpRespMsg delete(Integer id) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer cut = bustripProjectMapper.selectCount(new QueryWrapper<BustripProject>().eq("bustrip_id", id));
+        if(cut>0){
+            msg.setError("请清空项目关联信息");
+            return msg;
+        }
         businessTripMapper.deleteById(id);
-        return new HttpRespMsg();
+        return msg;
     }
 
     @Override
-    public HttpRespMsg queryList(BusinessTrip sheet, Integer pageIndex, Integer pageSize) {
+    public HttpRespMsg queryList(BusinessTrip sheet, Integer pageIndex, Integer pageSize,Integer checkState) {
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         QueryWrapper<BusinessTrip> queryWrapper = new QueryWrapper<BusinessTrip>();
@@ -142,8 +237,17 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
         if (sheet.getStartDate() != null && sheet.getEndDate() != null) {
             queryWrapper.le("start_date", sheet.getEndDate()).ge("end_date", sheet.getStartDate());
         }
-        IPage<BusinessTrip> listIPager = businessTripMapper.selectPage(new Page<>(pageIndex, pageSize),
-                queryWrapper);
+        if (checkState==1){
+            queryWrapper.ge("day_count",10);
+        }
+        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()));

+ 17 - 16
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -202,16 +202,20 @@
 
             <!-- 项目阶段 -->
             <!-- 换位置之前看下项目阶段发起的请求  -->
-            <el-table-column prop="currentStage" label="项目阶段" sortable="custom" min-width="150" width="220" v-if="user.company.packageProject == 1 && permissions.projectPhase">
+            <el-table-column prop="currentStage" label="项目阶段" sortable="custom" min-width="150" width="220" v-if="user.company.packageProject == 1">
                 <template slot-scope="scope">
-                    <span style="display: inline-block; width: 150px">
-                        <el-select v-model="phaseProjectValie" v-if="scope.row.index + ',' + scope.column.index == currentCell" :ref="scope.row.index + ',' + scope.column.index" filterable placeholder="请选择项目阶段" size="mini" @blur="hideSelect" @change="selectChange">
-                            <el-option v-for="(item, index) in phaseList" :key="index" :label="item.projectStageName" :value="item.id"> </el-option>
-                        </el-select>
-                        <el-link v-else type="primary" :underline="false">{{scope.row.currentStageId == null ? '暂无' : scope.row.currentStageName}}</el-link>
-                    </span> 
-                    
-                    <el-link v-if="(permissions.projectManagement || user.id==scope.row.inchargerId || user.id==scope.row.creatorId) && scope.row.index + ',' + scope.column.index != currentCell && rowid == scope.row.id" type="primary" :underline="false"><i class="el-icon-edit"></i></el-link> 
+                    <div v-if="permissions.projectManagement || user.id==scope.row.inchargerId || user.id==scope.row.creatorId">
+                        <span style="display: inline-block; width: 150px">
+                            <el-select v-model="phaseProjectValie" v-if="scope.row.index + ',' + scope.column.index == currentCell" :ref="scope.row.index + ',' + scope.column.index" filterable placeholder="请选择项目阶段" size="mini" @blur="hideSelect" @change="selectChange">
+                                <el-option v-for="(item, index) in phaseList" :key="index" :label="item.projectStageName" :value="item.id"> </el-option>
+                            </el-select>
+                            <el-link v-else type="primary" :underline="false">{{scope.row.currentStageId == null ? '暂无阶段' : scope.row.currentStageName}}</el-link>
+                        </span> 
+                        <el-link v-if="scope.row.index + ',' + scope.column.index != currentCell && rowid == scope.row.id" type="primary" :underline="false"><i class="el-icon-edit"></i></el-link> 
+                    </div>
+                    <div v-else>
+                        {{scope.row.currentStageId == null ? '暂无阶段' : scope.row.currentStageName}}
+                    </div>
                 </template>
             </el-table-column>
 
@@ -1332,14 +1336,11 @@ a {
                 column.index=columnIndex;
             },
             clickCell(row,column) {
-                // console.log('can can need',row,column)
+                console.log('can can need',row,column)
+                this.currentCell = row.index + ',' + column.index;
+                this.phaseProjectValie = row.currentStageId  ? row.currentStageId : ''
                 if(this.permissions.projectManagement || this.user.id==row.inchargerId || this.user.id==row.creatorId) {
-                    this.phaseProjectValie = row.currentStageId  ? row.currentStageId : ''
-                    this.currentCell = row.index + ',' + column.index;
-                    // if(column.label == '项目阶段') {
-                        this.phaseProjectId = row.id
-                        // this.obtainPhase(row)
-                    // }
+                    this.phaseProjectId = row.id
                     setTimeout(() => {
                         // 获得焦点
                         this.$refs[row.index + ',' + column.index].focus();