Prechádzať zdrojové kódy

财务核算成本分摊比例设置bug

seyason 2 rokov pred
rodič
commit
0a07d2b370

+ 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) {