Browse Source

重新生成工时表

master
陈裕财 4 years ago
parent
commit
9787b9c464
  1. 130
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java
  2. 19
      xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java
  3. 8
      xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java
  4. 55
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml

130
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<String,Object> batchSetSbillIdNull(@RequestBody List<XmTaskWorkload> xmTaskWorkloads) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功移出结算单");
try{
List<String> 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<XmTaskWorkload> list=this.xmTaskWorkloadService.selectListByIds(ids);
if(list.size()==0){
return ResponseHelper.failed("data-0","工时明细不存在");
}
List<XmTaskSbill> xmTaskSbills=this.xmTaskSbillService.selectListByIds(list.stream().map(i->i.getSbillId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
Map<String,XmTaskSbill> canBillMap=new HashMap<>();
for (XmTaskSbill xmTaskSbill : xmTaskSbills) {
if(user.getUserid().equals(xmTaskSbill.getCuserid())){
if("0".equals(xmTaskSbill.getStatus())){
canBillMap.put(xmTaskSbill.getId(),xmTaskSbill);
}
}
}
List<XmTaskWorkload> canChanges=list.stream().filter(i->canBillMap.containsKey(i.getSbillId())).collect(Collectors.toList());
List<XmTaskWorkload> 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<String> 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<String,Object> editWorkloadToSbill(@RequestBody Map<String,Object> params) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功添加到结算单");
try{
List<String> ids= (List<String>) 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<XmTaskWorkload> list=this.xmTaskWorkloadService.selectListByIds(ids);
if(list.size()==0){
return ResponseHelper.failed("data-0","工时明细不存在");
}
List<XmTaskWorkload> canChanges=list.stream().filter(i->"1".equals(i.getSstatus()) && "1".equals(i.getWstatus())).collect(Collectors.toList());
List<XmTaskWorkload> 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<String> 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<String> 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<String> msgs=new ArrayList<>();

19
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<XmTaskWorkload> 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);

8
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<String> 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));
}
}

55
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml

@ -38,30 +38,13 @@
AND res.biz_date BETWEEN #{startBizDate} AND #{endBizDate}
</if>
</sql>
<update id="updateStatusBySbillIdBySbillDel" parameterType="com.xm.core.entity.XmTaskWorkload">
update xm_task_workload res set sbill_id=null
where res.sbill_id=#{sbillId}
<update id="updateStatusBySbillIdBySbillDel" parameterType="String">
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>
<update id="batchSetSbillIdNull" parameterType="List">
update xm_task_workload res set sbill_id=null
where res.id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</update>
<!-- 根据条件修改若干条记录 -->
<update id="batchEditSbillId" parameterType="HashMap">
update xm_task_workload res
<set>
res.sbill_id = #{sbillId},
res.sstatus=''
</set>
<where>
res.id in
<foreach collection="ids" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</where>
<update id="updateStatusBySbillId" parameterType="HashMap">
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})
</update>
<select id="listProjectWorkloadSetDay" parameterType="HashMap" resultType="HashMap">
@ -71,10 +54,10 @@
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
<where>
@ -87,15 +70,15 @@
<select id="listProjectWorkloadSetMonth" parameterType="HashMap" resultType="HashMap">
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
<where>
@ -107,9 +90,11 @@
</select>
<select id="listTaskWorkloadBySbillIdGroupByUseridAndTaskId" parameterType="String" resultType="HashMap">
select sum(ifnull(res.workload,0)) as workload,sum(ifnull(res.samt,0)) as samt,sum(ifnull(res.amt,0)) as amt,
sum(ifnull(res.sworkload,0)) as sworkload,res.task_id ,max(res.username) as username,max(t.name) as task_name from xm_task_workload res inner join xm_task t on res.task_id=t.id
where res.sbill_id=#{sbillId} and res.sstatus='4'
select sum(ifnull(res.workload,0)) as workload,
sum(ifnull(res.workload,0)) as sworkload,res.task_id ,max(res.username) as username,max(t.name) as task_name from xm_task_workload res inner join xm_task t on res.task_id=t.id
where
exists (select 1 from xm_task_sbill_detail d where d.id=res.detail_id and d.sbill_id=#{sbillId})
and res.sstatus='4'
group by res.userid,res.task_id
</select>
<!--结束 自定义sql函数区域-->

Loading…
Cancel
Save