diff --git a/src/main/java/com/qs/serve/common/config/JwtConfig.java b/src/main/java/com/qs/serve/common/config/JwtConfig.java index e33b28a3..295c10dc 100644 --- a/src/main/java/com/qs/serve/common/config/JwtConfig.java +++ b/src/main/java/com/qs/serve/common/config/JwtConfig.java @@ -14,10 +14,10 @@ public class JwtConfig { /** * 单位分钟 */ - private final Integer expire = 60; + private final Integer expire = 7; private final String iss = "KP_ISS"; - private final String secret = "QiShenAa18n9VUcCxaSeSqLtFvsSCaRoVPKtBLaYxB0"; + private final String secret = "QiShenAa18n9VUcCxaSeSqLtFvsSCaRoVPKtBLaYxB0123456"; } diff --git a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java index 88d18c31..db1f3994 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java @@ -24,6 +24,7 @@ public class CodeGenUtil { Activity("activity"), Verification("verification"), Policy("policy"), + Budget("Budget"), PolicyItem("policy_item"); private String code; } @@ -33,7 +34,6 @@ public class CodeGenUtil { public enum SourceDataKey{ TagInfo("T","TagInfo"), SaleRegion("S","SaleRegion"), - Budget("","Budget"), BizRegion("B","BizRegion"), ActivityPayCondition("K","ActivityPayCondition"); private String prefix; diff --git a/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java b/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java index d0a9e927..31f12753 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java +++ b/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java @@ -12,6 +12,8 @@ import com.qs.serve.modules.seeyon.entity.CtpAffair; import com.qs.serve.modules.seeyon.entity.bo.CheckTargetDTO; import com.qs.serve.modules.seeyon.entity.bo.SeeYonApproveQuery; import com.qs.serve.modules.seeyon.entity.vo.SeeYonApproveDataVo; +import com.qs.serve.modules.seeyon.entity.vo.TodoVO; +import com.qs.serve.modules.seeyon.service.CommonCheckService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; import com.qs.serve.modules.sys.entity.SysUser; @@ -51,6 +53,7 @@ public class SeeYonController { private TzcPolicyService policyService; private ProjectProperties projectProperties; private TbsActivityService activityService; + private CommonCheckService commonCheckService; /** * 我的审批列表 @@ -66,6 +69,14 @@ public class SeeYonController { return listAllCha(query); } + /** + * 我的审批退回列表 + * @return + */ + @GetMapping("listMyCallback") + public R> listCallbackList(){ + return R.ok(commonCheckService.listCallbackList()); + } /** * 重定向到审批页面 diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/vo/TodoVO.java b/src/main/java/com/qs/serve/modules/seeyon/entity/vo/TodoVO.java new file mode 100644 index 00000000..23c49310 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/seeyon/entity/vo/TodoVO.java @@ -0,0 +1,27 @@ +package com.qs.serve.modules.seeyon.entity.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author YenHex + * @since 2023/8/8 + */ +@Data +public class TodoVO { + + /** 类型 */ + private String targetType; + + private String targetCode; + + private String targetId; + + /** 标题 */ + private String title; + + /** 时间 */ + private LocalDateTime time; + +} diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/CommonCheckService.java b/src/main/java/com/qs/serve/modules/seeyon/service/CommonCheckService.java new file mode 100644 index 00000000..ad645481 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/seeyon/service/CommonCheckService.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.seeyon.service; + +import com.qs.serve.modules.seeyon.entity.vo.TodoVO; +import java.util.List; + +/** + * 通用的审批服务 + * @author YenHex + * @since 2023/8/8 + */ +public interface CommonCheckService { + + /** + * 退回列表 + * @return + */ + List listCallbackList(); + +} diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/CommonCheckServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/CommonCheckServiceImpl.java new file mode 100644 index 00000000..bf9f3e81 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/seeyon/service/impl/CommonCheckServiceImpl.java @@ -0,0 +1,73 @@ +package com.qs.serve.modules.seeyon.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.modules.seeyon.entity.vo.TodoVO; +import com.qs.serve.modules.seeyon.service.CommonCheckService; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsCostApplyState; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper; +import com.qs.serve.modules.tzc.common.TzcPolicyStatus; +import com.qs.serve.modules.tzc.entity.TzcPolicy; +import com.qs.serve.modules.tzc.service.TzcPolicyService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/8/8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class CommonCheckServiceImpl implements CommonCheckService { + + private final SysUserService sysUserService; + private final TbsCostApplyMapper costApplyMapper; + private final TzcPolicyService tzcPolicyService; + + @Override + public List listCallbackList() { + String userId = AuthContextUtils.getSysUserId(); + //费用 + LambdaQueryWrapper costLqw = new LambdaQueryWrapper<>(); + costLqw.eq(TbsCostApply::getUserId,userId); + costLqw.eq(TbsCostApply::getChargeState, TbsCostApplyState.State_4_refused.getCode()); + List costApplyList = costApplyMapper.selectList(costLqw); + List todoCostList = costApplyList.stream().map(obj -> { + TodoVO todo = new TodoVO(); + todo.setTargetType("CostBill"); + todo.setTargetId(obj.getId()+""); + todo.setTargetCode(obj.getCode()); + todo.setTitle(obj.getChargeTheme()); + todo.setTime(obj.getCreateTime()); + return todo; + }).collect(Collectors.toList()); + //政策 + LambdaQueryWrapper policyLqw = new LambdaQueryWrapper<>(); + policyLqw.eq(TzcPolicy::getUserId, userId); + policyLqw.eq(TzcPolicy::getPolicyStatus, TzcPolicyStatus.Status_4_RollBack); + List policyList = tzcPolicyService.list(policyLqw); + List todoPolicyList = policyList.stream().map(obj -> { + TodoVO todo = new TodoVO(); + todo.setTargetType("ReleasePolicy"); + todo.setTargetId(obj.getId()+""); + todo.setTargetCode(obj.getPolicyCode()); + todo.setTitle(obj.getTitle()); + todo.setTime(obj.getCreateTime()); + return todo; + }).collect(Collectors.toList()); + + List result = new ArrayList<>(); + result.addAll(todoCostList); + result.addAll(todoPolicyList); + return result; + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java new file mode 100644 index 00000000..bbcabcda --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.tbs.common; + +/** + * @author YenHex + * @since 2023/8/8 + */ +public interface TbsBudgetCheckState { + + /** + * 0=未发布;1=审批中;2=完成;3-被驳回;4-中止; + */ + int State_0_unPublish = 0; + int State_1_apply = 1; + int State_2_finished = 2; + int State_3_setback = 3; + int State_4_stop = 4; + +} 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 24bd83b8..157d78ea 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 @@ -38,6 +38,13 @@ public interface TbsSeeYonConst { } } + /** 预算申请 */ + class BudgetApplyConf{ + public static String Code(){ + return DevEnvironmentConfig.isDev()?"budgetAdjust":"budgetAdjust_Test"; + } + } + String API_TEST = "/testConnection"; String API_PROCESS_CREATE = "/process/create"; String API_PROCESS_CREATE_CALLBACK = "/process/createCallback"; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java new file mode 100644 index 00000000..23e007ac --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java @@ -0,0 +1,43 @@ +package com.qs.serve.modules.tbs.controller; + +import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +/** + * 预算 预算审批 + * @author YenHex + * @since 2023/8/8 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("tbs/budgetCheck") +public class TbsBudgetCheckController { + + /** + * 提交申请 + * @return + */ + @PostMapping("commitApply/{id}") + public R commitApply(@PathVariable("id") String id){ + + return R.ok(); + } + + /** + * 提交更新申请 + * @param param + * @return + */ + @PostMapping("commitChangeApply") + public R commitApply(@RequestBody TbsBudgetUpdateAfterStartBo param){ + + return R.ok(); + } + + + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index 48cf5571..9c4834e0 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -11,6 +11,7 @@ import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.*; @@ -164,7 +165,9 @@ public class TbsBudgetController { SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); TbsScheduleItemBudget scheduleItemBudget = tbsScheduleItemBudgetService.getById(param.getId()); TbsBudget budget = tbsBudgetService.getById(scheduleItemBudget.getBudgetId()); - + if(budget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + Assert.throwEx("预算审批中无法编辑"); + } LambdaQueryWrapper logLambdaQueryWrapper = new LambdaQueryWrapper<>(); logLambdaQueryWrapper.in(TbsBudgetLog::getOptType,BudgetLogOptFlag.getFinalBudgetOptFlag()); logLambdaQueryWrapper.eq(TbsBudgetLog::getScheduleItemBudgetId,scheduleItemBudget.getId()); @@ -199,6 +202,9 @@ public class TbsBudgetController { //金额相同时退出 // if(scheduleItemBudget.getBudgetAmount().compareTo(param.getBudgetAmount())==0){return R.ok();} TbsBudget budget = tbsBudgetService.getById(scheduleItemBudget.getBudgetId()); + if(budget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + Assert.throwEx("预算审批中无法编辑"); + } // TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget(); // itemBudget.setId(param.getId()); // itemBudget.setBudgetAmount(param.getBudgetAmount()); @@ -230,6 +236,12 @@ public class TbsBudgetController { TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget(); itemBudget.setId(param.getId()); itemBudget.setPreDispatchAmount(param.getPreDispatchAmount()); + //添加拦截 + TbsScheduleItemBudget scheduleItemBudget = tbsScheduleItemBudgetService.getById(param.getId()); + TbsBudget budget = tbsBudgetService.getById(scheduleItemBudget.getBudgetId()); + if(budget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + Assert.throwEx("预算审批中无法编辑"); + } tbsScheduleItemBudgetService.updateById(itemBudget); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index c6ccd777..faeeb281 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -43,6 +43,9 @@ public class TbsBudget implements Serializable { /** 费用启用状态 0/1 */ private Integer budgetState; + /** 审批流程状态 */ + private Integer budgetCheckState; + /** 科目id */ @NotNull(message = "科目id不能为空") private Long subjectId; @@ -98,6 +101,9 @@ public class TbsBudget implements Serializable { /** 生成底表标识:默认0;同步成功为1 */ private Integer birFlag; + /** 致远表单id */ + private String syFormId; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java index eafa08ea..0c944e8d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java @@ -17,12 +17,17 @@ import java.util.List; public class TbsAffairCommitBo { /** - * 旧版的:费用申请id、核销id + * 旧版的:费用申请id、核销id(截止2023/5/23) */ private Long costApplyId; /** - * 政策ID + * 新增所有审批业务使用该字段,作数据的目标ID + */ + private String targetId; + + /** + * 政策ID(截止2023/8/8) */ private Long policyId; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java new file mode 100644 index 00000000..a054747d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.tbs.entity.bo; + +import lombok.Data; + +/** + * @author YenHex + * @since 2023/8/8 + */ +@Data +public class TbsBudgetAmtBo { + + private Integer type; + + private Long budgetScheduleItemId; + + private Integer amount; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java index 1a411321..68398209 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java @@ -53,6 +53,8 @@ public class TbsBudgetUpdateAfterStartBo implements Serializable { private String[] attachIds; + /** 修改的金额值 */ + private List budgetAmtUpdateList; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java new file mode 100644 index 00000000..82419b52 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java @@ -0,0 +1,92 @@ +package com.qs.serve.modules.tbs.service.impl; + +import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.seeyon.service.SeeYonOperationService; +import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.entity.TbsBudget; +import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 预算申请 + * @author YenHex + * @since 2023/8/8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationService { + + private TbsBudgetMapper budgetMapper; + + @Override + public String getTargetId(TbsAffairCommitBo affairCommit) { + return affairCommit.getTargetId(); + } + + @Override + public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) { + TbsBudget tbsBudget = budgetMapper.selectById(affairCommit.getTargetId()); + if(!tbsBudget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + Assert.throwEx("操作失败,预算处于非审批状态"); + } + return tbsBudget.getSyFormId(); + } + + @Override + public Object doBacked(TbsAffairCommitBo param) { + TbsBudget tbsBudget = budgetMapper.selectById(param.getTargetId()); + if(tbsBudget.getBudgetState().equals(0)&&tbsBudget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + tbsBudget.setBudgetCheckState(TbsBudgetCheckState.State_3_setback); + budgetMapper.updateById(tbsBudget); + } + return null; + } + + @Override + public Object doFinished(TbsAffairCommitBo param) { + TbsBudget tbsBudget = budgetMapper.selectById(param.getTargetId()); + if(tbsBudget.getBudgetState().equals(0)&&tbsBudget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + tbsBudget.setBudgetCheckState(TbsBudgetCheckState.State_2_finished); + //启用预算 + tbsBudget.setBudgetState(1); + budgetMapper.updateById(tbsBudget); + } + return null; + } + + @Override + public Object doRefuse(TbsAffairCommitBo param) { + TbsBudget tbsBudget = budgetMapper.selectById(param.getTargetId()); + if(tbsBudget.getBudgetState().equals(0)&&tbsBudget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + tbsBudget.setBudgetCheckState(TbsBudgetCheckState.State_4_stop); + budgetMapper.updateById(tbsBudget); + } + return null; + } + + @Override + public Object compensateBacked(String targetId) { + return null; + } + + @Override + public Object compensateFinished(String targetId) { + return null; + } + + @Override + public Object compensateRefuse(String targetId) { + return null; + } + + @Override + public String getTemplateCode() { + return TbsSeeYonConst.BudgetApplyConf.Code(); + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index f21ed392..3a1ff9e4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -18,6 +18,7 @@ import com.qs.serve.modules.sys.entity.SysAttach; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.consts.ConditionMapEnum; @@ -92,13 +93,16 @@ public class TbsBudgetServiceImpl extends ServiceImpl if(budget.getBudgetState().equals(1)){ Assert.throwEx("已开启的预算无法编辑"); } + if(budget.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + Assert.throwEx("预算审批中无法编辑"); + } //移除旧的条件数据 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId()); budgetConditionService.remove(lqw); }else { budget = CopierUtil.copy(budgetBo,new TbsBudget()); - budget.setBudgetNumber(CodeGenUtil.getDataCode(CodeGenUtil.SourceDataKey.Budget)); + budget.setBudgetNumber(CodeGenUtil.generate(CodeGenUtil.SourceKey.Budget)); } List skuIds = budgetBo.getSkuIds(); List spuIds = budgetBo.getSpuIds(); 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 2a0c88ca..e18705ef 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalController.java @@ -47,9 +47,12 @@ public class PortalController { @SysLog(title = "人员",desc = "单点登陆",biz = BizType.LOGIN) @PostMapping("/ssoLogin") public R ssoLogin(@RequestBody SSOLoginParam ssoLoginParam, HttpServletRequest request){ - ThirdTokenUtil.checkToken(request); + //ThirdTokenUtil.checkToken(request); + String vToken = request.getHeader("v-token"); + if(!vToken.equals("jslcrm2282125")){ + return R.error("Invalid v-token"); + } String host = "https://crm.gdjsl.com"; - //String host = "http://192.168.0.9:6036/"; if(StringUtils.hasText(ssoLoginParam.getRewriteHost())){ host = ssoLoginParam.getRewriteHost(); }