diff --git a/src/main/java/com/qs/serve/controller/AdminPortalController.java b/src/main/java/com/qs/serve/controller/AdminPortalController.java index 40c9ff3f..5a166308 100644 --- a/src/main/java/com/qs/serve/controller/AdminPortalController.java +++ b/src/main/java/com/qs/serve/controller/AdminPortalController.java @@ -10,7 +10,12 @@ import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.util.IdUtil; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.controller.dto.SyLoginParam; +import com.qs.serve.controller.util.SyKeyLoginUtil; +import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; +import com.qs.serve.modules.seeyon.enums.SyAffairState; +import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.sys.entity.SysTenant; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.dto.SysLoginByPhoneParam; @@ -20,7 +25,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.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.service.TbsCostApplyService; +import com.qs.serve.modules.tbs.service.impl.TbsCostApplyCompensateServiceImpl; import com.qs.serve.modules.third.ThirdTokenUtil; +import com.qs.serve.modules.tzc.entity.TzcPolicy; +import com.qs.serve.modules.tzc.service.TzcPolicyService; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.service.VtbVerificationService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -50,6 +63,13 @@ public class AdminPortalController { private SysUserService sysUserService; private ProjectProperties projectProperties; + private SeeYonRequestService seeYonRequestService; + + private TbsCostApplyService costApplyService; + private VtbVerificationService verificationService; + private TzcPolicyService policyService; + + /** * 获取所有租户 * @return @@ -69,18 +89,65 @@ public class AdminPortalController { @GetMapping("/syKeyLogin") public void getList(SyLoginParam param, HttpServletResponse response) throws IOException { String templateCode = param.getTemplateCode(); - String key = param.getKey(); String syId = param.getSyId(); + + // dev remove + if(!StringUtils.hasText(syId)){ + response.sendRedirect(projectProperties.getWebUrl()+"/#/login?"); + } + + String key = param.getKey(); + SyAffairStateResult affairStateResult = seeYonRequestService.checkAffairState(key,syId,templateCode); + // dev add + //syId = affairStateResult.getMemberId(); + + if(affairStateResult.getState()==SyAffairState.error){ + response.sendRedirect(projectProperties.getWebUrl()+"/#/login?"); + } + //通过类型和key获取审批id - String targetId = ""; + String targetId = affairStateResult.getTargetId(); + String affairId = affairStateResult.getAffairId(); + String memberId = affairStateResult.getMemberId(); + //通过syId生成token String token = sysUserLoginService.loginBySyUserId(syId); if(token==null){ response.sendRedirect(projectProperties.getWebUrl()+"/#/login?"); }else { - //todo 获取跳转地址 - String jumpUrl = "/#/expense-application-detail?id="+targetId; + String jumpUrl = "404"; + SyAffairState affairState = affairStateResult.getState(); + if(affairState!=SyAffairState.none&&affairState!=SyAffairState.error){ + //判断是否当前人员 + if(syId.equals(memberId)){ + //待审列表 + if (affairState==SyAffairState.next){ + jumpUrl = SyKeyLoginUtil.getPreCheckUrl(templateCode,targetId,affairId); + }else { + jumpUrl = SyKeyLoginUtil.getCheckedDetailUrl(templateCode,targetId); + } + }else{ + //判断是否创建人,创建人则跳转到详情 + SysUser sysUser = sysUserService.getBySyId(syId); + String creator = null; + //非当前表单用户跳转到404页面 + if(templateCode.equals(TbsSeeYonConst.CostApplyConf.Code())){ + TbsCostApply object = costApplyService.getById(targetId); + creator = object.getCreateBy(); + }else if(templateCode.equals(TbsSeeYonConst.CostCheckConf.Code())){ + VtbVerification object = verificationService.getById(targetId); + creator = object.getCreateBy(); + }else if(templateCode.equals(TbsSeeYonConst.PolicyConf.Code())){ + TzcPolicy object = policyService.getById(targetId); + creator = object.getCreateBy(); + } + if(creator.equals(sysUser.getId())){ + jumpUrl = SyKeyLoginUtil.getMyDetailUrl(templateCode,targetId); + } + } + } String fontUrl = projectProperties.getWebUrl() + "/#/jump?code=001&token="+token+"&jumpTo="+jumpUrl; + log.warn("fontUrl:{}",fontUrl); response.sendRedirect(fontUrl); } } diff --git a/src/main/java/com/qs/serve/controller/util/SyKeyLoginUtil.java b/src/main/java/com/qs/serve/controller/util/SyKeyLoginUtil.java new file mode 100644 index 00000000..e19da89d --- /dev/null +++ b/src/main/java/com/qs/serve/controller/util/SyKeyLoginUtil.java @@ -0,0 +1,71 @@ +package com.qs.serve.controller.util; + +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import lombok.experimental.UtilityClass; + +/** + * @author YenHex + * @since 2023/6/12 + */ +@UtilityClass +public class SyKeyLoginUtil { + + /** + * 获取待审批详情 + * @param templateCode + * @param targetId + * @param affairId + * @return + */ + public static String getPreCheckUrl(String templateCode,String targetId,String affairId){ + if(templateCode.equals(TbsSeeYonConst.CostApplyConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId="+affairId; + } + if(templateCode.equals(TbsSeeYonConst.CostCheckConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + if(templateCode.equals(TbsSeeYonConst.PolicyConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + return "404"; + } + + /** + * 获取已审批详情 + * @param templateCode + * @param targetId + * @return + */ + public static String getCheckedDetailUrl(String templateCode,String targetId){ + if(templateCode.equals(TbsSeeYonConst.CostApplyConf.Code())){ + return "my-expense-application-approval-approved-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + if(templateCode.equals(TbsSeeYonConst.CostCheckConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + if(templateCode.equals(TbsSeeYonConst.PolicyConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + return "404"; + } + + /** + * 获取个人申请详情 + * @param templateCode + * @param targetId + * @return + */ + public static String getMyDetailUrl(String templateCode,String targetId){ + if(templateCode.equals(TbsSeeYonConst.CostApplyConf.Code())){ + return "my-expense-application-detail?id="+targetId; + } + if(templateCode.equals(TbsSeeYonConst.CostCheckConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + if(templateCode.equals(TbsSeeYonConst.PolicyConf.Code())){ + return "my-expense-application-approval-pending-detail?expenseApplicationId="+targetId+"&approvalId=0"; + } + return "404"; + } + +} diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index f40e94c0..35de90d7 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -107,8 +107,12 @@ public class BmsSupplierController { @PreAuthorize("hasRole('bms:supplier:query')") public R> getPage(@RequestBody BmsSupplier param){ //兼容 前端接错参数 - param.setName(param.getSupplierName()); - param.setCode(param.getSupplierCode()); + if(param.getSupplierName()!=null){ + param.setName(param.getSupplierName()); + } + if(param.getSupplierCode()!=null){ + param.setCode(param.getSupplierCode()); + } if(param.getLoadByCurrent()!=null&¶m.getLoadByCurrent().equals(1)){ PageUtil.setPageSize(param.getPageSize()+""); diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java b/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java index e6f3efba..f084cfa0 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java +++ b/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java @@ -47,4 +47,6 @@ public class CtpAffairQo { * 申请人名称 */ String userName; + + String dataKey; } diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/SyAffairStateResult.java b/src/main/java/com/qs/serve/modules/seeyon/entity/SyAffairStateResult.java new file mode 100644 index 00000000..c49428f2 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/seeyon/entity/SyAffairStateResult.java @@ -0,0 +1,23 @@ +package com.qs.serve.modules.seeyon.entity; + +import com.qs.serve.modules.seeyon.enums.SyAffairState; +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @author YenHex + * @since 2023/6/12 + */ +@Data +@AllArgsConstructor +public class SyAffairStateResult { + + String affairId; + + String memberId; + + String targetId; + + SyAffairState state; + +} diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonCompensateService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonCompensateService.java index 40ba26be..ca82573c 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonCompensateService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonCompensateService.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.seeyon.service; import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; @@ -46,7 +47,8 @@ public interface SeeYonCompensateService extends SeeYonBaseService{ default R runCompensate(String targetId){ testConnection(); String templateCode = getTemplateCode(); - SyAffairState affairState = checkAffairState(targetId,templateCode); + SyAffairStateResult stateResult =checkAffairState(targetId,templateCode); + SyAffairState affairState = stateResult.getState(); if(affairState.equals(SyAffairState.next)){ return R.ok(compensateNext(targetId)); }else if(affairState.equals(SyAffairState.backed)){ @@ -68,7 +70,7 @@ public interface SeeYonCompensateService extends SeeYonBaseService{ * @param templateCode * @return */ - default SyAffairState checkAffairState(String targetId,String templateCode){ + default SyAffairStateResult checkAffairState(String targetId, String templateCode){ return getRequestService().checkAffairState(targetId,templateCode); }; 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 3375c731..507c54c1 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 @@ -79,7 +79,16 @@ public interface SeeYonRequestService { * @param templateCode * @return */ - SyAffairState checkAffairState(String targetId,String templateCode); + SyAffairStateResult checkAffairState(String targetId,String templateCode); + + /** + * 校验OA节点状态(用于调整校验) + * @param key + * @param memberId + * @param templateCode + * @return + */ + SyAffairStateResult checkAffairState(String key,String memberId,String templateCode); /** * 列表表单审批节点 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 f2135b47..03479876 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 @@ -1,5 +1,6 @@ package com.qs.serve.modules.seeyon.service.impl; +import com.alibaba.fastjson.JSONObject; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.*; @@ -13,6 +14,7 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.stereotype.Service; @@ -129,22 +131,42 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { } @Override - public SyAffairState checkAffairState(String targetId,String templateCode) { + public SyAffairStateResult checkAffairState(String targetId,String templateCode) { String title = "【校验OA节点状态】"; CtpAffairQo param = new CtpAffairQo(); param.setTargetId(targetId); param.setTemplateCode(templateCode); + return getSyAffairStateResult(title, param); + } + + @Override + public SyAffairStateResult checkAffairState(String key, String memberId, String templateCode) { + String title = "【校验OA节点状态】"; + CtpAffairQo param = new CtpAffairQo(); + param.setTemplateCode(templateCode); + param.setMemberId(memberId); + param.setDataKey(key); + return getSyAffairStateResult(title, param); + } + + @NotNull + private SyAffairStateResult getSyAffairStateResult(String title, CtpAffairQo param) { R result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_CHECK_AFFAIR,param,title); if(result.getStatus()==200){ String resultString = result.getData(); + JSONObject jsonObject = JSONObject.parseObject(resultString); + String resultName = jsonObject.getString("result"); + String resultMemberId = jsonObject.getString("memberId"); + String resultTargetId = jsonObject.getString("targetId"); + String resultAffairId = jsonObject.getString("affairId"); for (SyAffairState value : SyAffairState.values()) { - if (value.name().equals(resultString)){ - return value; + if (value.name().equals(resultName)){ + return new SyAffairStateResult(resultAffairId,resultMemberId,resultTargetId,value); } } } - log.error(title+" param==>{} \n ==> {}",JsonUtil.objectToJson(param),JsonUtil.objectToJson(result)); - return SyAffairState.error; + log.error(title+" param==>{} \n ==> {}", JsonUtil.objectToJson(param),JsonUtil.objectToJson(result)); + return new SyAffairStateResult(null,null,null,SyAffairState.error); } @Override 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 641560ed..b7e5c88f 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 @@ -72,7 +72,7 @@ public class SysUserLoginServiceImpl implements SysUserLoginService { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysUser::getSyUserId,syUserId); List userList = sysUserMapper.selectList(wrapper); - if(userList.size()==1){ + if(userList.size()>0){ UserDetails userDetails = userDetailsService.buildLoginUser(userList.get(0)); return buildResultMap(userDetails, "sy", "").get("token").toString(); } diff --git a/src/main/java/com/qs/serve/modules/tzc/common/TzcPolicyStatus.java b/src/main/java/com/qs/serve/modules/tzc/common/TzcPolicyStatus.java index b5f8f57b..9e9929e1 100644 --- a/src/main/java/com/qs/serve/modules/tzc/common/TzcPolicyStatus.java +++ b/src/main/java/com/qs/serve/modules/tzc/common/TzcPolicyStatus.java @@ -9,8 +9,8 @@ public interface TzcPolicyStatus { int Status_0_UnCommit = 0; int Status_1_Checking = 1; int Status_2_PassSuccess = 2; - int Status_3_Refuse = 3; + int Status_3_Success = 3; int Status_4_RollBack = 4; - int Status_5_Finished = 5; + int Status_5_Refuse = 5; } diff --git a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyOperationServiceImpl.java index fe6acef7..c1236e5b 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyOperationServiceImpl.java @@ -103,7 +103,7 @@ public class TzcPolicyOperationServiceImpl implements SeeYonOperationService { Long policyId = param.getPolicyId(); TzcPolicy policy = new TzcPolicy(); policy.setId(policyId); - policy.setPolicyStatus(TzcPolicyStatus.Status_3_Refuse); + policy.setPolicyStatus(TzcPolicyStatus.Status_5_Refuse); tzcPolicyService.updateById(policy); tzcPolicyService.releaseCost(policy.getId(), 1); //移除日志 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3f7aa05e..2f9c15f4 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -37,6 +37,7 @@ mybatis-plus: type-aliases-package: com.qs.serve.modules.*.entity.* configuration: map-underscore-to-camel-case: true + #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: banner: false db-config: