From dc90cbf01b95524049b55816a151ccff8c52cf7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Tue, 29 Mar 2022 19:01:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E3=80=81=E6=A0=87=E7=AD=BE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/ctrl/XmTaskWorkloadController.java | 117 ++++++++++-------- 1 file changed, 67 insertions(+), 50 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java index 31900eb0..4fd66b76 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java @@ -2,7 +2,9 @@ package com.xm.core.ctrl; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; +import com.mdp.core.utils.ResponseHelper; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.xm.core.entity.XmGroup; @@ -151,51 +153,6 @@ public class XmTaskWorkloadController { m.put("tips", tips); return m; } - - - @ApiOperation( value = "删除一条工时登记表信息",notes=" ") - @ApiResponses({ - @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") - }) - @RequestMapping(value="/del",method=RequestMethod.POST) - public Map delXmTaskWorkload(@RequestBody XmTaskWorkload xmTaskWorkload){ - Map m = new HashMap<>(); - Tips tips=new Tips("成功删除一条数据"); - try{ - if(!StringUtils.hasText(xmTaskWorkload.getId())) { - return failed("pk-not-exists","请上送主键参数id"); - } - if(!StringUtils.hasText(xmTaskWorkload.getTaskId())) { - return failed("taskId-0","请上送任务编号"); - } - XmTask xmTaskDb=this.xmTaskService.selectOneObject(new XmTask(xmTaskWorkload.getTaskId())); - if(xmTaskDb==null ){ - return failed("data-0","任务已不存在"); - } - User user= LoginUtils.getCurrentUserInfo(); - if(!(user.getUserid().equals(xmTaskDb.getCreateUserid())|| user.getUserid().equals(xmTaskDb.getExecutorUserid()))){ - Tips isCreate=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getCreateUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId()); - if(!isCreate.isOk()){ - Tips isExec=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getExecutorUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId()); - if(!isExec.isOk()){ - return failed("noqx-0","你无权针对该业务进行报工"); - } - - } - } - xmTaskWorkloadService.deleteByPk(xmTaskWorkload); - }catch (BizException e) { - tips=e.getTips(); - logger.error("",e); - }catch (Exception e) { - tips.setFailureMsg(e.getMessage()); - logger.error("",e); - } - m.put("tips", tips); - return m; - } - - @ApiOperation( value = "根据主键修改一条工时登记表信息",notes=" ") @ApiResponses({ @ApiResponse(code = 200,response=XmTaskWorkload.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") @@ -226,8 +183,6 @@ public class XmTaskWorkloadController { } - - /** @ApiOperation( value = "根据主键列表批量删除工时登记表信息",notes=" ") @ApiResponses({ @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") @@ -236,8 +191,70 @@ public class XmTaskWorkloadController { public Map batchDelXmTaskWorkload(@RequestBody List xmTaskWorkloads) { Map m = new HashMap<>(); Tips tips=new Tips("成功删除"+xmTaskWorkloads.size()+"条数据"); - try{ - xmTaskWorkloadService.batchDelete(xmTaskWorkloads); + try{ + if(xmTaskWorkloads.stream().filter(i->!StringUtils.hasText(i.getId())).findAny().isPresent()){ + return ResponseHelper.failed("id-0","主键不能为空"); + } + xmTaskWorkloads = xmTaskWorkloadService.selectListByIds(xmTaskWorkloads.stream().map(i->i.getId()).collect(Collectors.toList())); + if(xmTaskWorkloads==null || xmTaskWorkloads.size()==0){ + return ResponseHelper.failed("data-0","工时已不存在"); + } + User user= LoginUtils.getCurrentUserInfo(); + List taskIds=xmTaskWorkloads.stream().map(i->i.getTaskId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()); + List tasksDb=this.xmTaskService.selectListByIds(taskIds); + Map taskMap=new HashMap<>(); + Map canDelTaskMap=new HashMap<>(); + for (XmTask xmTask : tasksDb) { + taskMap.put(xmTask.getId(),xmTask); + } + for (XmTask xmTaskDb : tasksDb) { + if(!(user.getUserid().equals(xmTaskDb.getCreateUserid())|| user.getUserid().equals(xmTaskDb.getExecutorUserid()))){ + Tips isCreate=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getCreateUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId()); + if(!isCreate.isOk()){ + Tips isExec=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getExecutorUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId()); + if(!isExec.isOk()){ + break; + } + + } + } + canDelTaskMap.put(xmTaskDb.getId(),xmTaskDb); + } + List canDel=new ArrayList<>(); + List state1Ndel=new ArrayList<>(); + List noQxDel=new ArrayList<>(); + for (XmTaskWorkload xmTaskWorkload : xmTaskWorkloads) { + if(canDelTaskMap.containsKey(xmTaskWorkload.getTaskId())){ + if("!1".equals(xmTaskWorkload.getWstatus())){ + canDel.add(xmTaskWorkload); + } else{ + state1Ndel.add(xmTaskWorkload); + } + }else{ + if(!taskMap.containsKey(xmTaskWorkload.getTaskId())){//对应任务已被删除,不存在了 + if(!"1".equals(xmTaskWorkload.getWstatus())){ + canDel.add(xmTaskWorkload); + }else{ + state1Ndel.add(xmTaskWorkload); + } + }else{ + noQxDel.add(xmTaskWorkload); + } + } + } + + List msgs=new ArrayList<>(); + if(canDel.size()>0){ + xmTaskWorkloadService.batchDelete(canDel); + msgs.add("成功删除"+canDel.size()+"条工时单据。"); + } + if(state1Ndel.size()>0){ + msgs.add("以下"+state1Ndel.size()+"条工时单据状态为确认状态,不允许删除。【"+state1Ndel.stream().map(i->i.getUsername()+i.getBizDate())+"】"); + } + if(noQxDel.size()>0){ + xmTaskWorkloadService.batchDelete(canDel); + msgs.add("以下"+noQxDel.size()+"条工时单据无权限删除,您只能删除你负责的任务的工时单据,【"+noQxDel.stream().map(i->i.getUsername()+i.getBizDate())+"】."); + } }catch (BizException e) { tips=e.getTips(); logger.error("",e); @@ -248,7 +265,7 @@ public class XmTaskWorkloadController { m.put("tips", tips); return m; } - */ + /** * 用于结算单