Min 1 tahun lalu
induk
melakukan
1cd5e04a21

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

@@ -262,6 +262,8 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
     @Override
     public HttpRespMsg addOrUpdatePlan(Plan plan) {
         User user = userMapper.selectById(request.getHeader("token"));
+        List<Plan> plans = planMapper.selectList(new LambdaQueryWrapper<Plan>().eq(Plan::getStationId, plan.getStationId()).eq(Plan::getProductId, plan.getProductId()).orderByDesc(Plan::getCreateTime));
+        boolean isNew=true;
         Integer companyId = user.getCompanyId();
         HttpRespMsg msg=new HttpRespMsg();
         plan.setCompanyId(companyId);
@@ -324,6 +326,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 return msg;
             }
         }else {
+            isNew=false;
             if(plan.getPlanType()!=2){
                 plan.setPlanType(0);
             }else {
@@ -348,6 +351,9 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         if(!StringUtils.isEmpty(plan.getSteelStampNumber())){
             List<Map> mapList = JSONArray.parseArray(JSON.toJSON(plan.getSteelStampNumber()).toString(), Map.class);
             for (Map map : mapList) {
+                if(StringUtils.isEmpty(map.get("steelStampNumberStart"))||StringUtils.isEmpty(map.get("steelStampNumberEnd"))){
+                    continue;
+                }
                 PlanSteelStampNumber p=new PlanSteelStampNumber();
                 p.setPlanId(plan.getId());
                 p.setRuleIndexStart(Integer.valueOf(String.valueOf(map.get("ruleIndexStart"))));
@@ -407,6 +413,32 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             }
         }
         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());
         if(totals.size()>0){
             double sum = totals.stream().filter(t->t.getTotalWages()!=null).mapToDouble(PlanProcedureTotal::getTotalWages).sum();