Browse Source

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

Min 1 year ago
parent
commit
e81cb16cad

+ 10 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -307,10 +307,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<TaskGroup> taskGroups = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>()
                 .in("project_id", collectIds));
 
+        DecimalFormat df = new DecimalFormat("0.00");
+
         for (Project project : records) {
             Double reallWorkTime = reportList.stream().filter(r -> r.getProjectId() .equals( project.getId()))
                     .mapToDouble(r->r.getWorkingTime()).sum();
-            String rWorkTime=reallWorkTime==null ? "0":reallWorkTime+"";
+            String rWorkTime=reallWorkTime==null ? "0":df.format(reallWorkTime);
             project.setReallyWorkTime(rWorkTime);
             String pEstimatedWork=project.getManDay()==null ? 0*allday+"": project.getManDay()*allday+"";
             project.setEstimatedWorkTime(pEstimatedWork);
@@ -2899,11 +2901,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         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));
+        List<Project> selectProjects = projectMapper.selectList(new QueryWrapper<Project>()
+                .eq("company_id", companyId).in("status", 1, 2)
+                .and(wrapper->wrapper.isNull("finish_date").or().ge("finish_date", "2023-11-08")).eq(projectId!=null,"id",projectId));
 
         //查询到的project列表
         List<Integer> collectIds = selectProjects.stream().map(Project::getId).collect(Collectors.toList());
@@ -2915,10 +2916,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<TaskGroup> taskGroups = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>()
                 .in("project_id", collectIds));
 
+        DecimalFormat df = new DecimalFormat("0.00");
+
         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+"";
+            String rWorkTime=reallWorkTime==null ? "0":df.format(reallWorkTime);
             project.setReallyWorkTime(rWorkTime);
             String pEstimatedWork=project.getManDay()==null ? 0*allday+"": project.getManDay()*allday+"";
             project.setEstimatedWorkTime(pEstimatedWork);
@@ -2956,12 +2959,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
         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")};
+        String[] titles = { 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():"");
@@ -2972,7 +2974,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 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():"");

+ 31 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -7268,6 +7268,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 .eq("creator_id", userId).between("create_date", startDate, endDate).groupBy("create_date"));
         //获取日报详情
         List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("creator_id", userId).between("create_date", startDate, endDate).orderByAsc("create_date"));
+        List<ReportExtraDegree> degreeList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", user.getCompanyId()));
 
         List<Integer> collect = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
         List<User> auditorList = new ArrayList<>();
@@ -7332,6 +7333,36 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         report.setSapServiceName(optionalSap.get().getServiceName());
                     }
                 }
+                //设置自定义维度
+                if (timeType.getCustomDegreeActive() == 1) {
+                    if (timeType.getCustomDegreeWithPro() == 1) {
+                        String associateDegrees = optional.get().getAssociateDegrees();
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        if (associateDegrees != null) {
+                            String[] split = associateDegrees.split("\\,");
+                            for (int i=0;i<split.length; i++) {
+                                HashMap map = new HashMap();
+                                if (!StringUtils.isEmpty(split[i])) {
+                                    Integer id = Integer.parseInt(split[i]);
+                                    map.put("id", id);
+                                    map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
+                                    degreeMapList.add(map);
+                                }
+                            }
+                        }
+                        report.setDegreeList(degreeMapList);
+                    } else {
+                        //把degreeList改成HashMap结构
+                        List<HashMap> mapDegreeList = new ArrayList<>();
+                        for (ReportExtraDegree degree : degreeList) {
+                            HashMap map = new HashMap();
+                            map.put("id", degree.getId());
+                            map.put("name", degree.getName());
+                            mapDegreeList.add(map);
+                        }
+                        report.setDegreeList(mapDegreeList);
+                    }
+                }
             }
         }
 

+ 10 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -633,14 +633,16 @@
                         </el-form-item>
 
                         <!-- 相关维度/自定义维度 -->
-                        <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList != undefined && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
-                            <el-select v-if="!yonghuUser.customDegreeMultiple" v-model="domain.degreeId" clearable :placeholder="$t('defaultText.pleaseChoose')" :disabled="!domain.canEdit" style="width:200px;" filterable>
+                        <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1 && !yonghuUser.customDegreeMultiple" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList != undefined && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
+                            <el-select v-model="domain.degreeId" clearable :placeholder="$t('defaultText.pleaseChoose')" :disabled="!domain.canEdit" style="width:200px;" filterable>
                                 <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
                                 </el-option>
                             </el-select>
