Browse Source

修复计划数量变化时,进度不更新的问题。

QuYueTing 8 months ago
parent
commit
9accd724ac

+ 33 - 28
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -320,6 +320,8 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         HttpRespMsg msg=new HttpRespMsg();
         HttpRespMsg msg=new HttpRespMsg();
         plan.setCompanyId(companyId);
         plan.setCompanyId(companyId);
         plan.setCreateId(user.getId());
         plan.setCreateId(user.getId());
+        //检查数量是否发生改变
+        boolean planNumChanged = false;
         if(plan.getStationId()!=null){
         if(plan.getStationId()!=null){
             Department department = departmentMapper.selectById(plan.getStationId());
             Department department = departmentMapper.selectById(plan.getStationId());
             plan.setStationName(department.getDepartmentName());
             plan.setStationName(department.getDepartmentName());
@@ -399,6 +401,11 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             }else {
             }else {
                 plan.setPlanType(1);
                 plan.setPlanType(1);
             }
             }
+            Plan oldPlan = planMapper.selectById(plan.getId());
+
+            if(oldPlan.getStatus() > 0 && !oldPlan.getNum().equals(plan.getNum())){
+                planNumChanged = true;
+            }
             if(planMapper.updateById(plan)<0){
             if(planMapper.updateById(plan)<0){
                 msg.setError("验证失败");
                 msg.setError("验证失败");
                 return msg;
                 return msg;
@@ -460,8 +467,14 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 if(oldPlanProcedureTotals.size()>0){
                 if(oldPlanProcedureTotals.size()>0){
                     Optional<PlanProcedureTotal> b = oldPlanProcedureTotals.stream().filter(fs -> fs.getPlanId().equals(plan.getId()) && fs.getProdProcedureId().equals(prodProcedure.getId())).findAny();
                     Optional<PlanProcedureTotal> b = oldPlanProcedureTotals.stream().filter(fs -> fs.getPlanId().equals(plan.getId()) && fs.getProdProcedureId().equals(prodProcedure.getId())).findAny();
                     //存在更新表数据
                     //存在更新表数据
-                    if(b.isPresent()){
-                        p.setId(b.get().getId());
+                    if(b.isPresent()) {
+                        PlanProcedureTotal oldPT = b.get();
+                        p.setId(oldPT.getId());
+                        if (planNumChanged && oldPT.getTotalFillTime() != null) {
+                            BigDecimal oldFillTime = new BigDecimal(oldPT.getTotalFillTime());
+                            BigDecimal percent = oldFillTime.multiply(new BigDecimal(100)).divide(new BigDecimal(p.getTotalWorkingHours()),0,RoundingMode.HALF_UP);
+                            p.setTotalProgress(percent.intValue());
+                        }
                     }
                     }
                 }
                 }
                 planProcedureTotals.add(p);
                 planProcedureTotals.add(p);
@@ -480,38 +493,30 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             }
             }
         }
         }
         planProcedureTotalService.saveOrUpdateBatch(planProcedureTotals);
         planProcedureTotalService.saveOrUpdateBatch(planProcedureTotals);
