From c2f3dd409046c4d83a189198fc99b1d4e419defe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Thu, 7 Apr 2022 03:15:29 +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 ++++++++++++++---- .../core/service/XmTaskWorkloadService.java | 5 + .../mapper/xm/core/dao/XmTaskSbillMapper.xml | 2 +- .../xm/core/dao/XmTaskWorkloadMapper.xml | 69 +++-------- 4 files changed, 116 insertions(+), 77 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 dcff1f2b..97296b8d 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 @@ -6,7 +6,10 @@ import java.util.function.LongUnaryOperator; import java.util.stream.Collectors; import java.util.zip.ZipEntry; +import com.alibaba.fastjson.JSON; +import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.ResponseHelper; +import com.mdp.qx.HasQx; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.xm.core.entity.*; @@ -69,6 +72,9 @@ public class XmTaskWorkloadController { XmMenuService xmMenuService; @Autowired XmTaskSbillService xmTaskSbillService; + + + Map fieldsMap = BaseUtils.toMap(new XmTaskWorkload()); @ApiOperation( value = "查询工时登记表信息列表",notes=" ") @@ -315,25 +321,6 @@ public class XmTaskWorkloadController { } - /** - * 用于结算单 - * */ - @ApiOperation( value = "查询工时登记表信息列表",notes=" ") - @ApiResponses({ - @ApiResponse(code = 200,response=XmTaskWorkload.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}") - }) - @RequestMapping(value="/listByProject",method=RequestMethod.GET) - public Map listXmTaskWorkloadByProject( @RequestParam Map xmTaskWorkload){ - Map m = new HashMap<>(); - Tips tips=new Tips("查询成功"); - PageUtils.startPage(xmTaskWorkload); - List> xmTaskWorkloadList = xmTaskWorkloadService.selectList("selectListMapByProject",xmTaskWorkload); //列出XmTaskWorkload列表 - PageUtils.responePage(m, xmTaskWorkloadList); - m.put("data",xmTaskWorkloadList); - - m.put("tips", tips); - return m; - } @ApiOperation( value = "",notes=" ") @ApiResponses({ @@ -399,17 +386,97 @@ public class XmTaskWorkloadController { return m; } - @ApiOperation( value = "修改工时表状态",notes=" ") + + @ApiOperation( value = "批量更新工时表状态各个字段",notes="xmTaskWorkloadMap") @ApiResponses({ - @ApiResponse(code = 200,response=XmTaskWorkload.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + @ApiResponse(code = 200,response=XmMenu.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") }) - @RequestMapping(value="/editXmWorkloadWstatus",method=RequestMethod.POST) - public Map editXmWorkloadWstatus(@RequestBody Map params) { + @HasQx(value = "xm_core_xmTaskWorkload_editSomeFields",name = "批量修改修改任务中的某些字段",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") + @RequestMapping(value="/editSomeFields",method=RequestMethod.POST) + public Map editSomeFields(@RequestBody Map xmTaskWorkloadMap) { Map m = new HashMap<>(); - Tips tips=new Tips("成功更新工时登记表状态"); + Tips tips=new Tips("成功更新一条数据"); try{ + List ids= (List) xmTaskWorkloadMap.get("ids"); + + if(ids==null || ids.size()==0){ + return ResponseHelper.failed("ids-0","ids不能为空"); + } + Set fields=new HashSet<>(); + fields.add("workload"); + fields.add("userid"); + fields.add("username"); + fields.add("projectId"); + fields.add("sbillId"); + + for (String fieldName : xmTaskWorkloadMap.keySet()) { + if(fields.contains(fieldName)){ + return ResponseHelper.failed(fieldName+"-no-edit",fieldName+"不允许修改"); + } + } + List xmTaskWorkloadsDb=xmTaskWorkloadService.selectListByIds(ids); + if(xmTaskWorkloadsDb==null ||xmTaskWorkloadsDb.size()==0){ + return ResponseHelper.failed("tasks-0","该工时已不存在"); + } + String wstatus= (String) xmTaskWorkloadMap.get("wstatus"); + String sstatus= (String) xmTaskWorkloadMap.get("sstatus"); + if(StringUtils.hasText(sstatus)){ + if(!"0".equals(sstatus) && !"1".equals(sstatus)){ + return ResponseHelper.failed("sstatus-not-01","只能修改为无需结算或者待结算"); + } + } + if(StringUtils.hasText(wstatus)){ + if(!"0".equals(wstatus) && !"1".equals(wstatus) && !"2".equals(wstatus)){ + return ResponseHelper.failed("wstatus-not-012","工时状态不正确"); + } + } + if("1".equals(wstatus)){ + sstatus="1"; + xmTaskWorkloadMap.put("sstatus",sstatus); + } + + if("0".equals(wstatus)){ + sstatus="1"; + xmTaskWorkloadMap.put("sstatus",sstatus); + } + + if("2".equals(wstatus)){ + sstatus="0"; + xmTaskWorkloadMap.put("sstatus",sstatus); + } + List canChanges=new ArrayList<>(); + List sstatusNot01=new ArrayList<>(); + for (XmTaskWorkload xmTaskWorkload : xmTaskWorkloadsDb) { + if(!"1".equals(xmTaskWorkload.getSstatus()) && !"0".equals(xmTaskWorkload.getSstatus())){ + sstatusNot01.add(xmTaskWorkload); + }else{ + canChanges.add(xmTaskWorkload); + } + } + + if(canChanges.size()>0){ + Set fieldKey=xmTaskWorkloadMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet()); + fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTaskWorkloadMap.get(i) )).collect(Collectors.toSet()); + + if(fieldKey.size()>0){ + xmTaskWorkloadService.editSomeFields(xmTaskWorkloadMap); + } + } + List msgs=new ArrayList<>(); + if(canChanges.size()>0){ + msgs.add("成功修改"+canChanges.size()+"条工时清单"); + } + + if(sstatusNot01.size()>0){ + msgs.add("有"+sstatusNot01.size()+"条工时不是待结算状态,不允许更改"); + } + if(canChanges.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else{ + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } - xmTaskWorkloadService.update("updateWorkloadWstatus",params); + //m.put("data",xmMenu); }catch (BizException e) { tips=e.getTips(); logger.error("",e); 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 6d6005b0..66bd145d 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 @@ -48,5 +48,10 @@ public class XmTaskWorkloadService extends BaseService { Map map=map("sbillId",sbillId,"ids",ids); super.update("batchEditSbillId",map); } + + + public void editSomeFields(Map xmTaskWorkloadMap) { + super.update("editSomeFields",xmTaskWorkloadMap); + } } diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml index fcb27b9b..8a5fe8a3 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml @@ -20,7 +20,7 @@ - upate xm_task_sbill res left join (select w.sbill_id,sum(ifnull(w.amt,0)) as amt,sum(ifnull(w.samt,0)) as samt,sum(ifnull(w.workload,0)) as workload from xm_task_workload w group by w.sbill_id where w.sbill_id=#{id} and w.wstatus='1') as w on res.id=w.sbill_id + update xm_task_sbill res left join (select w.sbill_id,sum(ifnull(w.amt,0)) as amt,sum(ifnull(w.samt,0)) as samt,sum(ifnull(w.workload,0)) as workload from xm_task_workload w where w.sbill_id=#{id} and w.wstatus='1' group by w.sbill_id) as w on res.id=w.sbill_id set res.amt=w.samt, res.workload=w.workload 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 c861e2fb..4f548db4 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 @@ -13,10 +13,10 @@ AND - ( res.userid like #{key} OR res.username like #{key} OR res.project_id like #{key} OR res.task_id like #{key}) + ( res.username like #{key} OR res.project_id like #{key} OR res.task_id like #{key}) - AND (res.wstatus = '1'AND res.sstatus = '1') + AND (res.wstatus = '1' AND res.sstatus = '1') AND res.wstatus IN @@ -35,65 +35,30 @@ - - - - - update xm_task_workload res - - res.sstatus = #{sstatus} - - - res.sbill_id = #{sbillId} - - - - + update xm_task_workload res - res.wstatus = #{wstatus}, - res.sstatus = '1', - - res.amt = 0, - - - res.samt = 0 - + res.sbill_id = #{sbillId}, + res.sstatus='' - and (res.id) in - - #{item} - - + res.id in + + #{item} + - - + update xm_task_workload res - res.sbill_id = #{sbillId} + - - - #{item} - - + where id in + + #{item} + @@ -101,7 +66,9 @@