diff --git a/cms-common/src/main/java/com/qs/serve/common/enums/SystemModule.java b/cms-common/src/main/java/com/qs/serve/common/enums/SystemModule.java index 82e0184..4cf880f 100644 --- a/cms-common/src/main/java/com/qs/serve/common/enums/SystemModule.java +++ b/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","标签"), diff --git a/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/common/constants/OmsPromGitStatus.java b/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/common/constants/OmsPromGitStatus.java new file mode 100644 index 0000000..f8d8ce8 --- /dev/null +++ b/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; + +} diff --git a/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/OmsPromotionGift.java b/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/OmsPromotionGift.java index 785d903..25efbc6 100644 --- a/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/OmsPromotionGift.java +++ b/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; diff --git a/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/dto/PromotionGiftDTO.java b/cms-modules/cms-order/cms-order-api/src/main/java/com/qs/serve/modules/oms/entity/dto/PromotionGiftDTO.java new file mode 100644 index 0000000..445c857 --- /dev/null +++ b/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 mainTableData; + +} diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftCheckController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftCheckController.java new file mode 100644 index 0000000..6c0b6ec --- /dev/null +++ b/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> pageAffair(String targetId){ + OmsPromotionGift entity = omsPromotionGiftService.getById(targetId); + return omsPromotionGiftOptionsService.pageAffairV2(targetId,entity.getGiftCode()); + } + + /** + * 审批列表(翻页) + * @param param + * @return + */ + @GetMapping("/pageMemberAffair") + public R> 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 addNode(@RequestBody CtpAddNodeParam param){ + return omsPromotionGiftOptionsService.addNode(param); + } + + + /** + * 获取未完成审批统计(个人) + * @return + */ + @PostMapping("/getAffairUnfinished") + public R getUnfinished(){ + return omsPromotionGiftOptionsService.getUnfinished(); + } + + /** + * 补偿按钮 + * @param id + * @return + */ + @PostMapping("/compensate/{id}") + public R compensate(@PathVariable("id") String id){ + return omsPromotionGiftOptionsService.runCompensate(id); + } + +} + diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftController.java index 1f1081f..1c1a088 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsPromotionGiftController.java +++ b/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 diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/OmsPromotionGiftOptionsService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/OmsPromotionGiftOptionsService.java new file mode 100644 index 0000000..973501f --- /dev/null +++ b/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); + +} + diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsPromotionGiftOptionsServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsPromotionGiftOptionsServiceImpl.java new file mode 100644 index 0000000..e84098b --- /dev/null +++ b/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 mainTableData = promotionGiftDTO.getMainTableData(); + + Map 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 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 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() + .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() + .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() + .eq(OmsPromotionGift::getId,param.getTargetId()) + .set(OmsPromotionGift::getGiftStatus,OmsPromGitStatus.STATUS_4_Stop) + ); + } + return null; + } + +} diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index 91e2782..9e71d32 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/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";