Explorar o código

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper into master

seyason hai 1 ano
pai
achega
2453b612bd

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -464,6 +464,10 @@ public class ProjectController {
     public HttpRespMsg exportAllProjectCost() {
         return projectService.exportAllProjectCost(request);
     }
+    @RequestMapping("/exportProjectEstimatedWorkTime")
+    public HttpRespMsg exportProjectEstimatedWorkTime(Integer projectId) {
+        return projectService.exportProjectEstimatedWorkTime(request ,projectId );
+    }
 
     //分页查询员工月度工时表
     @RequestMapping("/getEmpMonthHours")

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -469,6 +469,9 @@ public class Project extends Model<Project> {
     @TableField(exist = false)
     private String reallyWorkTime;
 
+    @TableField(exist = false)
+    private String groupName;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GroupEstimatedWorkVO.java

@@ -6,6 +6,9 @@ import lombok.Data;
 public class GroupEstimatedWorkVO {
     private Integer id;
     private String groupName;
+    private Integer projectId;
+    private String projectName;
+    private String projectCode;
     private String estimatedWorkTime;
     private String workTime;
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/ProjectEstimatedWorkVO.java

@@ -11,5 +11,7 @@ public class ProjectEstimatedWorkVO {
     private String projectName;
     private String estimatedWorkTime;
     private String workTime;
+    private String groupName;
+    private Integer groupId;
     private List<GroupEstimatedWorkVO> groupEstimatedWorkVOList;
 }

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

@@ -100,6 +100,8 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg exportAllProjectCost(HttpServletRequest request);
 
+    HttpRespMsg exportProjectEstimatedWorkTime(HttpServletRequest request,Integer projectId);
+
     HttpRespMsg getProjectInAndOut(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
 
     HttpRespMsg exportProjectInAndOut(HttpServletRequest request);

+ 106 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -332,6 +332,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+
     //分页获取项目列表
     @Override
     @Transactional(readOnly = true)
@@ -2525,6 +2526,111 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    public HttpRespMsg exportProjectEstimatedWorkTime(HttpServletRequest request,Integer projectId) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+
+        User user = userMapper.selectById(request.getHeader("Token"));
+        Integer companyId = user.getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+
+
+        //该公司下的allday
+        float allday=timeTypeMapper.selectOne(new QueryWrapper<TimeType>()
+                .eq("company_id",companyId)).getAllday();
+        //根据公司的id搜索该公司有哪些项目  20231108之前完成的不统计,状态为进行中/已完成
+        List<Project> selectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId).in("status", 1, 2));
+        List<Integer> collectProjectIds = selectList.stream().map(Project::getId).collect(Collectors.toList());
+
+        List<Project> selectProjects = projectMapper.selectList(new QueryWrapper<Project>().in("id", collectProjectIds)
+                .isNull("finish_date").or().ge("finish_date", "2023-11-08").eq(projectId != null, "project_id", projectId));
+
+        //查询到的project列表
+        List<Integer> collectIds = selectProjects.stream().map(Project::getId).collect(Collectors.toList());
+
+        //根据查询道德project列表查询总的reporeList
+        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>()
+                .in("project_id", collectIds));
+        //根据查询道德project列表查询总的task_groupList
+        List<TaskGroup> taskGroups = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>()
+                .in("project_id", collectIds));
+
+        for (Project project : selectProjects) {
+            Double reallWorkTime = reportList.stream().filter(r -> r.getProjectId() .equals( project.getId()))
+                    .mapToDouble(r->r.getWorkingTime()).sum();
+            String rWorkTime=reallWorkTime==null ? "0":reallWorkTime+"";
+            project.setReallyWorkTime(rWorkTime);
+            String pEstimatedWork=project.getManDay()==null ? 0*allday+"": project.getManDay()*allday+"";
+            project.setEstimatedWorkTime(pEstimatedWork);
+            List<TaskGroup> taskGroupCollect = taskGroups.stream().filter(t -> t.getProjectId() == project.getId())
+                    .collect(Collectors.toList());
+
+            ArrayList<GroupEstimatedWorkVO> groupEstimatedWorkVOS = new ArrayList<>();
+
+            if (taskGroupCollect.size()>0){
+                List<Integer> groupIds = taskGroupCollect.stream().map(TaskGroup::getId).collect(Collectors.toList());
+                List<Report> getByProjectAndGroup = reportMapper.selectList(new QueryWrapper<Report>()
+                        .eq("project_id", project.getId())
+                        .in("group_id", groupIds));
+                for (TaskGroup taskGroup : taskGroupCollect) {
+                    Double gReallWorkTime = getByProjectAndGroup.stream().filter(r -> r.getGroupId().equals( taskGroup.getId()))
+                            .mapToDouble(r->r.getWorkingTime()).sum();
+                    GroupEstimatedWorkVO groupEstimatedWorkVO = new GroupEstimatedWorkVO();
+                    String grWorkTime=gReallWorkTime==null ? "0":gReallWorkTime+"";
+                    String gEstimatedWork=taskGroup.getManDay()==null ? 0*allday+"": taskGroup.getManDay()*allday+"";
+
+                    groupEstimatedWorkVO.setWorkTime(grWorkTime);
+                    groupEstimatedWorkVO.setEstimatedWorkTime(gEstimatedWork);
+                    groupEstimatedWorkVO.setId(taskGroup.getId());
+                    groupEstimatedWorkVO.setGroupName(taskGroup.getName());
+
+                    groupEstimatedWorkVOS.add(groupEstimatedWorkVO);
+                }
+            }
+            project.setGroupEstimatedWorkVOList(groupEstimatedWorkVOS);
+        }
+
+
+
+        List<ProjectEstimatedWorkVO> list = new ArrayList<>();
+
+        List<List<String>> exportList = new ArrayList<>();
+        //String[] titles = {"项目编号", "项目名称", "任务名称", "计划工时(h)", "实际工时(h)"};
+        String[] titles = {MessageUtils.message("entry.projectId"), MessageUtils.message("entry.projectName"), MessageUtils.message("entry.taskName"), MessageUtils.message("excel.plannedWork"), MessageUtils.message("excel.actualWork")};
+        exportList.add(Lists.list(titles));
+        for (Project project : selectProjects) {
+            List<String> data = new ArrayList<>();
+
+            data.add(project.getProjectCode() == null?"":project.getProjectCode().toString());
+            data.add(project.getProjectName() == null?"":project.getProjectName());
+            data.add(project.getGroupName() == null?"":project.getGroupName());
+            data.add(project.getEstimatedWorkTime() != null?project.getEstimatedWorkTime().toString():"");
+            data.add(project.getReallyWorkTime() != null?project.getReallyWorkTime().toString():"");
+            exportList.add(data);
+
+            if (project.getGroupEstimatedWorkVOList().size()>0){
+                List<GroupEstimatedWorkVO> groupEstimatedWorkVOList = project.getGroupEstimatedWorkVOList();
+                for (GroupEstimatedWorkVO groupEstimatedWorkVO : groupEstimatedWorkVOList) {
+                    List<String> data1 = new ArrayList<>();
+                    data1.add(groupEstimatedWorkVO.getProjectCode() == null?"":groupEstimatedWorkVO.getProjectCode().toString());
+                    data1.add(groupEstimatedWorkVO.getProjectName() == null?"":groupEstimatedWorkVO.getProjectName());
+                    data1.add(groupEstimatedWorkVO.getGroupName() == null?"":groupEstimatedWorkVO.getGroupName());
+                    data1.add(groupEstimatedWorkVO.getEstimatedWorkTime() != null?groupEstimatedWorkVO.getEstimatedWorkTime().toString():"");
+                    data1.add(groupEstimatedWorkVO.getWorkTime() != null?groupEstimatedWorkVO.getWorkTime().toString():"");
+                    exportList.add(data1);
+                }
+            }
+        }
+        //String fileName = "项目任务报表_"+System.currentTimeMillis();
+        String fileName = "预估工时表"+System.currentTimeMillis();
+        try {
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName, exportList, path);
+        } catch (Exception e) {
+            e.printStackTrace();
+            httpRespMsg.setError(e.getMessage());
+        }
+        return httpRespMsg;
+    }
+
     @Override
     public HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));

