Selaa lähdekoodia

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

ggooalice 2 vuotta sitten
vanhempi
commit
6fea8e6342

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyDingdingServiceImpl.java

@@ -242,7 +242,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
     public void sendReportApproveMsg(Integer companyId, Long agentId, String auditorName, String evaluate, LocalDate date, String useridList) {
         if (isDev) return;
         CompanyDingding dingding = getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
-        TimeType timeType = timeTypeMapper.selectById(new QueryWrapper<TimeType>().eq("company_id", companyId));
+        TimeType timeType = timeTypeMapper.selectById(companyId);
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         if (isPrivateDeploy) {
             List<OapiMessageCorpconversationAsyncsendV2Request.Form> form=new ArrayList<>();

+ 21 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -1164,7 +1164,10 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
             //加上待分摊的无工时项目,如果当前项目列表没有的话
             if (assignNoProUser != null && assignNoProUser && noProjectItem.project != null) {
                 List<FinanceProjects> financeProjects = financeProjectsMapper.selectList(new QueryWrapper<FinanceProjects>().eq("company_id", companyId).eq("ymonth", yearMonth));
-
+                if (financeProjects.size() == 0) {
+                    httpRespMsg.setError("缺少待分摊项目,请重新设置并保存分摊比例设置");
+                    return httpRespMsg;
+                }
                 //检查是否已经设置好分配规则
                 ProjectPercentage percentage = projectPercentageMapper.selectOne(new QueryWrapper<ProjectPercentage>().eq("company_id", companyId).eq("ymonth", yearMonth));
                 List<Map> noPUserDataList = new ArrayList<>();
@@ -1176,8 +1179,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                     //获取设置的项目
                     String data = percentage.getData();
                     JSONArray parse = JSONArray.parseArray(data);
+
                     //获取到无项目人员配置的项目
-                    financeProjects.forEach(f->{
+                    for (FinanceProjects f : financeProjects) {
                         for (int i = 0; i < parse.size(); i++) {
                             JSONObject json = parse.getJSONObject(i);
                             String userId = json.getString("id");
@@ -1187,16 +1191,22 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                             userCostMap.put("creatorId", userId);
                             userCostMap.put("workingTime", 0.0f);
                             double percent = json.getDouble(f.getProjectId()+"");
-                            Finance finance = noProjectUser.stream().filter(no -> no.getUserId().equals(userId)).findFirst().get();
+                            Optional<Finance> first = noProjectUser.stream().filter(no -> no.getUserId().equals(userId)).findFirst();
+                            if (first.isPresent()) {
+                                Finance finance = first.get();
 //                            BigDecimal curProjectCost = finance.getTotalCost().multiply(new BigDecimal(percent)).divide(new BigDecimal(100));
-                            userCostMap.put("finance", finance);
-                            userCostMap.put("percent", percent);
-                            userCostMap.put("project", f.getProjectId());
-                            userCostMap.put("projectId", f.getProjectId());
-                            userCostMap.put("projectCode", f.getProjectCode());
-                            noPUserDataList.add(userCostMap);
+                                userCostMap.put("finance", finance);
+                                userCostMap.put("percent", percent);
+                                userCostMap.put("project", f.getProjectName());
+                                userCostMap.put("projectId", f.getProjectId());
+                                userCostMap.put("projectCode", f.getProjectCode());
+                                noPUserDataList.add(userCostMap);
+                                System.out.println("添加="+f.getProjectId()+", "+f.getProjectName()+", "+percent);
+                            } else {
+                                System.out.println("未找到人员=="+username);
+                            }
                         }
-                    });
+                    }
                 }
 
 
@@ -1221,6 +1231,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 //按比例分配
                 for (ProjectSumItem p : pList) {
                     List<Map> filterUserList = noPUserDataList.stream().filter(map->((Integer)map.get("projectId")).equals(p.projectId)).collect(Collectors.toList());
+                    System.out.println("过滤到的无项目人员size==="+filterUserList.size());
                     for (Map f : filterUserList) {
                         String curUserId = (String)f.get("creatorId");
                         double percent = (double)f.get("percent");

+ 28 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectPercentageServiceImpl.java

@@ -26,6 +26,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -61,7 +62,7 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
             f.setCompanyId(user.getCompanyId());
             f.setYmonth(ymonth);
         });
-        financeProjectsService.remove(new QueryWrapper<FinanceProjects>().eq("company_id", user.getCompanyId()));
+        financeProjectsService.remove(new QueryWrapper<FinanceProjects>().eq("company_id", user.getCompanyId()).eq("ymonth", ymonth));
         financeProjectsService.saveBatch(financeProjects);
 
         ProjectPercentage projectPercentage = projectPercentageMapper.selectOne(new QueryWrapper<ProjectPercentage>().eq("company_id", user.getCompanyId())
@@ -90,7 +91,7 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
         Integer companyId = user.getCompanyId();
         List<Project> allProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
 
-        List<FinanceProjects> flist = financeProjectsService.list(new QueryWrapper<FinanceProjects>().eq("company_id", user.getCompanyId()));
+        List<FinanceProjects> flist = financeProjectsService.list(new QueryWrapper<FinanceProjects>().eq("company_id", user.getCompanyId()).eq("ymonth", ymonth));
         ProjectPercentage projectPercentage = projectPercentageMapper.selectOne(new QueryWrapper<ProjectPercentage>().eq("company_id",user.getCompanyId())
                 .eq("ymonth", ymonth));
 
@@ -153,6 +154,7 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
             String dataStringOne;
             List<String> projectList = new ArrayList<>();
             List<Project> allProjectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+            List<FinanceProjects> filterFPList = new ArrayList<>();
             int projectNameStartIndex=1;
             int dataCount = 0;
             for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
@@ -217,7 +219,22 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
                         }
                         String stringCellValue = row.getCell(i).getStringCellValue();
                         s+=Integer.parseInt(stringCellValue);
-                        jsonObject.put(projectList.get(i-1),stringCellValue);
+                        String pid = projectList.get(i-1);
+                        jsonObject.put(pid,stringCellValue);
+                        if (!filterFPList.stream().anyMatch(f->f.getProjectId().equals(pid))) {
+                            //不存在的项目,要加进去
+                            FinanceProjects fp = new FinanceProjects();
+                            fp.setCompanyId(companyId);
+                            fp.setYmonth(ymonth);
+                            Optional<Project> first = allProjectList.stream().filter(ap -> ap.getId().equals(pid)).findFirst();
+                            if (first.isPresent()) {
+                                Project project = first.get();
+                                fp.setProjectId(project.getId());
+                                fp.setProjectName(project.getProjectName());
+                                fp.setProjectCode(project.getProjectCode());
+                                filterFPList.add(fp);
+                            }
+                        }
                     }
                     dataStringOne=jsonObject.toJSONString();
                     if(rowIndex!=rowNum){
@@ -251,6 +268,14 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
                 projectPercentage.setCompanyId(companyId);
                 projectPercentageService.save(projectPercentage);
             }
+            //保存projectFinance(当月的待分摊项目)表
+            List<FinanceProjects> list = financeProjectsService.list(new QueryWrapper<FinanceProjects>().eq("company_id", companyId).eq("ymonth", ymonth));
+            List<Integer> removeIds = list.stream().filter(li -> !filterFPList.stream().anyMatch(fp -> fp.getProjectId().equals(li.getProjectId()))).map(FinanceProjects::getId).collect(Collectors.toList());
+            if (removeIds.size() > 0) {
+                financeProjectsService.removeByIds(removeIds);
+            }
+            List<FinanceProjects> addData = filterFPList.stream().filter(fp -> !list.stream().anyMatch(li -> li.getProjectId().equals(fp.getProjectId()))).collect(Collectors.toList());
+            financeProjectsService.saveBatch(addData);
             msg.data=dataCount;
             return msg;
         }catch (IOException e){

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

@@ -2781,6 +2781,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                     SubProject sp = new SubProject();
                                     sp.setName(s);
                                     sp.setProjectId(project.getId());
+                                    sp.setCompanyId(user.getCompanyId());
                                     subProjectMapper.insert(sp);
                                 }
                             }

