From 8c7315651a8ff7beba64da3588ede9bd66366f0a Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 29 Oct 2024 08:38:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=80=82=E9=85=8Doa=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/flow/model/CtpAffairQo.java | 70 ++++++++++++++++++ .../modules/flow/model/SyAffairState.java | 17 +++++ .../flow/model/SyAffairStateResult.java | 22 ++++++ .../modules/flow/model/TbsAffairCommitBo.java | 40 +++++++++++ .../flow/service/SeeYonOptionService.java | 71 +++++++++++++++++++ .../flow/service/impl/SeeYonServiceImpl.java | 4 +- .../modules/visit/api/VisitMainOuterApi.java | 4 +- .../visit/controller/VisitMainController.java | 19 ++++- .../service/impl/VisitMainServiceImpl.java | 46 ++++++++++-- 9 files changed, 283 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/flow/model/CtpAffairQo.java create mode 100644 src/main/java/com/qs/serve/modules/flow/model/SyAffairState.java create mode 100644 src/main/java/com/qs/serve/modules/flow/model/SyAffairStateResult.java create mode 100644 src/main/java/com/qs/serve/modules/flow/model/TbsAffairCommitBo.java diff --git a/src/main/java/com/qs/serve/modules/flow/model/CtpAffairQo.java b/src/main/java/com/qs/serve/modules/flow/model/CtpAffairQo.java new file mode 100644 index 0000000..916e38f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/flow/model/CtpAffairQo.java @@ -0,0 +1,70 @@ +package com.qs.serve.modules.flow.model; + +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/22 + */ +@Data +public class CtpAffairQo { + + String memberId; + String formMainId; + + /** + * 状态:0-未完成与已完成(默认);1-未完成;2已完成;3-我发起的;其它-被拦截 + */ + Integer state; + + Integer pageNum; + Integer pageSize; + + String templateCode; + String templateId; + + + String applyUserCode; + String applyUserName; + String supplierName; + String supplierCode; + String title; + String rowState; + + String targetId; + /** + * v2 版本接口添加 + */ + String targetCode; + + String startTime; + String endTime; + + /** + * 标题 + */ + String chargeTheme; + + /** + * 记录编码 + */ + String recordCode; + + + /** + * 申请人名称 + */ + String userName; + + String dataKey; + + String queryBizRegion; + String querySaleRegion; + + /** + * 接口版本 + * v1.原始接口 + * v2.添加评论拼接 + */ + String ver; +} diff --git a/src/main/java/com/qs/serve/modules/flow/model/SyAffairState.java b/src/main/java/com/qs/serve/modules/flow/model/SyAffairState.java new file mode 100644 index 0000000..3934e8a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/flow/model/SyAffairState.java @@ -0,0 +1,17 @@ +package com.qs.serve.modules.flow.model; + +/** + * @author YenHex + * @since 2023/5/23 + */ +public enum SyAffairState { + + //next(审批中)、backed(回退)、finished(完成)、refuse(拒绝)、error(错误)、none(不存在数据) + next, + backed, + finished, + refuse, + error, + none; + +} diff --git a/src/main/java/com/qs/serve/modules/flow/model/SyAffairStateResult.java b/src/main/java/com/qs/serve/modules/flow/model/SyAffairStateResult.java new file mode 100644 index 0000000..ecb750e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/flow/model/SyAffairStateResult.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.flow.model; + +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/flow/model/TbsAffairCommitBo.java b/src/main/java/com/qs/serve/modules/flow/model/TbsAffairCommitBo.java new file mode 100644 index 0000000..4acb4e5 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/flow/model/TbsAffairCommitBo.java @@ -0,0 +1,40 @@ +package com.qs.serve.modules.flow.model; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @author YenHex + * @since 2022/11/30 + */ +@Data +public class TbsAffairCommitBo { + + /** 新增所有审批业务使用该字段,作数据的目标ID */ + private String targetId; + + /** 状态:0-否定,1-同意,2-退回 */ + @NotNull + private Integer state; + + /** 流程节点id */ + @NotNull + private String affairId; + + /** 评论 */ + @Length(max = 800,message = "备注长度限制800字") + @NotNull + private String comment; + + /** 附件id */ + private String[] attachIds; + + /** 拓展参数 */ + private Map extendParams; + +} diff --git a/src/main/java/com/qs/serve/modules/flow/service/SeeYonOptionService.java b/src/main/java/com/qs/serve/modules/flow/service/SeeYonOptionService.java index f50f53f..abd63ae 100644 --- a/src/main/java/com/qs/serve/modules/flow/service/SeeYonOptionService.java +++ b/src/main/java/com/qs/serve/modules/flow/service/SeeYonOptionService.java @@ -1,5 +1,17 @@ package com.qs.serve.modules.flow.service; +import com.alibaba.fastjson.JSONObject; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.util.JsonUtil; +import com.qs.serve.common.util.SpringUtils; +import com.qs.serve.modules.flow.common.TbsSeeYonConst; +import com.qs.serve.modules.flow.model.CtpAffairQo; +import com.qs.serve.modules.flow.model.SyAffairState; +import com.qs.serve.modules.flow.model.SyAffairStateResult; +import com.qs.serve.modules.flow.model.TbsAffairCommitBo; +import com.qs.serve.modules.flow.service.impl.SeeYonServiceImpl; +import lombok.extern.slf4j.Slf4j; + /** * @author YenHex * @since 2024/9/19 @@ -8,4 +20,63 @@ public interface SeeYonOptionService { String loadTemplateCode(); + /** + * 发送请求获取状态 + * @param targetId + * @param templateCode + * @return + */ + default SyAffairStateResult checkAffairState(String targetId, String templateCode){ + CtpAffairQo param = new CtpAffairQo(); + param.setTargetId(targetId); + param.setTemplateCode(templateCode); + SeeYonServiceImpl seeYonService = new SeeYonServiceImpl(); + R result = seeYonService.postBase(TbsSeeYonConst.API_CHECK_AFFAIR,param,"补偿回调"); + 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(resultName)){ + return new SyAffairStateResult(resultAffairId,resultMemberId,resultTargetId,value); + } + } + } + return new SyAffairStateResult(null,null,null,SyAffairState.error); + }; + + + /** + * 执行的主要方法 + * @param targetId + * @return + */ + default R runCompensate(String targetId){ + String templateCode = loadTemplateCode(); + SyAffairStateResult stateResult = checkAffairState(targetId,templateCode); + SyAffairState affairState = stateResult.getState(); + if(affairState.equals(SyAffairState.next)){ + return R.ok(doNext(targetId,null)); + }else if(affairState.equals(SyAffairState.backed)){ + return R.ok(doBack(targetId,null)); + }else if(affairState.equals(SyAffairState.finished)){ + return R.ok(doFinish(targetId,null)); + }else if(affairState.equals(SyAffairState.refuse)){ + return R.ok(doRefuse(targetId,null)); + }else if(affairState.equals(SyAffairState.error)){ + return R.error("数据异常请联系管理员"); + }else{ + return R.error("OA无相关审批数据"); + } + } + + Object doNext(String targetId, TbsAffairCommitBo commit); + Object doBack(String targetId, TbsAffairCommitBo commit); + Object doFinish(String targetId, TbsAffairCommitBo commit); + Object doRefuse(String targetId, TbsAffairCommitBo commit); + + } diff --git a/src/main/java/com/qs/serve/modules/flow/service/impl/SeeYonServiceImpl.java b/src/main/java/com/qs/serve/modules/flow/service/impl/SeeYonServiceImpl.java index 880d08b..825e913 100644 --- a/src/main/java/com/qs/serve/modules/flow/service/impl/SeeYonServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/flow/service/impl/SeeYonServiceImpl.java @@ -24,9 +24,9 @@ import java.util.HashMap; public class SeeYonServiceImpl implements SeeYonService { @Value("${apis.host.seeyon}") - public static String baseUrl; + public String baseUrl; - private R postBase(String url, Object param, String title){ + public R postBase(String url, Object param, String title){ String token = SecureUtil.md5(LocalDate.now().getDayOfYear()+"000"+LocalDate.now().getYear()); HashMap headers = new HashMap<>(); headers.put("token",token); diff --git a/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java b/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java index 3f94064..9ed7493 100644 --- a/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java +++ b/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java @@ -116,9 +116,9 @@ public class VisitMainOuterApi { param.setSyFormId("test"); param.setSubmitTime(LocalDateTime.now()); param.setCheckState(VisitMainConst.CheckState_0); + visitMainService.updateById(param); - boolean result = visitMainService.updateById(param); - //visitMainService.submitOaFlow(param.getId()); + visitMainService.submitOaFlow(param.getId()); return R.ok(); } return R.error("用户角色暂不支持"); diff --git a/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java b/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java index fc65754..d0dfa8f 100644 --- a/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java +++ b/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java @@ -10,6 +10,7 @@ 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.visit.common.VisitMainConst; +import com.qs.serve.modules.visit.service.impl.VisitMainServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -32,7 +33,7 @@ import java.util.List; @RequestMapping("visit/main") public class VisitMainController { - private VisitMainService visitMainService; + private VisitMainServiceImpl visitMainService; private SysUserService sysUserService; /** @@ -45,6 +46,16 @@ public class VisitMainController { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); PageUtil.startPage(); List list = visitMainService.list(lqw); + for (VisitMain visit : list) { + // 仅审批中数据进行补偿 + if(visit.getCheckState().equals(VisitMainConst.CheckState_0)){ + try { + visitMainService.runCompensate(visit.getId()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } return R.byPageHelperList(list); } @@ -59,6 +70,12 @@ public class VisitMainController { lqw.eq(VisitMain::getUserId,AuthContextUtils.getSysUserId()); PageUtil.startPage(); List list = visitMainService.list(lqw); + for (VisitMain visit : list) { + // 仅审批中数据进行补偿 + if(visit.getCheckState().equals(VisitMainConst.CheckState_0)){ + visitMainService.runCompensate(visit.getId()); + } + } return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java b/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java index c8b9ada..b1e936c 100644 --- a/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java @@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.oa.BaseCreateCallbackBo; import com.qs.serve.common.model.oa.OaFormMainProcess; import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.flow.model.TbsAffairCommitBo; import com.qs.serve.modules.flow.service.SeeYonOptionService; import com.qs.serve.modules.flow.service.SeeYonService; import com.qs.serve.modules.visit.common.VisitMainConst; @@ -18,6 +19,7 @@ import com.qs.serve.modules.visit.entity.VisitMain; import com.qs.serve.modules.visit.service.VisitMainService; import com.qs.serve.modules.visit.mapper.VisitMainMapper; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; @@ -30,13 +32,13 @@ import java.util.Map; */ @Slf4j @Service -@AllArgsConstructor public class VisitMainServiceImpl extends ServiceImpl implements VisitMainService, SeeYonOptionService { - private final SeeYonService seeYonService; + @Resource + private SeeYonService seeYonService; - @Value("${project.flow-dev}") - private static Boolean flowDev; + @Value("${project.flowTest}") + private Boolean flowDev; @Override public String loadTemplateCode(){ @@ -48,7 +50,12 @@ public class VisitMainServiceImpl extends ServiceImpl String templateCode = loadTemplateCode(); VisitMain visitMain = this.getById(id); Map mainData = new HashMap<>(); - mainData.put("deptName",visitMain.getDeptName()); + + mainData.put("target_id",id); + mainData.put("target_code",visitMain.getVisitCode()); + mainData.put("template_code",templateCode); + mainData.put("rowState","03"); + mainData.put("userCode",visitMain.getUserCode()); mainData.put("userName",visitMain.getUserName()); mainData.put("preVisitDate",visitMain.getPreVisitDate()); @@ -93,5 +100,34 @@ public class VisitMainServiceImpl extends ServiceImpl seeYonService.createCallbackStatus(callbackBo); } + @Override + public Object doNext(String targetId, TbsAffairCommitBo commit) { + return null; + } + + @Override + public Object doBack(String targetId, TbsAffairCommitBo commit) { + VisitMain visitMain = this.getById(targetId); + visitMain.setCheckState(VisitMainConst.CheckState_3); + this.updateById(visitMain); + return null; + } + + @Override + public Object doFinish(String targetId, TbsAffairCommitBo commit) { + VisitMain visitMain = this.getById(targetId); + visitMain.setCheckState(VisitMainConst.CheckState_1); + this.updateById(visitMain); + return null; + } + + @Override + public Object doRefuse(String targetId, TbsAffairCommitBo commit) { + VisitMain visitMain = this.getById(targetId); + visitMain.setCheckState(VisitMainConst.CheckState_2); + this.updateById(visitMain); + return null; + } + }