Browse Source

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

Lijy 1 year ago
parent
commit
36c93c98ff

+ 2 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/PlanController.java

@@ -81,8 +81,8 @@ public class PlanController {
     /*计划下产品工序组员分配*/
     @RequestMapping("/teamAllocation")
     @Transactional
-    public HttpRespMsg teamAllocation(PlanProcedureTotal planProcedureTotal, String teamIds) throws Exception {
-        return planService.teamAllocation(planProcedureTotal,teamIds);
+    public HttpRespMsg teamAllocation(PlanProcedureTotal planProcedureTotal, String teamIds,Integer planType) throws Exception {
+        return planService.teamAllocation(planProcedureTotal,teamIds,planType);
     }
 
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Plan.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
@@ -199,6 +200,9 @@ public class Plan extends Model<Plan> {
     @TableField(exist = false)
     private double totalMoney;
 
+    @TableField(exist = false)
+    private List<PlanProcedureTotal> planProcedureTotals;
+
     /**
      * 创建时间
      */

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/vo/UserVO.java

@@ -26,5 +26,7 @@ public class UserVO extends User {
 
     private boolean hasAuditDept;
 
+    private List<Department> beDeptList;
+
     private List<SysModule> prodSubMenuList;
 }

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

@@ -34,5 +34,5 @@ public interface PlanService extends IService<Plan> {
 
     HttpRespMsg hasSetDeptDetail();
 
-    HttpRespMsg teamAllocation(PlanProcedureTotal planProcedureTotal, String teamIds) throws Exception;
+    HttpRespMsg teamAllocation(PlanProcedureTotal planProcedureTotal, String teamIds,Integer planType) throws Exception;
 }

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

@@ -103,19 +103,15 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         }else {
             queryWrapper.eq("plan_type",1);
         }
-        if(planType!=2){
-            if(deptId!=null){
-                queryWrapper.eq("station_id",deptId);
-            }
+        if(deptId!=null){
+            queryWrapper.eq("station_id",deptId);
         }
         if(!StringUtils.isEmpty(date)){
             LocalDate parse = LocalDate.parse(date,df);
             queryWrapper.eq("start_date",parse);
         }else {
-            if(planType!=2){
-                LocalDate now = LocalDate.now();
-                queryWrapper.eq("start_date",planType==0?now:now.plusDays(1));
-            }
+            LocalDate now = LocalDate.now();
+            queryWrapper.eq("start_date",(planType==0||planType==2)?now:now.plusDays(1));
         }
         /*作为工长看到的数据*/
         if(count(new QueryWrapper<Plan>().eq("foreman_id",user.getId()))>0){
@@ -136,6 +132,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         if(!StringUtils.isEmpty(steelStampNumber)){
             queryWrapper.apply("'"+steelStampNumber+"'"+" between steel_stamp_number_start AND steel_stamp_number_end");
         }
+        queryWrapper.orderByDesc("start_date");
         IPage<Plan> planIPage = planMapper.selectPage(new Page<>(pageIndex, pageSize), queryWrapper);
         List<Plan> records = planIPage.getRecords();
         List<Integer> ids = records.stream().map(Plan::getProductId).distinct().collect(Collectors.toList());
@@ -144,6 +141,10 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         List<Integer> planIds = records.stream().map(Plan::getId).distinct().collect(Collectors.toList());
         planIds.add(-1);
         List<PlanProcedureTotal> procedureTotals = planProcedureTotalService.list(new QueryWrapper<PlanProcedureTotal>().in("plan_id", planIds));
+        List<Integer> ptIds = procedureTotals.stream().map(PlanProcedureTotal::getId).collect(Collectors.toList());
+        ptIds.add(-1);
+        List<ProdProcedureTeam> procedureTeams = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().in("plan_procedure_id", ptIds));
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
         records.forEach(rs->{
             Optional<Product> first = productList.stream().filter(pl -> pl.getId().equals(rs.getProductId())).findFirst();
             if(first.isPresent()){
@@ -152,9 +153,22 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             if(procedureTotals.size()>0){
                 List<PlanProcedureTotal> totals = procedureTotals.stream().filter(ps -> ps.getPlanId().equals(rs.getId())).collect(Collectors.toList());
                 if(totals.size()>0){
-                    double sum = totals.stream().mapToDouble(PlanProcedureTotal::getTotalWages).sum();
+                    double sum = totals.stream().filter(t->t.getTotalWages()!=null).mapToDouble(PlanProcedureTotal::getTotalWages).sum();
                     rs.setTotalMoney(sum);
                 }
+                if(planType==2){
+                    totals.forEach(ps->{
+                        if(procedureTeams.size()>0){
+                            ps.setTeamIds(procedureTeams.stream().filter(pt->pt.getPlanProcedureId().equals(ps.getId())).map(ProdProcedureTeam::getUserId).distinct().collect(Collectors.joining(",")));
+                            if(!StringUtils.isEmpty(ps.getTeamIds())){
+                                String userNames = userList.stream().filter(ul -> Arrays.asList(ps.getTeamIds().split(",")).contains(ul.getId())).collect(Collectors.toList())
+                                        .stream().map(User::getName).collect(Collectors.joining(","));
+                                ps.setTeamNames(userNames);
+                            }
+                        }
+                    });
+                    rs.setPlanProcedureTotals(totals);
+                }
             }
         });
         Map map=new HashMap();
@@ -185,6 +199,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         }
         List<ProdProcedure> procedureList = prodProcedureMapper.selectList(new QueryWrapper<ProdProcedure>().eq("company_id", companyId).eq("product_id",plan.getProductId()).orderByDesc("id"));
         List<PlanProcedureTotal> planProcedureTotals=new ArrayList<>();
+        List<PlanProcedureTotal> oldPlanProcedureTotals=new ArrayList<>();
         List<ProdProcedure> list;
         if(plan.getId()==null){
             list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(0).getVersionNumber())).collect(Collectors.toList());
@@ -226,21 +241,39 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 return msg;
             }
             list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(plan.getVersionNumber())).collect(Collectors.toList());