+ 6 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -734,7 +734,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
 
         //批量新增或更新
-        reportService.saveOrUpdateBatch(reportList);
+        if (reportList.size() > 0) {
+            reportService.saveOrUpdateBatch(reportList);
+        } else {
+            //没有需要更新的,则
+        }
+
         //更新任务完成状态
         List<Integer> finishedTaskIds = reportList.stream().filter(r->r.getTaskId() != null && r.getTaskId() != 0 && r.getTaskFinish() == 1)
                 .map(Report::getTaskId).collect(Collectors.toList());
@@ -898,9 +903,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         reportLogService.saveBatch(addLogList);
     }
 
-
-
-
     private void loadPicFromCorpWXServer(Integer companyId, List<Report> reportList) {
         List<Report> batchUpdateList = new ArrayList<>();
         if (wxCorpInfoMapper.selectCount(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId)) > 0) {

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -333,7 +333,10 @@
                 <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
                 <el-form-item :label="'执行人'+(index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
                     <el-select v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" size="small" filterable clearable placeholder="请选择执行人" style="width:40%;" @change="$forceUpdate()">
-                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
+                             <span style="float: left">{{ item.name }}</span>
+                             <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
+                        </el-option>
                     </el-select>
                     <span style="margin-left:30px;margin-right:10px;">计划工时</span>
                     <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-model="gstimday[index]" style="width:16%;" :min="1" :max="100"  placeholder="请输入计划工作时长,单位天" @change="chggstim(0,index)"></el-input-number ><span style="margin-left:5px;">天</span>

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

@@ -246,7 +246,7 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item label="类型">
-                    <el-select v-model="addForm.taskType" style="width:100%;" :disabled="this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id">
+                    <el-select v-model="addForm.taskType" style="width:100%;" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement">
                         <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id">
                             <i :class="item.icon" ></i>
                             <span>{{item.name}}</span>
@@ -254,27 +254,30 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item label="任务内容" prop="name">
-                    <el-input v-model="addForm.name" :maxlength="40" :disabled="this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id" placeholder="请输入任务内容" clearable></el-input>
+                    <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" placeholder="请输入任务内容" clearable></el-input>
                 </el-form-item>
                 
                 <el-form-item :label="addForm.taskType == 1 ? '截至时间' : '开始时间'" :prop="addForm.taskType == 1 ? 'endDate' : 'startDate'">
                     <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"  
-                    placeholder="请选择日期" :disabled="this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id" v-if="addForm.taskType != 1"></el-date-picker>
+                    placeholder="请选择日期" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-if="addForm.taskType != 1"></el-date-picker>
                     <span style="margin-left:30px;margin-right:10px;" v-if="addForm.taskType != 1">截止时间</span>
                     <el-date-picker v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"  
-                    placeholder="请选择日期" :disabled="this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id"></el-date-picker>
+                    placeholder="请选择日期" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement"></el-date-picker>
                     </el-form-item>
                 <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
                 <el-form-item :label="'执行人'+(index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
-                    <el-select v-model="executorItem.executorId" :disabled="addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id" size="small" filterable clearable placeholder="请选择执行人" style="width:40%;" @change="$forceUpdate()">
-                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                    <el-select v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" size="small" filterable clearable placeholder="请选择执行人" style="width:40%;" @change="$forceUpdate()">
+                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
+                            <span style="float: left">{{ item.name }}</span>
+                            <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
+                        </el-option>
                     </el-select>
                     <span style="margin-left:30px;margin-right:10px;">计划工时</span>
-                    <el-input-number size="small" :disabled="addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id" v-model="executorItem.planHours" style="width:30%;" :min="1" :max="100"  placeholder="请输入计划工作时长,单位小时" ></el-input-number ><span style="margin-left:10px;">小时</span>
+                    <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-model="executorItem.planHours" style="width:30%;" :min="1" :max="100"  placeholder="请输入计划工作时长,单位小时" ></el-input-number ><span style="margin-left:10px;">小时</span>
                     <!--移除执行人 -->
-                    <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
+                    <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id|| permissions.projectManagement)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
                 </el-form-item>
-                <el-link type="primary" v-if="addForm.executorListFront.length<10&& (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id)" style="margin-left:35px;" @click="addExecutorLine">添加执行人</el-link>
+                <el-link type="primary" v-if="(addForm.executorListFront == null || addForm.executorListFront.length<10)&& (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id || permissions.projectManagement)" style="margin-left:35px;" @click="addExecutorLine">添加执行人</el-link>
                 </div>
                 
                 <el-form-item label="优先级">