-        //新增的时候 计划相同的产品 分配到相同的班组的时候 组员自动分配到上次分配到的人员上
-//        if(isNew){
-//            if(plans.size()>0){
-//                Plan oldPlan = plans.get(0);
-//                List<PlanProcedureTotal> oldTotalList = planProcedureTotalService.list(new LambdaQueryWrapper<PlanProcedureTotal>().eq(PlanProcedureTotal::getPlanId, oldPlan.getId()));
-//                List<Integer> ids = oldTotalList.stream().map(PlanProcedureTotal::getId).distinct().collect(Collectors.toList());
-//                ids.add(-1);
-//                List<ProdProcedureTeam> procedureTeams = prodProcedureTeamService.list(new LambdaQueryWrapper<ProdProcedureTeam>().in(ProdProcedureTeam::getPlanProcedureId, ids));
-//                for (PlanProcedureTotal planProcedureTotal : planProcedureTotals) {
-//                    Optional<PlanProcedureTotal> first = oldTotalList.stream().filter(ot -> ot.getProdProcedureId().equals(planProcedureTotal.getProdProcedureId())).findFirst();
-//                    if(!first.isPresent()){
-//                        continue;
-//                    }
-//                    List<ProdProcedureTeam> teams = procedureTeams.stream().filter(ps -> ps.getPlanProcedureId().equals(first.get().getId())).collect(Collectors.toList());
-//                    if(teams!=null&&teams.size()>0){
-//                        String teamIds = teams.stream().map(ProdProcedureTeam::getUserId).distinct().collect(Collectors.joining(","));
-//                        try {
-//                            teamAllocation(planProcedureTotal,teamIds,plan.getPlanType());
-//                        } catch (Exception e) {
-//                            e.printStackTrace();
-//                        }
-//                    }
-//                }
-//
-//            }
-//        }
         List<PlanProcedureTotal> totals = planProcedureTotals.stream().filter(ps -> ps.getPlanId().equals(plan.getId())).collect(Collectors.toList());
         List<PlanProcedureTotal> totals = planProcedureTotals.stream().filter(ps -> ps.getPlanId().equals(plan.getId())).collect(Collectors.toList());
         if(totals.size()>0){
         if(totals.size()>0){
             double sum = totals.stream().filter(t->t.getTotalWages()!=null).mapToDouble(PlanProcedureTotal::getTotalWages).sum();
             double sum = totals.stream().filter(t->t.getTotalWages()!=null).mapToDouble(PlanProcedureTotal::getTotalWages).sum();
             plan.setPlanTotalWages(new BigDecimal(sum));
             plan.setPlanTotalWages(new BigDecimal(sum));
         }
         }
         planMapper.updateById(plan);
         planMapper.updateById(plan);
+
+        if (planNumChanged) {
+            //检查该计划下的所有工序是否都已经完成
+            List<PlanProcedureTotal> planProcedureTotalList = planProcedureTotalService.list(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", plan.getId()));
+            boolean isAllFinish = true;
+            for (PlanProcedureTotal p : planProcedureTotalList) {
+                if (p.getTotalProgress() == null || p.getTotalProgress() < 100) {
+                    isAllFinish = false;
+                    break;
+                }
+            }
+            if (isAllFinish) {
+                //该计划下的所有工序都已经完成了,那么该计划就是完成状态
+                plan.setRealEndDate(LocalDate.now());
+                plan.setHideState(1);//完成的隐藏掉
+                planMapper.updateById(plan);
+            }
+        }
         return msg;
         return msg;
     }
     }
 
 

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

@@ -202,9 +202,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
 
         //核算本次填报的件数是否合法
         //核算本次填报的件数是否合法
         List<Report> allFileProcReportList = reportMapper.selectList(new QueryWrapper<Report>().eq("plan_id", report.getPlanId()).eq("prod_procedure_id", report.getProdProcedureId()));
         List<Report> allFileProcReportList = reportMapper.selectList(new QueryWrapper<Report>().eq("plan_id", report.getPlanId()).eq("prod_procedure_id", report.getProdProcedureId()));
-        allFileProcReportList.forEach(all->{
-            System.out.println(all.getCreatorId()+" "+all.getCreateDate()+" "+all.getFinishNum());
-        });
         final LocalDate fDate = targetDate;
         final LocalDate fDate = targetDate;
         double allFileProcNum = allFileProcReportList.stream().filter(item->!(item.getCreatorId().equals(token) && item.getCreateDate().isEqual(fDate))).mapToDouble(Report::getFinishNum).sum();
         double allFileProcNum = allFileProcReportList.stream().filter(item->!(item.getCreatorId().equals(token) && item.getCreateDate().isEqual(fDate))).mapToDouble(Report::getFinishNum).sum();
         if (allFileProcNum + report.getFinishNum() > plan.getNum()) {
         if (allFileProcNum + report.getFinishNum() > plan.getNum()) {