-            planProcedureTotalService.remove(new QueryWrapper<PlanProcedureTotal>().eq("plan_id",plan.getId()));
+//          planProcedureTotalService.remove(new QueryWrapper<PlanProcedureTotal>().eq("plan_id",plan.getId()));
+            List<Integer> ids = list.stream().map(ProdProcedure::getId).collect(Collectors.toList());
+            ids.add(-1);
+            oldPlanProcedureTotals = planProcedureTotalService.list(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", plan.getId()).in("prod_procedure_id", ids));
         }
-        list=list.stream().sorted(Comparator.comparing(ProdProcedure::getId)).collect(Collectors.toList());
-        list.forEach(ps->{
+        if(plan.getPlanType()==0){
+            list=list.stream().sorted(Comparator.comparing(ProdProcedure::getId)).collect(Collectors.toList());
+            for (ProdProcedure prodProcedure : list) {
+                PlanProcedureTotal p=new PlanProcedureTotal();
+                p.setPlanId(plan.getId());
+                p.setProdProcedureId(prodProcedure.getId());
+                BigDecimal totalWages=new BigDecimal(String.valueOf(prodProcedure.getUnitPrice()));
+                totalWages=totalWages.multiply(new BigDecimal(plan.getNum()));
+                p.setTotalWages(totalWages.doubleValue());
+                BigDecimal totalWorkingHours=new BigDecimal(String.valueOf(prodProcedure.getWorkingTime()));
+                totalWorkingHours=totalWorkingHours.multiply(new BigDecimal(plan.getNum()));
+                p.setTotalWorkingHours(totalWorkingHours.doubleValue());
+                if(oldPlanProcedureTotals.size()>0){
+                    boolean b = oldPlanProcedureTotals.stream().anyMatch(fs -> fs.getPlanId().equals(plan.getId()) && fs.getProdProcedureId().equals(prodProcedure.getId()));
+                    if(b){
+                        continue;
+                    }
+                }
+                planProcedureTotals.add(p);
+            }
+        }else {
             PlanProcedureTotal p=new PlanProcedureTotal();
             p.setPlanId(plan.getId());
-            p.setProdProcedureId(ps.getId());
-            BigDecimal totalWages=new BigDecimal(String.valueOf(ps.getUnitPrice()));
-            totalWages=totalWages.multiply(new BigDecimal(plan.getNum()));
-            p.setTotalWages(totalWages.doubleValue());
-            BigDecimal totalWorkingHours=new BigDecimal(String.valueOf(ps.getWorkingTime()));
-            totalWorkingHours=totalWorkingHours.multiply(new BigDecimal(plan.getNum()));
-            p.setTotalWorkingHours(totalWorkingHours.doubleValue());
-            planProcedureTotals.add(p);
-        });
+            boolean b = oldPlanProcedureTotals.stream().anyMatch(fs -> fs.getPlanId().equals(plan.getId()));
+            if(!b){
+                planProcedureTotals.add(p);
+            }
+        }
         planProcedureTotalService.saveBatch(planProcedureTotals);
         return msg;
     }
