From 59d42fbc079e1c7cc9190adeccc76e8b1c17f153 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 19 Sep 2023 16:39:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B4=B9=E7=94=A8=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/consts/ApplyTypeConst.java | 13 +++ .../controller/BmsApplyMessageController.java | 25 ++++- .../bms/entity/bo/BmsApplyMessageTestBo.java | 26 +++++ .../bms/service/BmsApplyMessageService.java | 5 + .../impl/BmsApplyMessageServiceImpl.java | 56 ++++++++++ .../goods/entity/GoodsCategoryRule.java | 4 + .../tbs/service/TbsCostApplyService.java | 10 ++ .../service/impl/TbsCostApplyServiceImpl.java | 31 +++++- .../vtb/service/VtbVerificationService.java | 23 ++++ .../impl/VtbVerificationServiceImpl.java | 104 +++++++++++------- 10 files changed, 255 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/qs/serve/common/model/consts/ApplyTypeConst.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/bo/BmsApplyMessageTestBo.java diff --git a/src/main/java/com/qs/serve/common/model/consts/ApplyTypeConst.java b/src/main/java/com/qs/serve/common/model/consts/ApplyTypeConst.java new file mode 100644 index 00000000..9a4a9584 --- /dev/null +++ b/src/main/java/com/qs/serve/common/model/consts/ApplyTypeConst.java @@ -0,0 +1,13 @@ +package com.qs.serve.common.model.consts; + +/** + * @author YenHex + * @since 2023/9/19 + */ +public interface ApplyTypeConst { + + String CostBill = "CostBill"; + String CheckCost = "CheckCost"; + String ReleasePolicy = "ReleasePolicy"; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java index 63222177..b03c87c4 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java @@ -2,13 +2,16 @@ package com.qs.serve.modules.bms.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.consts.ApplyTypeConst; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.dto.SimpleKeyValue; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.entity.bo.BmsApplyMessageTestBo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -18,6 +21,7 @@ import com.qs.serve.modules.bms.entity.BmsApplyMessage; import com.qs.serve.modules.bms.service.BmsApplyMessageService; import javax.validation.Valid; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,10 +45,13 @@ public class BmsApplyMessageController { */ @GetMapping("/option") public R option(){ - Map options = new HashMap<>(); - options.put("CostBill","费用申请"); - options.put("CheckCost","核销申请"); - options.put("ReleasePolicy","政策申请"); + List options = new ArrayList<>(); + SimpleKeyValue value1 = new SimpleKeyValue("费用申请",ApplyTypeConst.CostBill,""); + SimpleKeyValue value2 = new SimpleKeyValue("核销申请",ApplyTypeConst.CheckCost,""); + SimpleKeyValue value3 = new SimpleKeyValue("政策申请", ApplyTypeConst.ReleasePolicy,""); + options.add(value1); + options.add(value2); + options.add(value3); return R.ok(options); } @@ -110,5 +117,15 @@ public class BmsApplyMessageController { return R.isTrue(result); } + /** + * 获取执行js代码 + * @param param + * @return + */ + @PostMapping("getExecuteJsString") + public R getSeeYonData(@RequestBody @Valid BmsApplyMessageTestBo param){ + return R.ok(bmsApplyMessageService.getSeeYonData(param)); + } + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsApplyMessageTestBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsApplyMessageTestBo.java new file mode 100644 index 00000000..e8e89870 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsApplyMessageTestBo.java @@ -0,0 +1,26 @@ +package com.qs.serve.modules.bms.entity.bo; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author YenHex + * @since 2023/9/19 + */ +@Data +public class BmsApplyMessageTestBo { + + /** + * targetType=CostBill,targetId为费用申请 cost_apply_id + * targetType=CheckCost,targetId为活动 activity_id + */ + @NotNull + String targetId; + + @NotNull + String targetType; + + String testJsString; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsApplyMessageService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsApplyMessageService.java index 1d79a6ce..469804e7 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsApplyMessageService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsApplyMessageService.java @@ -2,6 +2,9 @@ package com.qs.serve.modules.bms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.bms.entity.BmsApplyMessage; +import com.qs.serve.modules.bms.entity.bo.BmsApplyMessageTestBo; + +import java.util.List; /** * 申请信息 服务接口 @@ -10,5 +13,7 @@ import com.qs.serve.modules.bms.entity.BmsApplyMessage; */ public interface BmsApplyMessageService extends IService { + List getSeeYonData(BmsApplyMessageTestBo param); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java index 7c3da579..4ef65a3b 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java @@ -1,6 +1,13 @@ package com.qs.serve.modules.bms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.model.consts.ApplyTypeConst; +import com.qs.serve.common.util.JsonUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.entity.bo.BmsApplyMessageTestBo; +import com.qs.serve.modules.tbs.service.TbsCostApplyService; +import com.qs.serve.modules.vtb.service.VtbVerificationService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -8,6 +15,10 @@ import com.qs.serve.modules.bms.entity.BmsApplyMessage; import com.qs.serve.modules.bms.service.BmsApplyMessageService; import com.qs.serve.modules.bms.mapper.BmsApplyMessageMapper; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * 申请信息 服务实现类 * @author YenHex @@ -18,5 +29,50 @@ import com.qs.serve.modules.bms.mapper.BmsApplyMessageMapper; @AllArgsConstructor public class BmsApplyMessageServiceImpl extends ServiceImpl implements BmsApplyMessageService { + private final TbsCostApplyService tbsCostApplyService; + private final VtbVerificationService vtbVerificationService; + + @Override + public List getSeeYonData(BmsApplyMessageTestBo param) { + Map seeyonData = null; + if(param.getTargetType().equals(ApplyTypeConst.CostBill)){ + seeyonData = tbsCostApplyService.getOAData(param.getTargetId()); + }else if (param.getTargetType().equals(ApplyTypeConst.CheckCost)){ + seeyonData = vtbVerificationService.buildSeeYonVerificationData(param.getTargetId()); + } + if(seeyonData==null){ + return new ArrayList<>(); + } + String jsonString = JsonUtil.objectToJson(seeyonData); + List result = new ArrayList<>(); + if(StringUtils.hasText(param.getTestJsString())){ + String js = "function checkCostRate (){" + + "\n var jsonStr = '"+jsonString+"';" + + "\n var data= JSON.parse(jsonStr);" + + "\n console.log('checkCostRate() data',data);" + + param.getTestJsString() + + "\n}"; + result.add(js); + }else { + LambdaQueryWrapper msgLqw = new LambdaQueryWrapper<>(); + msgLqw.eq(BmsApplyMessage::getType, param.getTargetType()); + msgLqw.eq(BmsApplyMessage::getEnableFlag,1); + List applyMessageList = new ArrayList<>(); + for (BmsApplyMessage applyMessage : applyMessageList) { + String js = "function checkCostRate (){" + + "\n var jsonStr = '"+jsonString+"';" + + "\n var data= JSON.parse(jsonStr);" + + "\n console.log('checkCostRate() data',data);" + + applyMessage.getExpress() + + "\n}"; + result.add(js); + } + } + return result; + } + + + + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java index ec45f1eb..ca0f323b 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java @@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; import lombok.Data; +import org.apache.ibatis.type.JdbcType; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; @@ -36,10 +38,12 @@ public class GoodsCategoryRule implements Serializable { /** 品牌id */ @NotBlank(message = "品牌id不能为空") + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) private String[] brandIds; /** 品牌名称 */ @NotBlank(message = "品牌名称不能为空") + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) private String[] brandNames; /** 启用状态 */ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java index 35678163..7296c336 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.bms.entity.BmsApplyMessage; import com.qs.serve.modules.tbs.entity.TbsCostApply; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 费用申请 服务接口 @@ -40,6 +42,14 @@ public interface TbsCostApplyService extends IService { */ void commitApply(String id); + + /** + * 获取致远data + * @param id + * @return + */ + Map getOAData(String id); + /** * 释放预算占用 * @param costApplyId diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 566415d9..0dcc97aa 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; +import com.qs.serve.common.model.consts.ApplyTypeConst; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.dto.R; @@ -24,6 +25,7 @@ import com.qs.serve.modules.bir.mapper.BirRoiRateMapper; import com.qs.serve.modules.bir.service.BirCenterRateService; import com.qs.serve.modules.bir.service.BirRoiRateService; import com.qs.serve.modules.bms.entity.*; +import com.qs.serve.modules.bms.mapper.BmsApplyMessageMapper; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierTargetMapper; @@ -218,6 +220,33 @@ public class TbsCostApplyServiceImpl extends ServiceImpl getOAData(String id) { + TbsCostApply tbsCostApply = this.getById(id); + LambdaQueryWrapper actLqw = new LambdaQueryWrapper<>(); + actLqw.eq(TbsActivity::getCostApplyId,id); + List activityList = tbsActivityMapper.selectList(actLqw); + BmsSupplier supplier = bmsSupplierService.getById(tbsCostApply.getSupplierId()); + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + List payConditions = null; + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + LambdaQueryWrapper contractLambdaQueryWrapper = new LambdaQueryWrapper<>(); + contractLambdaQueryWrapper.eq(TbsCostContract::getCostApplyId,id); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsActivityPayCondition::getCostApplyId,id); + payConditions = tbsActivityPayConditionMapper.selectList(lqw); + } + Map data = new HashMap<>(10); + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + //创建协议的费用申请Data + this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); + }else { + //创建通用的费用申请Data + this.buildCommonApplyData(id, tbsCostApply, activityList, supplier,sysUser, data); + } + return data; + } + @Override @Transactional(rollbackFor = Exception.class) public void commitApply(String id) { @@ -296,7 +325,6 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); // 匹配方式的result TbsBudgetCostResult result0 = null; TbsBudgetTableResultVo result1 = null; @@ -310,6 +338,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ //创建协议的费用申请Data this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java index 42e81164..0a49931e 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java @@ -2,6 +2,8 @@ package com.qs.serve.modules.vtb.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo; import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; @@ -9,6 +11,7 @@ import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; +import java.util.Map; /** * 核销 服务接口 @@ -48,6 +51,26 @@ public interface VtbVerificationService extends IService { */ void commit(VtbVerificationBo vtbVerificationBo); + /** + * 提交到致远审批流程的DATA + * @param activityId + * @return + */ + Map buildSeeYonVerificationData(String activityId); + + /** + * 提交到致远审批流程 + * @param activity + * @param sysUser + * @param verification + * @param saleRegionNames + * @param bizRegionNames + * @return + */ + Map buildSeeYonVerificationData(TbsActivity activity, SysUser sysUser, + VtbVerification verification, String saleRegionNames, + String bizRegionNames); + /** * 审核通过回调 * @param verificationId diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 12fce4c8..1a1a6dc6 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -754,25 +754,76 @@ public class VtbVerificationServiceImpl extends ServiceImpl data = buildSeeYonVerificationData(activity, sysUser, verification, saleRegionNames, bizRegionNames); + + BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); + createProcess.setTemplateCode(TbsSeeYonConst.CostCheckConf.Code()); + createProcess.setMemberLoginName(sysUser.getSyAccount()); + createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_VERIFICATION + verification.getRemark()); + createProcess.setTargetId(verification.getId()+""); + createProcess.setDataJson(JsonUtil.objectToJson(data)); + R flowIdResult = seeYonService.baseCreateProcess(createProcess); + if(flowIdResult.getStatus()!=200){ + Assert.throwEx("远程服务调用失败"); + } + String flowId = flowIdResult.getData(); + String formId = null; + R formIdResult = seeYonService.getFormId(TbsSeeYonConst.CostCheckConf.Code(),verification.getId()); + if(formIdResult.getStatus()==200){ + formId = formIdResult.getData(); + } + verification.setSyFlowId(flowId); + verification.setSyFormId(formId); + //创建流程后回调 + BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.CostCheckConf.Code(),verification.getId()+""); + seeYonService.createCallbackStatus(callbackBo); + } + + @Override + public Map buildSeeYonVerificationData(String activityId) { + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + + TbsActivity activity = activityService.getById(activityId); + BmsSupplier supplier = bmsSupplierService.getById(activity.getSupplierId()); + + String saleRegionId = supplier.handleSaleRegionId(); + BmsRegion saleRegion = regionMapper.selectById(saleRegionId); + String saleBizNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; + + String bizRegionId = supplier.handleBizRegionId(); + BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); + String bizBizNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + + VtbVerification temp = new VtbVerification(); + temp.setActivityId(activity.getId()); + temp.setSupplierName(supplier.getSupplierName()); + temp.setSupplierCode(supplier.getSupplierCode()); + //temp.setAmount(activity.get); + return buildSeeYonVerificationData(activity,sysUser,temp,saleBizNames,bizBizNames); + } + + @NotNull + @Override + public Map buildSeeYonVerificationData(TbsActivity activity, SysUser sysUser, VtbVerification verification, String saleRegionNames, String bizRegionNames) { Map data = new HashMap<>(20); - data.put("costApplyCode",verification.getVerificationCode()); - data.put("applyUserCode",sysUser.getCode()); - data.put("applyUserName",sysUser.getName()); - data.put("supplierName",verification.getSupplierName()); - data.put("supplierCode",verification.getSupplierCode()); - data.put("title",activity.getActTitle()); + data.put("costApplyCode", verification.getVerificationCode()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", verification.getSupplierName()); + data.put("supplierCode", verification.getSupplierCode()); + data.put("title", activity.getActTitle()); data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); data.put("rowState","03"); - data.put("orgId",verification.getId()); - data.put("targetId",verification.getId()); - data.put("targetCode",verification.getVerificationCode()); + data.put("orgId", verification.getId()); + data.put("targetId", verification.getId()); + data.put("targetCode", verification.getVerificationCode()); data.put("exsp1",TbsSeeYonConst.CostCheckConf.Code()); - data.put("jinE",verification.getAmount().toString()); - data.put("money",verification.getAmount().toString()); + data.put("jinE", verification.getAmount().toString()); + data.put("money", verification.getAmount().toString()); //读取费用申请时的费率 LambdaQueryWrapper costPercentLambdaQueryWrapper = new LambdaQueryWrapper<>(); - costPercentLambdaQueryWrapper.eq(TbsCostPercent::getCostApplyId,activity.getCostApplyId()); + costPercentLambdaQueryWrapper.eq(TbsCostPercent::getCostApplyId, activity.getCostApplyId()); List costPercentList = costPercentMapper.selectList(costPercentLambdaQueryWrapper); if(costPercentList.size()>0){ TbsCostPercent costPercent = costPercentList.get(0); @@ -789,13 +840,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl flowIdResult = seeYonService.baseCreateProcess(createProcess); - if(flowIdResult.getStatus()!=200){ - Assert.throwEx("远程服务调用失败"); - } - String flowId = flowIdResult.getData(); - String formId = null; - R formIdResult = seeYonService.getFormId(TbsSeeYonConst.CostCheckConf.Code(),verification.getId()); - if(formIdResult.getStatus()==200){ - formId = formIdResult.getData(); - } - verification.setSyFlowId(flowId); - verification.setSyFormId(formId); - //创建流程后回调 - BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.CostCheckConf.Code(),verification.getId()+""); - seeYonService.createCallbackStatus(callbackBo); + return data; }