Browse Source

feat: 搭赠OA对接(未对接表单)

master
Yen 1 month ago
parent
commit
b3fc55b9ef
  1. 1
      cms-common/src/main/java/com/qs/serve/common/enums/SystemModule.java
  2. 17
      cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/common/constants/OmsPromGitStatus.java
  3. 2
      cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/OmsPromotionGift.java
  4. 17
      cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/dto/PromotionGiftDTO.java
  5. 115
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftCheckController.java
  6. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftController.java
  7. 19
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/OmsPromotionGiftOptionsService.java
  8. 194
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsPromotionGiftOptionsServiceImpl.java
  9. 7
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

1
cms-common/src/main/java/com/qs/serve/common/enums/SystemModule.java

@ -22,6 +22,7 @@ public enum SystemModule {
GOODS("goods","商品"),
SYSTEM("sys","系统"),
UMS("ums","手机用户"),
ORDER("order","订单"),
DATA("data","数据"),
Excel("excel","excel数据"),
Tag("tag","标签"),

17
cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/common/constants/OmsPromGitStatus.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.oms.common.constants;
/**
* @author YenHex
* @since 2025/6/9
*/
public interface OmsPromGitStatus {
int STATUS_0_Save = 0;
int STATUS_1_Checking = 1;
int STATUS_2_Finished = 2;
int STATUS_3_Back = 3;
int STATUS_4_Stop = 4;
int STATUS_5_Abandon = 5;
int STATUS_6_Cancel = 6;
}

2
cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/OmsPromotionGift.java

@ -43,7 +43,7 @@ public class OmsPromotionGift implements Serializable {
@Length(max = 64,message = "通案编码长度不能超过64字")
private String giftCode;
/** 通案状态:状态:0-暂存;1-审批中;2-完成;3-驳回;4-中止;5-作废 */
/** 通案状态:状态:0-暂存;1-审批中;2-完成;3-驳回/退回;4-中止/拒绝;5-作废 */
@NotNull(message = "通案状态:状态:0-暂存;1-审批中;2-完成;3-驳回;4-中止;5-作废不能为空")
private Integer giftStatus;

17
cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/dto/PromotionGiftDTO.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.oms.entity.dto;
import lombok.Data;
import java.util.Map;
/**
* 搭赠通案DTO
* @author YenHex
* @since 2025/6/9
*/
@Data
public class PromotionGiftDTO {
Map<String, Object> mainTableData;
}

115
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftCheckController.java

@ -0,0 +1,115 @@
package com.qs.serve.modules.oms.controller;
import com.qs.serve.common.annotation.LimitSubmit;
import com.qs.serve.common.annotation.SysLog;
import com.qs.serve.common.enums.BizType;
import com.qs.serve.common.enums.SystemModule;
import com.qs.serve.framework.base.model.PageVo;
import com.qs.serve.framework.base.model.R;
import com.qs.serve.modules.oms.entity.OmsPromotionGift;
import com.qs.serve.modules.oms.service.OmsPromotionGiftOptionsService;
import com.qs.serve.modules.oms.service.OmsPromotionGiftService;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* 订单模块 搭赠方案(审批)
* @author YenHex
* @since 2025-06-05
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("oms/promotionGift/check")
public class OmsPromotionGiftCheckController {
private OmsPromotionGiftOptionsService omsPromotionGiftOptionsService;
private OmsPromotionGiftService omsPromotionGiftService;
/**
* 提交审批
* @param id 搭赠通案id
* @return
*/
@PostMapping("/submit/{id}")
@SysLog(module = SystemModule.ORDER, title = "搭赠提交", biz = BizType.SUBMIT)
public R<?> save(@PathVariable("id") String id){
omsPromotionGiftOptionsService.submit(id);
return R.ok();
}
/**
* 审批列表(用于详情页)
* @param targetId
* @return
*/
@GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageAffair(String targetId){
OmsPromotionGift entity = omsPromotionGiftService.getById(targetId);
return omsPromotionGiftOptionsService.pageAffairV2(targetId,entity.getGiftCode());
}
/**
* 审批列表(翻页)
* @param param
* @return
*/
@GetMapping("/pageMemberAffair")
public R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){
return omsPromotionGiftOptionsService.pageMemberAffair(param);
}
/**
* 提交审批节点
* @return
*/
@LimitSubmit
@PostMapping("/commitAffair")
@SysLog(module = SystemModule.ORDER, title = "搭赠审批", biz = BizType.SUBMIT)
@PreAuthorize("hasRole('tbs:costApply:commit')")
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
return omsPromotionGiftOptionsService.commitAffair(affairCommit);
}
/**
* 加签
* @param param
* @return
*/
@PostMapping("/addNode")
@SysLog(module = SystemModule.ORDER, title = "搭赠加签", biz = BizType.SUBMIT)
public R<String> addNode(@RequestBody CtpAddNodeParam param){
return omsPromotionGiftOptionsService.addNode(param);
}
/**
* 获取未完成审批统计(个人)
* @return
*/
@PostMapping("/getAffairUnfinished")
public R<Long> getUnfinished(){
return omsPromotionGiftOptionsService.getUnfinished();
}
/**
* 补偿按钮
* @param id
* @return
*/
@PostMapping("/compensate/{id}")
public R<?> compensate(@PathVariable("id") String id){
return omsPromotionGiftOptionsService.runCompensate(id);
}
}

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftController.java