@@ -650,11 +683,11 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
     }
 
     @Override
-    public HttpRespMsg teamAllocation(PlanProcedureTotal planProcedureTotal,String teamIds) throws Exception {
+    public HttpRespMsg teamAllocation(PlanProcedureTotal planProcedureTotal,String teamIds,Integer planType) throws Exception {
         HttpRespMsg msg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        BigDecimal totalWages=new BigDecimal(planProcedureTotal.getTotalWages());
-        BigDecimal totalWorkingHours=new BigDecimal(planProcedureTotal.getTotalWorkingHours());
+        BigDecimal totalWages=new BigDecimal((planProcedureTotal.getTotalWages()==null||StringUtils.isEmpty(planProcedureTotal.getTotalWages()))?0:planProcedureTotal.getTotalWages());
+        BigDecimal totalWorkingHours=new BigDecimal((planProcedureTotal.getTotalWorkingHours()==null||StringUtils.isEmpty(planProcedureTotal.getTotalWorkingHours())?0:planProcedureTotal.getTotalWorkingHours()));
         BigDecimal overCountWages = new BigDecimal(0);
         BigDecimal overWorkingHours = new BigDecimal(0);
         ProdProcedure prodProcedure = prodProcedureMapper.selectById(planProcedureTotal.getProdProcedureId());
@@ -669,6 +702,15 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             overWorkingHours=totalWorkingHours.multiply(new BigDecimal(team.length));
             List<ProdProcedureTeam> procedureTeamList = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().eq("plan_procedure_id",planProcedureTotal.getId()));
             List<User> userList = userMapper.selectBatchIds(Arrays.asList(team));
+            //处理人员
+            procedureTeamList.stream().forEach(pt->{
+                if(!Arrays.asList(team).contains(pt.getUserId())){
+                    Integer cut = reportMapper.selectCount(new QueryWrapper<Report>().eq("user_procedure_team_id", pt.getId()));
+                    if(cut<1){
+                        prodProcedureTeamService.removeById(pt.getId());
+                    }
+                }
+            });
             for (int i = 0; i < team.length; i++) {
                 ProdProcedureTeam prodProcedureTeam=new ProdProcedureTeam();
                 prodProcedureTeam.setCompanyId(companyId);
@@ -677,12 +719,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 int finalI = i;
                 Optional<ProdProcedureTeam> first = procedureTeamList.stream().filter(pl -> pl.getUserId().equals(team[finalI])).findFirst();
                 if(first.isPresent()){
-                    Integer cut = reportMapper.selectCount(new QueryWrapper<Report>().eq("user_procedure_team_id", first.get().getId()));
-                    if(cut>0){
-                        prodProcedureTeam.setId(first.get().getId());
-                    }else {
-                        prodProcedureTeamService.remove(new QueryWrapper<ProdProcedureTeam>().eq("plan_procedure_id",planProcedureTotal.getId()).eq("user_id",team[i]));
-                    }
+                    prodProcedureTeam.setId(first.get().getId());
                 }
                 if(i==team.length-1){
                     double wagesAbs =new BigDecimal(planProcedureTotal.getTotalWages()).subtract(overCountWages).doubleValue();
@@ -701,11 +738,19 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 String userIds = userList.stream().map(User::getCorpwxRealUserid).collect(Collectors.joining("|"));
                 //todo:推送到企业微信
                 StringBuilder stringBuilder=new StringBuilder();
-                stringBuilder.append("工序  ");
-                stringBuilder.append("工序名称: "+prodProcedure.getName()+"\n"
-                        +"       产品名称:"+product.getName()+"\n"
-                        +"       排产工单号:"+plan.getProductSchedulingNum());
-                wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,userIds,stringBuilder.toString(),"todayPlan",null);
+                if(planType!=2){
+                    stringBuilder.append("工序  ");
+                    stringBuilder.append("工序名称:"+prodProcedure.getName()+"\n"
+                            +"         产品名称:"+product.getName()+"\n"
+                            +"         排产工单号:"+plan.getProductSchedulingNum());
+                    wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,userIds,stringBuilder.toString(),planType==0?"todayPlan":"tomorrowPlan",null);
+                }else {
+                    stringBuilder.append("插单计划  ");
+                    stringBuilder.append("任务名称:"+plan.getTaskName()+"\n"
+                            +"               任务变更通知号:"+plan.getTaskChangeNoticeNum());
+                    wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,userIds,stringBuilder.toString(),"InsertionPlan",null);
+                }
+
             }
         }
         if(!prodProcedureTeamService.saveOrUpdateBatch(list)){

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

@@ -2447,6 +2447,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         userVO.setTimeType(timeTypeMapper.selectById(company.getId()));
         List<Department> manageDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", userVO.getId()));
         List<Integer> deptIds = manageDeptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+        userVO.setBeDeptList(manageDeptList);
         //获取当前角色的权限菜单
         setUserRoleMenu(userVO);
         httpRespMsg.data = userVO;

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

@@ -281,9 +281,12 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                 //费用报销
                 title = "收到新的插单计划";
             }
