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 2aafa143..d783b72c 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 @@ -367,131 +367,6 @@ public class XmTaskWorkloadController { - @ApiOperation( value = "",notes=" ") - @ApiResponses({ - @ApiResponse(code = 200,response=XmTaskWorkload.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") - }) - @RequestMapping(value="/batchSetSbillIdNull",method=RequestMethod.POST) - public Map batchSetSbillIdNull(@RequestBody List xmTaskWorkloads) { - Map m = new HashMap<>(); - Tips tips=new Tips("成功移出结算单"); - try{ - - List ids= xmTaskWorkloads.stream().map(i->i.getId()).collect(Collectors.toList()); - if(ids==null || ids.size()==0){ - return ResponseHelper.failed("ids-0","工时变化ids不能为空"); - } - - User user= LoginUtils.getCurrentUserInfo(); - - List list=this.xmTaskWorkloadService.selectListByIds(ids); - if(list.size()==0){ - return ResponseHelper.failed("data-0","工时明细不存在"); - } - - List xmTaskSbills=this.xmTaskSbillService.selectListByIds(list.stream().map(i->i.getSbillId()).collect(Collectors.toSet()).stream().collect(Collectors.toList())); - Map canBillMap=new HashMap<>(); - for (XmTaskSbill xmTaskSbill : xmTaskSbills) { - if(user.getUserid().equals(xmTaskSbill.getCuserid())){ - if("0".equals(xmTaskSbill.getStatus())){ - canBillMap.put(xmTaskSbill.getId(),xmTaskSbill); - } - } - } - List canChanges=list.stream().filter(i->canBillMap.containsKey(i.getSbillId())).collect(Collectors.toList()); - List noChanges=list.stream().filter(i->!canBillMap.containsKey(i.getSbillId())).collect(Collectors.toList()); - if(canChanges.size()>0){ - xmTaskWorkloadService.batchSetSbillIdNull(canChanges.stream().map(i->i.getId()).collect(Collectors.toList())); - - } - List msgs=new ArrayList<>(); - if(canChanges.size()>0){ - msgs.add("成功将"+canChanges.size()+"条工时移出结算单"); - } - - if(noChanges.size()>0){ - msgs.add("有"+noChanges.size()+"条工时对应的结算单不是待提交状态,不允许更改"); - } - if(canChanges.size()>0){ - tips.setOkMsg(msgs.stream().collect(Collectors.joining())); - }else{ - tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); - } - - }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:数据对象}") - }) - @RequestMapping(value="/editWorkloadToSbill",method=RequestMethod.POST) - public Map editWorkloadToSbill(@RequestBody Map params) { - Map m = new HashMap<>(); - Tips tips=new Tips("成功添加到结算单"); - try{ - - List ids= (List) params.get("ids"); - if(ids==null || ids.size()==0){ - return ResponseHelper.failed("ids-0","工时变化ids不能为空"); - } - String sbillId= (String) params.get("sbillId"); - if(!StringUtils.hasText(sbillId)){ - return ResponseHelper.failed("sbillId-0","结算单变编号不能为空"); - } - XmTaskSbill xmTaskSbillDb=this.xmTaskSbillService.selectOneObject(new XmTaskSbill(sbillId)); - if(xmTaskSbillDb==null){ - return ResponseHelper.failed("sbillId-0","结算单不存在"); - } - if(!"0".equals(xmTaskSbillDb.getStatus())){ - return ResponseHelper.failed("status-not-0","结算单已提交,不允许再更改"); - } - User user= LoginUtils.getCurrentUserInfo(); - if(!user.getUserid().equals(xmTaskSbillDb.getCuserid())){ - return ResponseHelper.failed("cuserid-0","结算单不属于您的,无权修改"); - } - List list=this.xmTaskWorkloadService.selectListByIds(ids); - if(list.size()==0){ - return ResponseHelper.failed("data-0","工时明细不存在"); - } - List canChanges=list.stream().filter(i->"1".equals(i.getSstatus()) && "1".equals(i.getWstatus())).collect(Collectors.toList()); - List sstatusNot1=list.stream().filter(i->!"1".equals(i.getSstatus()) || !"1".equals(i.getWstatus())).collect(Collectors.toList()); - - if(canChanges.size()>0){ - xmTaskWorkloadService.editWorkloadToSbill(sbillId,canChanges); - } - List msgs=new ArrayList<>(); - if(canChanges.size()>0){ - msgs.add("成功将"+canChanges.size()+"条工时加入结算单"); - } - - if(sstatusNot1.size()>0){ - msgs.add("有"+sstatusNot1.size()+"条工时不是待结算状态,不允许更改"); - } - if(canChanges.size()>0){ - tips.setOkMsg(msgs.stream().collect(Collectors.joining())); - }else{ - tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); - } - - }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="xmTaskWorkloadMap") @@ -573,10 +448,7 @@ public class XmTaskWorkloadController { fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTaskWorkloadMap.get(i) )).collect(Collectors.toSet()); if(fieldKey.size()>0){ - List sbillIds= canChanges.stream().filter(i->StringUtils.hasText(i.getSbillId())).map(i->i.getSbillId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()); - - xmTaskWorkloadService.editSomeFieldsWithSbillIds(xmTaskWorkloadMap,sbillIds); - + xmTaskWorkloadService.editSomeFieldsWithSbillIds(xmTaskWorkloadMap,null); } } List msgs=new ArrayList<>(); diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java index 3b36ed18..667ae9c9 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java @@ -43,11 +43,9 @@ public class XmTaskSbillService extends BaseService { @Transactional(rollbackFor = Exception.class) public void deleteByPkAndReturnWorkload(XmTaskSbill xmTaskSbill){ + + xmTaskWorkloadService.updateStatusBySbillIdBySbillDel(xmTaskSbill.getId()); this.deleteByPk(xmTaskSbill); - XmTaskWorkload xmTaskWorkload = new XmTaskWorkload(); - xmTaskWorkload.setSbillId(xmTaskSbill.getId()); - xmTaskWorkload.setSstatus("1");//标记为待提交结算 - xmTaskWorkloadService.updateStatusBySbillIdBySbillDel(xmTaskWorkload); } /** @@ -139,28 +137,21 @@ public class XmTaskSbillService extends BaseService { xmTaskSbill.setBizMonth(DateUtils.format(toDay,"yyyy-MM")); xmTaskSbill.setBizDate(DateUtils.format(toDay,"yyyy-MM-dd")); xmTaskSbill.setBizDate(bizFlowState); - if("1".equals(bizFlowState)){ //发起审核,更新sbill表状态,工时登记表状态无需更新 xmTaskSbill.setStatus("1"); + xmTaskWorkloadService.updateStatusBySbillIdByFlowState(xmTaskSbill.getId(),"2"); }else if("2".equals(bizFlowState)){ //审核通过,工时登记表更新为已通过-3 xmTaskSbill.setStatus("2");//结算单状态-已通过 - XmTaskWorkload queryMap =new XmTaskWorkload(); - queryMap.setSbillId(xmTaskSbill.getId()); - List xmTaskWorkloadList = xmTaskWorkloadService.selectListByWhere(queryMap); - if(xmTaskWorkloadList.size()>0){ - xmTaskWorkloadList.forEach(item->item.setSstatus("3")); - xmTaskWorkloadService.batchUpdate(xmTaskWorkloadList); - } + xmTaskWorkloadService.updateStatusBySbillIdByFlowState(xmTaskSbill.getId(),"4"); }else if("3".equals(bizFlowState)){ //3为审批不通过,退回发起人,可继续向上提交。工时表无需修改 xmTaskSbill.setStatus("1");//结算单状态-已提交 - - }else if("4".equals(bizFlowState)){ //4为流程删除或者取消,sbill可重新发起审批/删除。工时表无需修改 xmTaskSbill.setStatus("0");//结算单状态-待提交 + xmTaskWorkloadService.updateStatusBySbillIdByFlowState(xmTaskSbill.getId(),"1"); } this.updateSomeFieldByPk(xmTaskSbill); diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java index df0484f4..5b2d9cfb 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java @@ -63,8 +63,8 @@ public class XmTaskWorkloadService extends BaseService { return this.selectList("listTaskWorkloadBySbillIdGroupByUseridAndTaskId",sbillId); } - public void updateStatusBySbillIdBySbillDel(XmTaskWorkload xmTaskWorkload) { - super.update("updateStatusBySbillIdBySbillDel",xmTaskWorkload); + public void updateStatusBySbillIdBySbillDel(String sbillId) { + super.update("updateStatusBySbillIdBySbillDel",sbillId); } public void batchSetSbillIdNull(List ids) { @@ -78,5 +78,9 @@ public class XmTaskWorkloadService extends BaseService { this.xmTaskSbillService.updateByWorkloadList(sbillIds); } } + + public void updateStatusBySbillIdByFlowState(String sbillId,String sstatus) { + super.update("updateStatusBySbillIdByFlowState",map("sbillId",sbillId,"sstatus",sstatus)); + } } diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml index 8509b203..48d59465 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml @@ -38,30 +38,13 @@ AND res.biz_date BETWEEN #{startBizDate} AND #{endBizDate} - - update xm_task_workload res set sbill_id=null - where res.sbill_id=#{sbillId} + + update xm_task_workload res set detail_id=null,sstaus='1' + where exists (select 1 from xm_task_bill_detail d where d.id=res.detail_id and d.sbill_id=#{sbillId}) - - update xm_task_workload res set sbill_id=null - where res.id in - - #{item} - - - - - update xm_task_workload res - - res.sbill_id = #{sbillId}, - res.sstatus='' - - - res.id in - - #{item} - - + + update xm_task_workload res set sstatus=#{sstatus} + where exists (select 1 from xm_task_bill_detail d where d.id=res.detail_id and d.sbill_id=#{sbillId}) select - SUBSTRING(res.biz_date, 1,7) as biz_month, + left(res.biz_date,7) as biz_month, sum(ifnull(res.workload,0)) as workload, sum(if(res.wstatus='0',ifnull(res.workload,0),0)) as to_confirm_workload, sum(if(res.wstatus='1',ifnull(res.workload,0),0)) as had_confirm_workload, sum(if(res.sstatus='0',ifnull(res.workload,0),0)) as not_need_set_workload, - sum(if(res.sstatus='1',ifnull(res.sworkload,0),0)) as to_set_sworkload, - sum(if(res.sstatus='2',ifnull(res.sworkload,0),0)) as had_commit_sworkload, - sum(if(res.sstatus='3',ifnull(res.sworkload,0),0)) as had_agree_sworkload, - sum(if(res.sstatus='4',ifnull(res.sworkload,0),0)) as had_set_sworkload, + sum(if(res.sstatus='1',ifnull(res.workload,0),0)) as to_set_sworkload, + sum(if(res.sstatus='2',ifnull(res.workload,0),0)) as had_commit_sworkload, + sum(if(res.sstatus='3',ifnull(res.workload,0),0)) as had_agree_sworkload, + sum(if(res.sstatus='4',ifnull(res.workload,0),0)) as had_set_sworkload, count(distinct res.userid) as user_num from xm_task_workload res @@ -107,9 +90,11 @@