+ 6 - 4
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -76,13 +76,13 @@
     <div ref="staff" style="margin: 5px;">
         <div class="staff" ref="tabless" :style="'width:'+(windowWidth - 430)+'px'">
             <!-- 人员工时工价表 -->
-            <el-table v-if="ins == 0"  key="1" border :data="personWorkHoursWagesList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
-                <el-table-column align="center" prop="departmentCascade" label="部门名称" min-width="150">
+            <el-table v-if="ins == 0"  :key="plondelas" border :data="personWorkHoursWagesList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+                <el-table-column align="center" prop="departmentCascade" label="部门名称" min-width="150" fixed="left">
                   <template slot-scope="scope">
                     {{scope.row.departmentCascade}}
                   </template>
                 </el-table-column>
-                <el-table-column align="center" prop="name" label="人员" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="name" label="人员" min-width="250" fixed="left"></el-table-column>
                 <el-table-column v-for="(item, index) in personWorkHoursWagesHead" :key="index" :label="item" align="center" min-width="250">
                     <template slot-scope="scope">
                         <div v-for="(items, indexs) in scope.row.personWorkHoursWages" :key="indexs" @click="showReportDetail(scope.row,item)" class="colorText">
@@ -546,8 +546,9 @@ export default {
       productId:"",
       productList:[],
       vehicleNum:"",
-      steelNum:""
+      steelNum:"",
 
+      plondelas: 100, 
     };
   },
   computed: {},