-            else if("todayPlan".equals(pageRouter)){
+            else if("todayPlan".equals(pageRouter)||"tomorrowPlan".equals(pageRouter)){
                 title="收到新的工作安排";
             }
+            else if("InsertionPlan".equals(pageRouter)){
+                title="收到新的插单计划";
+            }
             cardJson.put("title", title);
             cardJson.put("description", msg);
             cardJson.put("url", jumpUrl);

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/orderInsert.vue

@@ -173,7 +173,7 @@
         <el-button @click="
           (taskTypeDialog = false)
           ">取 消</el-button>
-        <el-button type="primary" @click="taskTypeAddDialog=true">新增</el-button>
+        <el-button type="primary" @click="taskTypeAddDialog=true,editTaskType()">新增</el-button>
       </span>
     </el-dialog>
 
@@ -188,7 +188,7 @@
         </div>
         <span slot="footer" class="dialog-footer">
         <el-button @click="
-          (taskTypeAddDialog = false), $refs['taskTypeForm'].resetFields()
+          (taskTypeAddDialog = false)
           ">取 消</el-button>
         <el-button type="primary" @click="addTaskType('taskTypeForm')">确 定</el-button>
       </span>

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/planComponent.vue

@@ -468,6 +468,7 @@ export default {
             this.todayPlanForm.stationId.length - 1
             ];
           this.$delete(this.todayPlanForm, 'product')  
+          this.$delete(this.todayPlanForm, 'planProcedureTotals')  
           this.http.post(
             "/plan/addOrUpdatePlan",
             {