-                            <el-select v-else v-model="domain.multiDegrIdArray" multiple clearable :placeholder="$t('defaultText.pleaseChoose')" :disabled="!domain.canEdit" style="width:75%;margin-right:7%" filterable>
+                        </el-form-item>
+                        <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1 && yonghuUser.customDegreeMultiple" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList != undefined && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.multiDegrIdArray'">
+                            <el-select v-model="domain.multiDegrIdArray" multiple clearable :placeholder="$t('defaultText.pleaseChoose')" :disabled="!domain.canEdit" style="width:75%;margin-right:7%" filterable>
                                 <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
-                                </el-option>
+                                </el-option> 
                             </el-select>
                         </el-form-item>
 
@@ -6031,8 +6033,10 @@
                     }
                 }
                 let errtips = ''
-                if(this.user.timeType.customDegreeStatus == 1 && this.zhoBao.wuduList.length != 0 && !this.zhoBao.degreeId) {
-                    errtips += this.user.timeType.customDegreeName + '、'
+                if(this.user.timeType.customDegreeStatus == 1 && this.zhoBao.wuduList.length != 0) {
+                    if ((!this.user.timeType.customDegreeMultiple && !this.zhoBao.degreeId) || (this.user.timeType.customDegreeMultiple && (!this.zhoBao.multiDegrIdArray || this.zhoBao.multiDegrIdArray.length==0))) {
+                        errtips += this.user.timeType.customDegreeName + '、'
+                    }
                 }
                 if(this.user.timeType.customDataStatus == 1 && !this.zhoBao.customData){
                     errtips += this.user.timeType.customDataName + '、'

+ 1 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -2261,8 +2261,6 @@ export default {
                     formData.append("auditorSettingArray", JSON.stringify(audItem).replace(/,/g, "@"));
                 }
 
-
-
                 if (this.user.timeType.customDegreeActive == 1) {
                     let customDegreeMultiple = this.user.timeType.customDegreeMultiple
                     if (this.form.domains[i].degreeId) {
@@ -2274,7 +2272,7 @@ export default {
                             formData.append("multiDegrId", JSON.stringify(newDegreeId).replace(/,/g, '@'))
                         }
                     } else {
-                        if (this.user.timeType.customDegreeStatus && this.form.domains[i].wuduList.length) {
+                        if (this.user.timeType.customDegreeStatus && !this.form.domains[i].degreeId) {
                             this.$toast.fail('请选择' + this.user.timeType.customDegreeName)
                             return
                         } else {

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

@@ -177,13 +177,13 @@
                             <div class="chooseSomeone">
                                 <div class="chooseSomeoneFlex1">
                                     <!-- 复选 -->
-                                    <van-radio-group v-model="item.radioPickDegree" v-if="!user.timeType.customDegreeMultiple">
+                                    <van-radio-group v-model="item.radioPickDegree" v-if="!user.timeType.customDegreeMultiple" @change="$forceUpdate()">
                                         <van-radio v-for="uitem in item.wuduList" :key="uitem.id" :name="uitem.id" style="padding:10px">
                                             {{ uitem.name ? uitem.name : '' }}
                                         </van-radio>
                                     </van-radio-group>
                                     <!-- 多选 -->
-                                    <van-checkbox-group v-model="item.radioPickDegree" v-if="user.timeType.customDegreeMultiple">
+                                    <van-checkbox-group v-model="item.radioPickDegree" v-if="user.timeType.customDegreeMultiple" @change="$forceUpdate()">
                                         <van-checkbox v-for="uitem in item.wuduList" :key="uitem.id" :name="uitem.id" style="padding:10px">
                                             {{ uitem.name ? uitem.name : '' }}
                                         </van-checkbox>
@@ -2151,6 +2151,12 @@
                                     formData.append("multiDegrId", JSON.stringify(newDegreeId).replace(/,/g, '@'))
                                 }
                             } else {
+                                if(this.user.timeType.customDegreeStatus == 1) {
+                                    let times = this.form[formIndex].createDate
+                                    console.log(times)
+                                    this.$toast.fail(`[${this.getWeekDay(this.formatTime(times))}] 请选择 ${this.user.timeType.customDegreeName}`)
+                                    return
+                                }
                                 formData.append("degreeId", !customDegreeMultiple ? -1 : "[]");
                             }
                         } else {