@@ -753,6 +754,7 @@ export default {
             this.personWorkHoursWagesHead=res.data.header
             this.simpleDateChoose=this.personWorkHoursWagesHead[0]
             this.total=res.data.total
+            this.plondelas++
           } else {
             this.$message({
               message: res.msg,

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -57,7 +57,7 @@
                     </div>
                 </el-form-item>
                 <el-form-item >
-                    <div style="margin-left: 80px">
+                    <div style="margin-left: 20px">
                         <el-select v-model="dateType" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')">
                             <el-option :label="$t('starttimes')" :value="0" @click.native="hiddens(1)"></el-option>
                             <el-option :label="$t('deadline')" :value="1" @click.native="hiddens(1)"></el-option>
@@ -352,7 +352,7 @@
 }
 .autodatespan{
     padding: 1.5px 2.5px;
-    width: 73px;
+    width: 90px;
     height: 16px;
     line-height: 16px;
     text-align: center;

+ 21 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -19,7 +19,13 @@
                     type="default"
                     size="mini"
                     @click="switchWeek(item,index)"
-                    :disabled="canSelect(item)">{{weekArr[index]}}</van-button>
+                    :disabled="canSelect(item)" v-if="user.timeType.enableNewWeeklyfill != 1">{{weekArr[index]}}</van-button>
+                    <van-button
+                    class="selectgxbtn"
+                    type="default"
+                    size="mini"
+                    @click="switchWeek(item,index)"
+                    :disabled="canSelect(item)" v-if="user.timeType.enableNewWeeklyfill == 1">{{ weekText(dateRange[index]) }}</van-button>
                 </van-grid-item>
                 <van-grid-item v-if="weekIndex != 7">
                     <van-button type="default" size="mini" class="selectgxbtn" @click="addWeekIndex()" icon="plus" v-if="user.timeType.enableNewWeeklyfill != 1"></van-button>
@@ -700,6 +706,7 @@
                     })
                     let { dateList } = data
                     this.dateRange = dateList.map(item => new Date(item.date))
+                    this.dateText = [dateList[0].date, dateList[dateList.length - 1].date]
                 } else {
                     for(let i=0;i<this.weekIndex;i++){
                         this.dateRange.push(new Date(date.getFullYear(),date.getMonth(),date.getDate()+i))
@@ -717,7 +724,10 @@
 
                 let startDateStr = startDate.getFullYear() + '-' + (startDateM < 10 ? '0' + startDateM : startDateM) + '-' + (startDateD < 10 ? '0' + startDateD : startDateD)
                 let endDateStr = endDate.getFullYear() + '-' + (endDateM < 10 ? '0' + endDateM : endDateM) + '-' + (endDateD < 10 ? '0' + endDateD : endDateD)
-                this.dateText = [startDateStr,endDateStr]
+
+                if(enableNewWeeklyfill != 1) {
+                    this.dateText = [startDateStr,endDateStr]
+                }
 
                 this.form = []
                 for(let i=0;i<this.weekIndex;i++){
@@ -2240,6 +2250,15 @@
                     )
                 });
             },
+            weekText(item) {
+                return this.getWeekDay(item)
+            },
+            // 中国标准时间转成周几
+            getWeekDay(date) {
+                var week = new Date(date).getDay();
+                var weekArr = ['日', '一', '二', '三', '四', '五', '六'];
+                return '周' + weekArr[week];
+            },
             // 中国标准时间转成YYYY-MM-DD
             formatDate(date) {
                 if (!date) {