Min 1 tahun lalu
induk
melakukan
023d2c0915

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

@@ -292,7 +292,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         }
         if(plan.getProductId()!=null){
             Product product = productMapper.selectById(plan.getProductId());
-            List<Plan> plans = planMapper.selectList(new LambdaQueryWrapper<Plan>().select(Plan::getNum));
+            List<Plan> plans = planMapper.selectList(new LambdaQueryWrapper<Plan>().select(Plan::getNum).eq(Plan::getProductId,product.getId()));
             double sum = plans.stream().mapToDouble(Plan::getNum).sum();
             BigDecimal decimal = new BigDecimal(sum);
             decimal=decimal.add(new BigDecimal(plan.getNum())).setScale(2,BigDecimal.ROUND_HALF_UP);
@@ -307,6 +307,10 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             plan.setTaskTypeName(taskType.getTaskTypeName());
         }
         List<ProdProcedure> procedureList = prodProcedureMapper.selectList(new QueryWrapper<ProdProcedure>().eq("company_id", companyId).eq("product_id",plan.getProductId()).orderByDesc("id"));
+        if(procedureList.size()<=0){
+            msg.setError("当前产品工序配置未完成,请先完成工序配置");
+            return msg;
+        }
         List<PlanProcedureTotal> planProcedureTotals=new ArrayList<>();
         List<PlanProcedureTotal> oldPlanProcedureTotals=new ArrayList<>();
         List<ProdProcedure> list;
@@ -803,7 +807,12 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             }
             planSteelStampNumberService.saveBatch(allPlanSteelStampNumberList);
             if(needInsertList.size()>0){
+                List<Integer> productIds = needInsertList.stream().map(Plan::getProductId).collect(Collectors.toList());
+                List<Product> products = productMapper.selectList(new LambdaQueryWrapper<Product>().in(Product::getId, productIds));
+                List<Plan> planList = planMapper.selectList(new LambdaQueryWrapper<Plan>().in(Plan::getProductId, productIds));
                 List<PlanProcedureTotal> planProcedureTotals=new ArrayList<>();
+                StringBuilder sb=new StringBuilder();
+                List<Plan> lastPlanList=new ArrayList<>();
                 for (Plan plan : needInsertList) {
                     if(plan.getPlanType()==0){
                         //处理工序  获取当前产品最新版本的工序的版本号
@@ -811,6 +820,26 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                         if(procedureList!=null&&procedureList.size()>0){
                             String versionNumber = procedureList.get(0).getVersionNumber();
                             plan.setVersionNumber(versionNumber);
+                        }else {
+                            if(StringUtils.isEmpty(sb.toString())){
+                                sb.append(plan.getProductName());
+                            }else {
+                                sb.append(","+plan.getProductName());
+                            }
+                            continue;
+                        }
+                        Product product = products.stream().filter(p->p.getId().equals(plan.getProductId())).findFirst().get();
+                        List<Plan> plans = planList.stream().filter(p->p.getProductId().equals(plan.getProductId())).collect(Collectors.toList());
+                        List<Plan> importPlan = needInsertList.stream().filter(n -> n.getProductId().equals(plan.getProductId())).collect(Collectors.toList());
+                        plans.addAll(importPlan);
+                        //要减去当前这个计划的数量
+                        double allSum = plans.stream().mapToDouble(Plan::getNum).sum();
+                        BigDecimal decimal = new BigDecimal(allSum);
+                        decimal=decimal.subtract(new BigDecimal(plan.getNum()));
+                        decimal=decimal.add(new BigDecimal(plan.getNum())).setScale(2,BigDecimal.ROUND_HALF_UP);
+                        if(decimal.doubleValue()>product.getOrderNumber()){
+                            msg.setError("创建失败,该产品下的排产计划总数量大于当前产品下的订单数量");
+                            return msg;
                         }
                         List<ProdProcedure> list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(0).getVersionNumber())).collect(Collectors.toList());
                         list=list.stream().sorted(Comparator.comparing(ProdProcedure::getId)).collect(Collectors.toList());
@@ -840,9 +869,13 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                         p.setTotalWorkingHours(plan.getPlanWorkHour());
                         planProcedureTotals.add(p);
                     }
+                    lastPlanList.add(plan);
                 }
                 planProcedureTotalService.saveBatch(planProcedureTotals);
-                saveOrUpdateBatch(needInsertList);
+                if(lastPlanList.size()>0){
+                    saveOrUpdateBatch(lastPlanList);
+                };
+                msg.setData("导入成功,其中产品["+sb.toString()+"]产品工序未完成,请完成工序配置");
             }
         } catch (IOException e) {
             e.printStackTrace();

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

@@ -4132,7 +4132,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Override
     public HttpRespMsg getPersonWorkHoursWagesDetail(String date, String userId,String startDate,String endDate,Integer checkStatus,Integer detailStatus) {
         User user = userMapper.selectById(request.getHeader("token"));
-        if(checkStatus!=null&&StringUtils.isEmpty(userId)){
+        if(checkStatus!=null&&checkStatus==0&&StringUtils.isEmpty(userId)){
             userId=user.getId();
         }
         List<Map<String,Object>> mapList=reportMapper.getPersonWorkHoursWagesDetail(date,userId,user.getCompanyId(),startDate,endDate,checkStatus,detailStatus);