diff --git a/src/main/java/com/qs/serve/controller/AdminPortalController.java b/src/main/java/com/qs/serve/controller/AdminPortalController.java index 14752f94..5ced3963 100644 --- a/src/main/java/com/qs/serve/controller/AdminPortalController.java +++ b/src/main/java/com/qs/serve/controller/AdminPortalController.java @@ -18,12 +18,15 @@ import com.qs.serve.modules.sys.mapper.SysNoticeUserMapper; import com.qs.serve.modules.sys.service.SysTenantService; import com.qs.serve.modules.sys.service.SysUserLoginService; import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.third.ThirdTokenUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; /** @@ -63,6 +66,7 @@ public class AdminPortalController { return R.ok(sysUserLoginService.login(param)); } + /** * 手机登陆 * @return diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 93add18a..56781505 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -161,7 +161,7 @@ public interface SeeYonOperationService extends SeeYonBaseService{ Assert.throwEx("当前账号未绑定致远用户信息"); } param.setMemberId(sysUser.getSyUserId()); - param.setTemplateCode(TbsSeeYonConst.CostApplyConf.Code()); + param.setTemplateCode(getTemplateCode()); R> syResult = getRequestService().pageMemberAffair(param); PageVo pageVo = syResult.getData(); List ctpAffairs = pageVo.getList(); @@ -193,6 +193,18 @@ public interface SeeYonOperationService extends SeeYonBaseService{ */ default void pageMemberAffair4packageVo(List result){} + /** + * 获取审批中的统计 + * @return + */ + default R getUnfinished(){ + SysUser sysUser = getUserMapper().selectById(AuthContextUtils.getSysUserId()); + if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){ + return getRequestService().getUnfinishedAffair(getTemplateCode(), sysUser.getSyAccount()); + } + return R.ok(123456L); + } + /** * 审批提交 * @param affairCommit diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java index fa88ab25..3375c731 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java @@ -90,4 +90,12 @@ public interface SeeYonRequestService { R addNode(CtpAddNodeDTO addNodeDTO); + /** + * 未完成审批统计 + * @param templateCode + * @param memberId + * @return + */ + R getUnfinishedAffair(String templateCode,String memberId); + } diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java index a37d30cd..a528168b 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java @@ -17,7 +17,9 @@ import org.jetbrains.annotations.Nullable; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author YenHex @@ -141,7 +143,7 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { } } } - log.error("校验OA节点状态 param==>{} \n ==> {}",JsonUtil.objectToJson(param),JsonUtil.objectToJson(result)); + log.error(title+" param==>{} \n ==> {}",JsonUtil.objectToJson(param),JsonUtil.objectToJson(result)); return SyAffairState.error; } @@ -171,4 +173,20 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_ADD_NODE,addNodeDTO,title); } + @Override + public R getUnfinishedAffair(String templateCode, String memberId) { + String title = "【获取未审统计】"; + Map param = new HashMap<>(); + param.put("templateCode",templateCode); + param.put("memberId",memberId); + R result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_COUNT_NOT_OK,param,title); + if(result.getStatus()==200){ + try { + R.ok(Long.parseLong(result.getData())); + } catch (NumberFormatException e) { + log.error(title+" param==>{} \n ==> {}",JsonUtil.objectToJson(param),JsonUtil.objectToJson(result)); + } + } + return R.ok(0L); + } } diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysUserLoginService.java b/src/main/java/com/qs/serve/modules/sys/service/SysUserLoginService.java index bf920532..b2ae2da9 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/SysUserLoginService.java +++ b/src/main/java/com/qs/serve/modules/sys/service/SysUserLoginService.java @@ -19,6 +19,8 @@ public interface SysUserLoginService { */ Map login(SysLoginParam loginParam); + Map login(String loginCode); + /** * 手机登陆 * @param loginParam diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java index 86fb6012..284a2eb0 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java @@ -58,6 +58,15 @@ public class SysUserLoginServiceImpl implements SysUserLoginService { return buildResultMap(userDetails, loginParam.getLoginType(), loginParam.getYmToken()); } + @Override + public Map login(String loginCode) { + UserDetails userDetails = userDetailsService.loadUserByUsername(loginCode); + if(userDetails == null){ + throw new BadCredentialsException("账号不正确或未被收录"); + } + return buildResultMap(userDetails, "sso", null); + } + @Override public Map login(SysLoginByPhoneParam loginParam) { String key = RedisCacheKeys.PHONE_KEY+loginParam.getPhone(); @@ -92,10 +101,10 @@ public class SysUserLoginServiceImpl implements SysUserLoginService { }else if("ios".equalsIgnoreCase(loginType)){ appClient = "ios"; } - if(appClient!=null&&StringUtils.isNotEmpty(ymToken)){ + /*if(appClient!=null&&StringUtils.isNotEmpty(ymToken)){ sysUserMapper.clearYmToken(ymToken); sysUserMapper.updateYmTokenInt(loginUser.getUserId(),ymToken,appClient); - } + }*/ String client = appClient==null?"pc":"app"; String redisKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_APP,client,loginUser.getUserId()); //更新管理员最后登录时间 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 d056dffa..22211ecd 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 @@ -44,6 +44,7 @@ public interface TbsSeeYonConst { String API_CHECK_AFFAIR = "/process/checkAffair"; String API_LIST_AFFAIR = "/process/listFormAffair"; String API_ADD_NODE = "/process/addNode"; + String API_COUNT_NOT_OK = "/process/countUnfinished"; String XLT_SAVE_CHECK = "/xlt/saveCheck"; String XLT_SAVE_PAYMENT = "/xlt/savePayment"; 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 7a98fa02..d0ad84a3 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 @@ -15,6 +15,7 @@ import com.qs.serve.modules.tbs.service.TbsActivityTemplateLogService; import com.qs.serve.modules.tbs.service.TbsActivityTemplateRegionService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -202,11 +203,30 @@ public class TbsActivityTemplateController { } /** - * 获取当前用户的模板 + * 获取当前用户的模板列表 LIST * @return */ @GetMapping("/listMyTemplate") public R> listMyTemplate(String templateName){ + LambdaQueryWrapper tmpLqw = buildMyTempQueryWrapper(templateName); + PageUtil.startPage(); + List templates = tbsActivityTemplateService.list(tmpLqw); + return R.byPageHelperList(templates); + } + + /** + * 获取当前用户的模板统计 COUNT + * @return + */ + @GetMapping("/countMyTemplate") + public R countMyTemplate(String templateName){ + LambdaQueryWrapper tmpLqw = buildMyTempQueryWrapper(templateName); + Long count = tbsActivityTemplateService.count(tmpLqw); + return R.ok(count); + } + + @NotNull + private LambdaQueryWrapper buildMyTempQueryWrapper(String templateName) { String userId = AuthContextUtils.getSysUserId(); LambdaQueryWrapper regionUseLqw = new LambdaQueryWrapper<>(); regionUseLqw.eq(BmsRegionUser::getUserId,userId); @@ -250,11 +270,9 @@ public class TbsActivityTemplateController { }); }); if(StringUtils.hasText(templateName)){ - tmpLqw.like(TbsActivityTemplate::getTemplateName,templateName); + tmpLqw.like(TbsActivityTemplate::getTemplateName, templateName); } - PageUtil.startPage(); - List templates = tbsActivityTemplateService.list(tmpLqw); - return R.byPageHelperList(templates); + return tmpLqw; } } 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 b5f6a02f..538381af 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 @@ -356,90 +356,6 @@ public class TbsCostApplyController { return tbsCostApplyOperationServiceImpl.commitAffair(affairCommit); } - /** - * 提交审批节点 - * @return - */ - //@PostMapping("/commitAffair") -// @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) -// @PreAuthorize("hasRole('tbs:costApply:commit')") -// public R commitAffair_old(@RequestBody @Valid TbsAffairCommitBo affairCommit){ -// seeYonService.testConnection(); -// TbsCostApply costApply = tbsCostApplyService.getById(affairCommit.getCostApplyId()); -// if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ -// return R.error("费用申请处于未非审批状态!"); -// } -// R result = seeYonService.commonCommit(affairCommit,TbsSeeYonConst.CostApplyConf.Code(),costApply.getSyFormId()); -// boolean isBackCommit = affairCommit.getState()==2; -// if(result.getStatus()==200){ -// // 判断是否含有下个节点 -// String flag = result.getData(); -// //审批中(next)、完成(finish)、拒绝(refused) -// if("finish".equals(flag)){ -// TbsCostApply apply = new TbsCostApply(); -// apply.setId(costApply.getId()); -// apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); -// tbsCostApplyService.updateById(apply); -// //更新活动通过时间 -// TbsActivity tbsActivity = new TbsActivity(); -// tbsActivity.setCostPassTime(LocalDateTime.now()); -// tbsActivity.setCostPassFlag(1); -// LambdaQueryWrapper actLqw = new LambdaQueryWrapper<>(); -// actLqw.eq(TbsActivity::getCostApplyId,costApply.getId()); -// tbsActivityService.update(tbsActivity,actLqw); -// return R.ok(); -// }else if ("stop".equals(flag)){ -// if(isBackCommit){ -// TbsCostApply apply = new TbsCostApply(); -// apply.setId(costApply.getId()); -// apply.setChargeState(TbsCostApplyState.State_4_refused.getCode()); -// tbsCostApplyService.updateById(apply); -// LambdaQueryWrapper logLqw = new LambdaQueryWrapper<>(); -// logLqw.select(TbsBudgetLog::getId); -// logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); -// logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_0); -// List budgetLogList = tbsBudgetLogService.list(logLqw); -// budgetLogList.forEach(a->a.setRollbackFlag(BudgetLogRollbackFlag.State_1)); -// tbsBudgetLogService.updateBatchById(budgetLogList); -// return R.ok(); -// }else { -// TbsCostApply apply = new TbsCostApply(); -// apply.setId(costApply.getId()); -// apply.setChargeState(TbsCostApplyState.State_5_stop.getCode()); -// tbsCostApplyService.updateById(apply); -// tbsCostApplyService.releaseCost(costApply.getId(), 1); -// //移除日志 -// LambdaQueryWrapper logLqw = new LambdaQueryWrapper<>(); -// logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); -// List oldLogList = tbsBudgetLogService.list(logLqw); -// List oldLogList4Upd = oldLogList.stream().map(a->{ -// TbsBudgetLog budgetLog = new TbsBudgetLog(); -// budgetLog.setId(a.getId()); -// budgetLog.setRollbackFlag(BudgetLogRollbackFlag.State_3); -// return budgetLog; -// }).collect(Collectors.toList()); -// tbsBudgetLogService.updateBatchById(oldLogList4Upd); -// for (TbsBudgetLog budgetLog : oldLogList) { -// budgetLog.setCreateBy(null); -// budgetLog.setCreateTime(null); -// budgetLog.setUpdateBy(null); -// budgetLog.setUpdateTime(null); -// budgetLog.setId(null); -// budgetLog.setAmount(budgetLog.getAmount().negate()); -// budgetLog.setOptType(BudgetLogOptFlag.State_5); -// } -// tbsBudgetLogService.saveBatch(oldLogList); -// return R.ok(); -// } -// }else if ("next".equals(flag)){ -// return R.ok(); -// } -// }else if (result.getStatus()==500){ -// return result; -// } -// return R.error("远程调用失败"); -// } - /** * 补偿接口 * @param param @@ -474,5 +390,14 @@ public class TbsCostApplyController { return tbsCostApplyOperationServiceImpl.addNode(param); } + /** + * 获取未完成审批统计(个人) + * @return + */ + @PostMapping("/getAffairUnfinished") + public R getUnfinished(){ + return tbsCostApplyOperationServiceImpl.getUnfinished(); + } + } diff --git a/src/main/java/com/qs/serve/modules/third/PortalController.java b/src/main/java/com/qs/serve/modules/third/PortalController.java index b9231460..aad7feaa 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalController.java @@ -3,16 +3,24 @@ package com.qs.serve.modules.third; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.JsonArray; +import com.qs.serve.common.model.annotation.LimitSubmit; +import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.util.JsonUtil; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.seeyon.service.XiaoLuTonService; +import com.qs.serve.modules.sys.service.SysUserLoginService; import com.qs.serve.modules.third.entity.AptPolicyPayment; +import com.qs.serve.modules.third.entity.param.SSOLoginParam; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import java.util.Map; /** * 【第三方接口】核销系统 @@ -25,7 +33,27 @@ import javax.servlet.http.HttpServletRequest; @RequestMapping("thirty/") public class PortalController { - private XiaoLuTonService xiaoLuTonService; + private SysUserLoginService sysUserLoginService; + + /** + * 单点登录 + * @return + */ + @LimitSubmit + @SysLog(title = "人员",desc = "单点登陆",biz = BizType.LOGIN) + @PostMapping("/ssoLogin") + public R ssoLogin(SSOLoginParam ssoLoginParam, HttpServletRequest request){ + ThirdTokenUtil.checkToken(request); + String host = "https://crm.gdjsl.com"; + if(StringUtils.hasText(ssoLoginParam.getRewriteHost())){ + host = ssoLoginParam.getRewriteHost(); + } + Map result = sysUserLoginService.login(ssoLoginParam.getEmpCode()); + String token = (String) result.get("token"); + String jumpTo = StringUtils.hasText(ssoLoginParam.getJumpTo())?ssoLoginParam.getJumpTo():""; + String url = host + "/#/jump?code=001&token="+token+"&jumpTo="+jumpTo; + return R.ok(url); + } /** * 测试连通性 diff --git a/src/main/java/com/qs/serve/modules/third/entity/param/SSOLoginParam.java b/src/main/java/com/qs/serve/modules/third/entity/param/SSOLoginParam.java new file mode 100644 index 00000000..f592ad5a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/entity/param/SSOLoginParam.java @@ -0,0 +1,28 @@ +package com.qs.serve.modules.third.entity.param; + +import lombok.Data; + +/** + * @author YenHex + * @since 2023/5/26 + */ +@Data +public class SSOLoginParam { + + /** + * 员工号 + */ + String empCode; + + /** + * 支持重写host + * 默认:rewriteHost = https://crm.gdjsl.com + */ + String rewriteHost; + + /** + * 跳转地址 + */ + String jumpTo; + +} diff --git a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java index 6761862b..b0b4538c 100644 --- a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java +++ b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java @@ -382,5 +382,16 @@ public class TzcPolicyController { return tzcPolicyOperationService.addNode(param); } + + /** + * 获取未完成审批统计(个人) + * @return + */ + @PostMapping("/getAffairUnfinished") + public R getUnfinished(){ + return tzcPolicyOperationService.getUnfinished(); + } + + } diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index 8ee8a57a..9c4c326c 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java @@ -24,6 +24,7 @@ import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import com.qs.serve.modules.vtb.entity.*; import com.qs.serve.modules.vtb.service.*; +import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -58,7 +59,7 @@ public class VtbVerificationController { private VtbVerificationApplication verificationApplication; private VtbVerificationYardService verificationYardService; private VtbVerificationYardItemService vtbVerificationYardItemService; - + private VtbVerificationOperationServiceImpl vtbVerificationOperationService; /** * 翻页 @@ -229,13 +230,20 @@ public class VtbVerificationController { * @param param * @return */ -// @PostMapping("/addNode") -// @SysLog(module = SystemModule.Verification, title = "核销加签", biz = BizType.OTHER) -// public R addNode(@RequestBody CtpAddNodeParam param){ -// seeYonService.testConnection(); -// return verificationApplication.commitAffair(param); -// } + @PostMapping("/addNode") + @SysLog(module = SystemModule.Verification, title = "核销加签", biz = BizType.OTHER) + public R addNode(@RequestBody CtpAddNodeParam param){ + return vtbVerificationOperationService.addNode(param); + } + /** + * 获取未完成统计 + * @return + */ + @PostMapping("/getAffairUnfinished") + public R getUnfinished(){ + return vtbVerificationOperationService.getUnfinished(); + } } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java new file mode 100644 index 00000000..b926fd5c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java @@ -0,0 +1,58 @@ +package com.qs.serve.modules.vtb.service.impl; + +import com.qs.serve.modules.seeyon.service.SeeYonOperationService; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author YenHex + * @since 2023/5/26 + */ +@Slf4j +@Service +@AllArgsConstructor +public class VtbVerificationOperationServiceImpl implements SeeYonOperationService { + + private VtbVerificationMapper vtbVerificationMapper; + + @Override + public String getTemplateCode() { + return TbsSeeYonConst.CostCheckConf.Code(); + } + + @Override + public String getTargetId(TbsAffairCommitBo affairCommit) { + return affairCommit.getCostApplyId()+""; + } + + @Override + public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) { + VtbVerification verification = vtbVerificationMapper.selectById(affairCommit.getCostApplyId()); + return null; + } + + @Override + public Object doBacked(TbsAffairCommitBo param) { + return null; + } + + @Override + public Object doFinished(TbsAffairCommitBo param) { + return null; + } + + @Override + public Object doRefuse(TbsAffairCommitBo param) { + return null; + } + + @Override + public Object doNext(TbsAffairCommitBo param) { + return null; + } +}