@ -56,8 +56,6 @@ public class OmsPromotionGiftController {
return R.ok(omsPromotionGift);
}
/**
* 更新
* @param param

19
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/OmsPromotionGiftOptionsService.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.oms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.oms.entity.OmsPromotionGift;
import com.qs.serve.modules.oms.entity.bo.OmsPromotionGiftBo;
import com.qs.serve.modules.seeyon.service.SeeYonBaseService;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
/**
* 搭赠方案 服务接口
* @author YenHex
* @date 2025-06-05
*/
public interface OmsPromotionGiftOptionsService extends SeeYonOperationService {
Object submit(String giftId);
}

194
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsPromotionGiftOptionsServiceImpl.java

@ -0,0 +1,194 @@
package com.qs.serve.modules.oms.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.qs.serve.common.exception.Assert;
import com.qs.serve.framework.base.model.R;
import com.qs.serve.framework.base.model.oa.OaFormMainProcess;
import com.qs.serve.framework.base.util.DateUtils;
import com.qs.serve.framework.base.util.model.DateFormatString;
import com.qs.serve.modules.oms.common.OmsOrderCheckState;
import com.qs.serve.modules.oms.common.constants.OmsPromGitStatus;
import com.qs.serve.modules.oms.entity.OmsPromotionGift;
import com.qs.serve.modules.oms.entity.dto.PromotionGiftDTO;
import com.qs.serve.modules.oms.service.OmsPromotionGiftOptionsService;
import com.qs.serve.modules.oms.service.OmsPromotionGiftService;
import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.common.AuthContextUtils;
import com.qs.serve.modules.sys.entity.SysUser;
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.entity.bo.TbsAffairCommitBo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author YenHex
* @since 2025/6/6
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class OmsPromotionGiftOptionsServiceImpl implements OmsPromotionGiftOptionsService {
private final SysUserService sysUserService;
private OmsPromotionGiftService omsPromotionGiftService;
private final SeeYonRequestService seeYonService;
private final SeeYonRequestBaseService seeYonRequestBaseService;
@Override
public Object submit(String giftId) {
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId);
String templateCode = this.getTemplateCode();
String mainTableCode = "formmain_2206";
PromotionGiftDTO promotionGiftDTO = validAndBuildDTO(giftId,sysUser);
Map<String, Object> mainTableData = promotionGiftDTO.getMainTableData();
Map<String, Object> newWayData = new HashMap<>();
newWayData.put(mainTableCode,mainTableData);
OaFormMainProcess mainProcess = new OaFormMainProcess();
mainProcess.setTargetId(giftId);
mainProcess.setUploadFiles(new ArrayList<>());
mainProcess.setTableName(mainTableCode);
mainProcess.setData(newWayData);
mainProcess.setTemplateCode(templateCode);
mainProcess.setUserId(sysUser.getId());
mainProcess.setSenderLoginName(sysUser.getAccount());
R flowIdResult = seeYonService.newCreateProcess(mainProcess);
if(flowIdResult==null||flowIdResult.getStatus()!=200){
assert flowIdResult != null;
Assert.throwEx("远程服务调用失败:"+flowIdResult.getMsg());
}
if(flowIdResult.getMsg()!=null && flowIdResult.getMsg().length()>45){
log.error(flowIdResult.getMsg());
JSONObject object = JSON.parseObject(flowIdResult.getMsg());
if(!object.get("code").toString().equals("0")){
Assert.throwEx("流程发起被拦截了");
}
}
String formId = null;
R<String> formIdResult = seeYonService.getFormId(templateCode,Long.parseLong(giftId));
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
// 更新主表专题
OmsPromotionGift uploadStatusEntity = new OmsPromotionGift();
uploadStatusEntity.setSyFormId(formId);
uploadStatusEntity.setGiftStatus(OmsPromGitStatus.STATUS_1_Checking);
uploadStatusEntity.setSubmitTime(LocalDateTime.now());
omsPromotionGiftService.updateById(uploadStatusEntity);
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,giftId);
seeYonService.createCallbackStatus(callbackBo);
return null;
}
public PromotionGiftDTO validAndBuildDTO(String mainId, SysUser sysUser){
Map<String, Object> data = new HashMap<>();
// data.put("orgId", omsOrder.getId());
// data.put("targetId", omsOrder.getId());
// data.put("targetCode", omsOrder.getOrderSn());
// data.put("applyUserCode", sysUser.getCode());
// data.put("applyUserName", sysUser.getName());
// data.put("supplierName", supplier.getName());
// data.put("supplierCode", supplier.getCode());
// data.put("exsp1", templateCode);
// data.put("exsp2", bizBizNames);
// data.put("exsp3", saleBizNames);
// // title
// data.put("exsp4", "临期订单-"+omsOrder.getOrderSn());
// //添加跳转地址业务
// String baseJumpUrl = "https://shop.gdjsl.com/pcOrder/#/";
// data.put("cmsLink",baseJumpUrl);
// data.put("rowDate", DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
// data.put("rowState","00");
// data.put("ext1", omsOrder.getOaRateId());
return null;
}
@Override
public String getTemplateCode() {
return TbsSeeYonConst.GitApplyConf.Code();
}
@Override
public boolean checkSyFormIdIsNotNull(String targetId) {
OmsPromotionGift entity = omsPromotionGiftService.getById(targetId);
if(entity!=null&&entity.getSyFormId()!=null){
return true;
}
return false;
}
@Override
public void doCommitBacked(String targetId) {
}
@Override
public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) {
OmsPromotionGift entity = omsPromotionGiftService.getById(affairCommit.getTargetId());
if(entity!=null&&entity.getSyFormId()!=null){
if (!entity.getGiftStatus().equals(OmsPromGitStatus.STATUS_0_Save)
&&!entity.getGiftStatus().equals(OmsPromGitStatus.STATUS_3_Back)){
Assert.throwEx("单据状态已更新,请刷新当前页面");
}
return entity.getSyFormId();
}
return null;
}
@Override
public Object doBacked(TbsAffairCommitBo param) {
if (param.getTargetId()==null){
omsPromotionGiftService.update(new LambdaUpdateWrapper<OmsPromotionGift>()
.eq(OmsPromotionGift::getId,param.getTargetId())
.set(OmsPromotionGift::getGiftStatus, OmsPromGitStatus.STATUS_3_Back)
);
}
return null;
}
@Override
public Object doFinished(TbsAffairCommitBo param) {
if (param.getTargetId()==null){
omsPromotionGiftService.update(new LambdaUpdateWrapper<OmsPromotionGift>()
.eq(OmsPromotionGift::getId,param.getTargetId())
.set(OmsPromotionGift::getGiftStatus,OmsPromGitStatus.STATUS_2_Finished)
);
}
return null;
}
@Override
public Object doRefuse(TbsAffairCommitBo param) {
if (param.getTargetId()==null){
omsPromotionGiftService.update(new LambdaUpdateWrapper<OmsPromotionGift>()
.eq(OmsPromotionGift::getId,param.getTargetId())
.set(OmsPromotionGift::getGiftStatus,OmsPromGitStatus.STATUS_4_Stop)
);
}
return null;
}
}

7
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -82,6 +82,13 @@ public interface TbsSeeYonConst {
}
}
/** 搭赠通案 */
class GitApplyConf{
public static String Code(){
return DevEnvironmentConfig.isDev()?"budgetBatch_Test":"budgetBatch";
}
}
String API_TEST = "/testConnection";
String API_PROCESS_CREATE = "/process/create";
String API_CONTRACT_RELEASE_CANCEL = "/process/cancelReleaseContractApply";

Loading…
Cancel
Save