diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java index 7faf7cfa..824c346f 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java @@ -97,6 +97,7 @@ public class SeeYonServiceImpl implements SeeYonService { if(result.getStatus()!=200){ log.error("致远服务失败[{},{}]\nParam:{}",title,result.getMsg(),JsonUtil.objectToJson(param)); } + log.debug("致远data:{}",result.getData()); return result; } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index c402f7a1..e70c72d6 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -27,8 +27,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -323,6 +322,29 @@ public class SysUserController { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(SysUser::getId,userBo.getUserIds()); sysUserService.update(param,lqw); + if(param.getSalesFlag().equals(0)){ + sysUserSalesService.removeBatchByIds(userBo.getUserIds()); + }else { + List existList = sysUserSalesService.listByIds(userBo.getUserIds()); + List insertList = new ArrayList<>(); + for (String userId : userBo.getUserIds()) { + boolean exist = false; + for (SysUserSales userSales : existList) { + if(userId.equals(userSales.getUserId())){ + exist = true; + break; + } + } + if(!exist){ + SysUserSales userSale = new SysUserSales(); + userSale.setUserId(userId); + userSale.setPid("0"); + userSale.setPathIds("0_"+userId); + insertList.add(userSale); + } + } + sysUserSalesService.saveBatch(insertList); + } return R.ok(); } @@ -337,34 +359,70 @@ public class SysUserController { @Transactional(rollbackFor = Exception.class) public R updateSalesParent(@RequestBody @Valid SysUserParentParam userBo){ final String pid = userBo.getParentId(); - List sysUserSalesList = new ArrayList<>(); - if(!userBo.getParentId().equals("0")){ - final SysUserSales userSales = sysUserSalesService.getById(pid); - boolean isExist = false; - if(userSales!=null){ - isExist = userBo.getUserIds().stream().filter(StringUtils::hasText).anyMatch(objId->userSales.getPid().equals(objId)); - } - if(isExist&&userBo.getUserIds().size()>1){ - return R.error("多节点操作出现递归数据"); - } - if(isExist){ - SysUserSales sysUserSales = new SysUserSales(); - sysUserSales.setUserId(userSales.getPid()); - sysUserSales.setPid(userSales.getUserId()); - sysUserSalesList.add(sysUserSales); + final List userIds = new ArrayList<>(); + userIds.addAll(userBo.getUserIds()); + if(!pid.equals("0")){ + userIds.add(pid); + } + List sysUserList = sysUserService.listByIds(userIds); + for (SysUser sysUser : sysUserList) { + if(sysUser.getSalesFlag().equals(0)){ + return R.error("["+sysUser.getName()+"]未设置销售属性"); } } - List sysUserSalesList2 = userBo.getUserIds().stream().filter(StringUtils::hasText).map(uid->{ - SysUserSales sysUserSales = new SysUserSales(); - sysUserSales.setUserId(uid); - sysUserSales.setPid(pid); - return sysUserSales; - }).collect(Collectors.toList()); - sysUserSalesList.addAll(sysUserSalesList2); - sysUserSalesService.saveOrUpdateBatch(sysUserSalesList); + List updateAllList = new ArrayList<>(); + if(pid.equals("0")){ + List sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds()); + List updateList = this.updateSalesLevel(pid, "0", sysUserSales); + updateAllList.addAll(updateList); + }else { + SysUserSales parent = sysUserSalesService.getById(pid); + List sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds()); + List updateList = this.updateSalesLevel(pid, parent.getPathIds(), sysUserSales); + updateAllList.addAll(updateList); + } + sysUserSalesService.updateBatchById(updateAllList); return R.ok(); } + /** + * 更新id路径 + * @param pid + * @param newPrefixPath + * @param sysUserSales + * @return + */ + private List updateSalesLevel(String pid,String newPrefixPath,List sysUserSales) { + List updateList = new ArrayList<>(); + for (SysUserSales userSale : sysUserSales) { + String pathIds = userSale.getPathIds(); + String oldPrefixPath = pathIds.substring(0,pathIds.lastIndexOf(userSale.getUserId())-1); + userSale.setPathIds(newPrefixPath+"_"+userSale.getUserId()); + userSale.setPid(pid); + updateList.add(userSale); + //更新子节点 + List childList = sysUserSalesService.listByPathId(pathIds); + for (SysUserSales childNode : childList) { + String childPathIds = newPrefixPath + childNode.getPathIds().replace(oldPrefixPath,""); + String[] arr = childPathIds.split("_"); + Set setStr = new HashSet<>(); + for (String strv : arr) { + setStr.add(strv); + } + String lastId = arr[arr.length-1]; + if(!lastId.equals(childNode.getUserId())||userSale.getUserId().equals(childNode.getUserId())){ + continue; + } + if(setStr.size() { */ List selectSysUserSalesList(SysUserSales userSales); + /** + * 通过路径查询 + * @param pathId + * @return + */ + List listByPathId(String pathId); + + + } diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java index 58d857c5..faf2148e 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java @@ -1,6 +1,8 @@ package com.qs.serve.modules.sys.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.StringUtils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -8,6 +10,7 @@ import com.qs.serve.modules.sys.entity.SysUserSales; import com.qs.serve.modules.sys.service.SysUserSalesService; import com.qs.serve.modules.sys.mapper.SysUserSalesMapper; +import java.util.ArrayList; import java.util.List; /** @@ -25,5 +28,14 @@ public class SysUserSalesServiceImpl extends ServiceImpl listByPathId(String pathId) { + if(!StringUtils.hasText(pathId)){ + return new ArrayList<>(); + } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(SysUserSales::getPathIds,pathId); + return this.list(lqw); + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java index 373d98ca..85b04805 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java @@ -11,12 +11,13 @@ import lombok.Getter; @AllArgsConstructor public enum TbsCostApplyState { - //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回 + //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止 State_0_unPublish(0), State_1_apply(1), State_2_actioning(2), State_3_finished(3), - State_4_refused(4); + State_4_refused(4), + State_5_stop(5); private Integer code; diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index 1131cad5..ae6eef40 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java @@ -6,9 +6,10 @@ package com.qs.serve.modules.tbs.common; */ public interface TbsSeeYonConst { - String COST_APPLY_FORM = "CostBill_Test"; + String PRE_TITLE_COST_APPLY = "【预算费用申请】"; + String PRE_TITLE_VERIFICATION = "【预算费用核销】"; - String COST_APPLY_USER = "banzhang1"; + String COST_APPLY_FORM = "CostBill_Test"; String API_PROCESS_CREATE = "/process/create"; String API_PROCESS_COMMIT = "/process/commit"; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 21b9d028..99215082 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -249,6 +249,15 @@ public class TbsActivityController { return R.error("因费用状态不支持编辑!!"); } boolean result = tbsActivityService.removeById(id); + //删除子表数据 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("activity_id",id); + activitySubjectService.remove(queryWrapper); + activityGoodsService.remove(queryWrapper); + activityChannelPointService.remove(queryWrapper); + activityChannelService.remove(queryWrapper); + activityCenterService.remove(queryWrapper); + activityCenterGoodsService.remove(queryWrapper); //删除活动数量到费用申请 TbsCostApply costApplyParam = new TbsCostApply(); costApplyParam.setId(costApply.getId()); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java index 258471d5..9f642637 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java @@ -66,6 +66,7 @@ public class TbsActivityTemplateController { public R> getPage(TbsActivityTemplateSo param){ TbsActivityTemplate entity = CopierUtil.copy(param,new TbsActivityTemplate()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + lqw.orderByDesc(TbsActivityTemplate::getId); PageUtil.startPage(); List list = tbsActivityTemplateService.list(lqw); return R.byPageHelperList(list); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 23b657d4..a8baeb73 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -89,6 +89,21 @@ public class TbsCostApplyController { return R.ok(list); } + /** + * 列表 + * @param param + * @return + */ + @GetMapping("/listMy") + public R> getListMy(TbsCostApplyVo param){ + TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + lqw.eq(TbsCostApply::getCreateBy,AuthContextUtils.getSysUserId()); + PageUtil.startPage(); + List list = tbsCostApplyService.list(lqw); + return R.ok(list); + } + /** * 翻页 * @param param @@ -99,6 +114,7 @@ public class TbsCostApplyController { public R> getPage(TbsCostApplyVo param){ TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + lqw.orderByDesc(TbsCostApply::getId); PageUtil.startPage(); List list = tbsCostApplyService.list(lqw); return R.byPageHelperList(list); @@ -191,7 +207,7 @@ public class TbsCostApplyController { /** * 审批列表(翻页) - * @param state 状态:0-未完成与已完成;1-未完成;2已完成;其它-加载所有 + * @param state 状态:0-未完成与已完成(默认);1-未完成;2已完成;3-我发起的;其它-被拦截 * @param pageNum * @param pageSize * @return @@ -242,6 +258,7 @@ public class TbsCostApplyController { @PreAuthorize("hasRole('tbs:costApply:commit')") public R commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + sysUser.checkSyAccount(); TbsCostApply costApply = tbsCostApplyService.getById(affairCommit.getCostApplyId()); if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ return R.error("费用申请处于未非审批状态!"); @@ -250,9 +267,9 @@ public class TbsCostApplyController { param.setState(affairCommit.getState()); param.setAffairId(affairCommit.getAffairId()); param.setComment(affairCommit.getComment()); - if(affairCommit.getState().equals(0)){ + if(affairCommit.getState().equals(1)){ param.setMemberId(sysUser.getSyUserId()); - }else if(affairCommit.getState().equals(1)){ + }else if(affairCommit.getState().equals(0)){ param.setMemberId(sysUser.getSyAccount()); }else { Assert.throwEx("param err2"); @@ -267,11 +284,17 @@ public class TbsCostApplyController { apply.setId(costApply.getId()); apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); tbsCostApplyService.updateById(apply); - }else if ("refused".equals(flag)){ - //todo 退回节点 + }else if ("stop".equals(flag)){ + TbsCostApply apply = new TbsCostApply(); + apply.setId(costApply.getId()); + apply.setChargeState(TbsCostApplyState.State_5_stop.getCode()); + tbsCostApplyService.updateById(apply); + return R.ok(); }else if ("next".equals(flag)){ return R.ok(); } + }else if (result.getStatus()==500){ + return result; } return R.error("远程调用失败"); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java index 97b87051..5227f5de 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java @@ -68,6 +68,7 @@ public class TbsScheduleController { public R> getPage(TbsScheduleVo param){ TbsSchedule entity = CopierUtil.copy(param,new TbsSchedule()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + lqw.orderByDesc(TbsSchedule::getId); PageUtil.startPage(); List list = tbsScheduleService.list(lqw); return R.byPageHelperList(list); @@ -98,7 +99,6 @@ public class TbsScheduleController { @SysLog(module = SystemModule.Budget, title = "考核期", biz = BizType.UPDATE) @PreAuthorize("hasRole('tbs:schedule:update')") public R updateById(@RequestBody @Valid TbsSchedule entity){ -// TbsSchedule entity = CopierUtil.copy(param,new TbsSchedule()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsBudget::getScheduleId,entity.getId()); if(tbsBudgetService.count(lqw)>0){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java index 2d734d32..8d5b71c3 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java @@ -151,7 +151,7 @@ public class TbsBudgetApplicationService { TbsBudgetTableVo.TopTheadHeader theadHeader = new TbsBudgetTableVo.TopTheadHeader(); theadHeader.setId(scheduleItemBudgetId+""); theadHeader.setLabel(budgetCode+"("+scheduleItemName+")"); - BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(itemBudget.getId())); + BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(scheduleItemBudgetId)); theadHeader.setBudgetAmount(budgetAmount.subtract(totalUsed)); topTheadHeaders.add(theadHeader); } @@ -257,7 +257,7 @@ public class TbsBudgetApplicationService { //当前项费用 BigDecimal budgetAmount = itemBudget.getBudgetAmount(); //前置费用 - BigDecimal lastAmount = counterMap.get(itemBudget.getId()); + BigDecimal lastAmount = counterMap.get(itemBudget.getId()); if(lastAmount==null){ lastAmount = BigDecimal.ZERO; } @@ -291,11 +291,11 @@ public class TbsBudgetApplicationService { }else if (throwEx){ Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]预算不足"); } + activityCostItem.setBudgetId(0L); + activityCostItem.setScheduleId(0L); + activityCostItem.setScheduleItemId(0L); + activityCostItem.setScheduleItemBudgetId(0L); } - activityCostItem.setBudgetId(0L); - activityCostItem.setScheduleId(0L); - activityCostItem.setScheduleItemId(0L); - activityCostItem.setScheduleItemBudgetId(0L); actMatchList.add(activityCostItem); }else { if(throwEx){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index d95ce5cf..1e03fdb0 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -87,6 +87,11 @@ public class TbsActivityServiceImpl extends ServiceImpl(); @@ -169,6 +167,26 @@ public class TbsActivityServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.select(TbsActivity::getTotalAmount); + lqw.eq(TbsActivity::getCostApplyId,costApplyId); + List activityList = list(lqw); + BigDecimal totalCostAmount = BigDecimal.ZERO; + for (TbsActivity tbsActivity : activityList) { + totalCostAmount = totalCostAmount.add(tbsActivity.getTotalAmount()); + } + TbsCostApply costApplyParam = new TbsCostApply(); + costApplyParam.setId(costApplyId); + costApplyParam.setTotalActivity(activityList.size()); + costApplyParam.setTotalActivityAmount(totalCostAmount); + costApplyService.updateById(costApplyParam); + } + private void initChannelsAndSave(TbsActivityBo activityBo,TbsCostApply costApply,TbsActivity activity){ if(CollectionUtil.isNotEmpty(activityBo.getActivityChannelList())){ List activityChannelList = new ArrayList<>(); @@ -365,7 +383,6 @@ public class TbsActivityServiceImpl extends ServiceImpl data = new HashMap<>(10); data.put("empId",sysUser.getCode()); @@ -65,8 +66,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl flowIdResult = seeYonService.baseCreateProcess(createProcess); if(flowIdResult.getStatus()!=200){