|
@@ -103,19 +103,15 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
}else {
|
|
}else {
|
|
queryWrapper.eq("plan_type",1);
|
|
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)){
|
|
if(!StringUtils.isEmpty(date)){
|
|
LocalDate parse = LocalDate.parse(date,df);
|
|
LocalDate parse = LocalDate.parse(date,df);
|
|
queryWrapper.eq("start_date",parse);
|
|
queryWrapper.eq("start_date",parse);
|
|
}else {
|
|
}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){
|
|
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)){
|
|
if(!StringUtils.isEmpty(steelStampNumber)){
|
|
queryWrapper.apply("'"+steelStampNumber+"'"+" between steel_stamp_number_start AND steel_stamp_number_end");
|
|
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);
|
|
IPage<Plan> planIPage = planMapper.selectPage(new Page<>(pageIndex, pageSize), queryWrapper);
|
|
List<Plan> records = planIPage.getRecords();
|
|
List<Plan> records = planIPage.getRecords();
|
|
List<Integer> ids = records.stream().map(Plan::getProductId).distinct().collect(Collectors.toList());
|
|
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());
|
|
List<Integer> planIds = records.stream().map(Plan::getId).distinct().collect(Collectors.toList());
|
|
planIds.add(-1);
|
|
planIds.add(-1);
|
|
List<PlanProcedureTotal> procedureTotals = planProcedureTotalService.list(new QueryWrapper<PlanProcedureTotal>().in("plan_id", planIds));
|
|
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->{
|
|
records.forEach(rs->{
|
|
Optional<Product> first = productList.stream().filter(pl -> pl.getId().equals(rs.getProductId())).findFirst();
|
|
Optional<Product> first = productList.stream().filter(pl -> pl.getId().equals(rs.getProductId())).findFirst();
|
|
if(first.isPresent()){
|
|
if(first.isPresent()){
|
|
@@ -152,9 +153,22 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
if(procedureTotals.size()>0){
|
|
if(procedureTotals.size()>0){
|
|
List<PlanProcedureTotal> totals = procedureTotals.stream().filter(ps -> ps.getPlanId().equals(rs.getId())).collect(Collectors.toList());
|
|
List<PlanProcedureTotal> totals = procedureTotals.stream().filter(ps -> ps.getPlanId().equals(rs.getId())).collect(Collectors.toList());
|
|
if(totals.size()>0){
|
|
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);
|
|
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();
|
|
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<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> planProcedureTotals=new ArrayList<>();
|
|
|
|
+ List<PlanProcedureTotal> oldPlanProcedureTotals=new ArrayList<>();
|
|
List<ProdProcedure> list;
|
|
List<ProdProcedure> list;
|
|
if(plan.getId()==null){
|
|
if(plan.getId()==null){
|
|
list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(0).getVersionNumber())).collect(Collectors.toList());
|
|
list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(0).getVersionNumber())).collect(Collectors.toList());
|
|
@@ -197,9 +212,15 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
switch (plan.getPlanType()){
|
|
switch (plan.getPlanType()){
|
|
case 0:
|
|
case 0:
|
|
plan.setStartDate(LocalDate.now());
|
|
plan.setStartDate(LocalDate.now());
|
|
|
|
+ if(plan.getEndDate().isBefore(plan.getStartDate())){
|
|
|
|
+ plan.setEndDate(LocalDate.now());
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case 1:
|
|
case 1:
|
|
plan.setStartDate(LocalDate.now().plusDays(1));
|
|
plan.setStartDate(LocalDate.now().plusDays(1));
|
|
|
|
+ if(plan.getEndDate().isBefore(plan.getStartDate())){
|
|
|
|
+ plan.setEndDate(LocalDate.now().plusDays(1));
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
if(plan.getPlanType()!=2){
|
|
if(plan.getPlanType()!=2){
|
|
@@ -226,21 +247,39 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(plan.getVersionNumber())).collect(Collectors.toList());
|
|
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();
|
|
PlanProcedureTotal p=new PlanProcedureTotal();
|
|
p.setPlanId(plan.getId());
|
|
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);
|
|
planProcedureTotalService.saveBatch(planProcedureTotals);
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
@@ -264,6 +303,8 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
stringBuilder.append((planType==0?"今日计划":planType==1?"明日计划":"插单计划")+"\n");
|
|
stringBuilder.append((planType==0?"今日计划":planType==1?"明日计划":"插单计划")+"\n");
|
|
stringBuilder.append(planType==2?"任务名称: "+plan.getTaskName()+"\n"+"任务变更通知号: "+plan.getTaskChangeNoticeNum():"产品名称: "+plan.getProductName()+"\n"+"排产工单号: "+plan.getProductSchedulingNum());
|
|
stringBuilder.append(planType==2?"任务名称: "+plan.getTaskName()+"\n"+"任务变更通知号: "+plan.getTaskChangeNoticeNum():"产品名称: "+plan.getProductName()+"\n"+"排产工单号: "+plan.getProductSchedulingNum());
|
|
wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,first.get().getCorpwxRealUserid(),stringBuilder.toString(),planType==0?"plan/today":planType==1?"plan/tomorrow":"plan/orderInsert",null);
|
|
wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,first.get().getCorpwxRealUserid(),stringBuilder.toString(),planType==0?"plan/today":planType==1?"plan/tomorrow":"plan/orderInsert",null);
|
|
|
|
+ /*修改下发状态为已下发*/
|
|
|
|
+ plan.setStatus(1);
|
|
}else msg.setError("验证失败");
|
|
}else msg.setError("验证失败");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -650,11 +691,11 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@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();
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
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 overCountWages = new BigDecimal(0);
|
|
BigDecimal overWorkingHours = new BigDecimal(0);
|
|
BigDecimal overWorkingHours = new BigDecimal(0);
|
|
ProdProcedure prodProcedure = prodProcedureMapper.selectById(planProcedureTotal.getProdProcedureId());
|
|
ProdProcedure prodProcedure = prodProcedureMapper.selectById(planProcedureTotal.getProdProcedureId());
|
|
@@ -669,6 +710,15 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
overWorkingHours=totalWorkingHours.multiply(new BigDecimal(team.length));
|
|
overWorkingHours=totalWorkingHours.multiply(new BigDecimal(team.length));
|
|
List<ProdProcedureTeam> procedureTeamList = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().eq("plan_procedure_id",planProcedureTotal.getId()));
|
|
List<ProdProcedureTeam> procedureTeamList = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().eq("plan_procedure_id",planProcedureTotal.getId()));
|
|
List<User> userList = userMapper.selectBatchIds(Arrays.asList(team));
|
|
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++) {
|
|
for (int i = 0; i < team.length; i++) {
|
|
ProdProcedureTeam prodProcedureTeam=new ProdProcedureTeam();
|
|
ProdProcedureTeam prodProcedureTeam=new ProdProcedureTeam();
|
|
prodProcedureTeam.setCompanyId(companyId);
|
|
prodProcedureTeam.setCompanyId(companyId);
|
|
@@ -677,12 +727,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
int finalI = i;
|
|
int finalI = i;
|
|
Optional<ProdProcedureTeam> first = procedureTeamList.stream().filter(pl -> pl.getUserId().equals(team[finalI])).findFirst();
|
|
Optional<ProdProcedureTeam> first = procedureTeamList.stream().filter(pl -> pl.getUserId().equals(team[finalI])).findFirst();
|
|
if(first.isPresent()){
|
|
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){
|
|
if(i==team.length-1){
|
|
double wagesAbs =new BigDecimal(planProcedureTotal.getTotalWages()).subtract(overCountWages).doubleValue();
|
|
double wagesAbs =new BigDecimal(planProcedureTotal.getTotalWages()).subtract(overCountWages).doubleValue();
|
|
@@ -701,11 +746,19 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
|
|
String userIds = userList.stream().map(User::getCorpwxRealUserid).collect(Collectors.joining("|"));
|
|
String userIds = userList.stream().map(User::getCorpwxRealUserid).collect(Collectors.joining("|"));
|
|
//todo:推送到企业微信
|
|
//todo:推送到企业微信
|
|
StringBuilder stringBuilder=new StringBuilder();
|
|
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)){
|
|
if(!prodProcedureTeamService.saveOrUpdateBatch(list)){
|