Browse Source

添加费用申请提示

v1.0
Yen 2 years ago
parent
commit
59d42fbc07
  1. 13
      src/main/java/com/qs/serve/common/model/consts/ApplyTypeConst.java
  2. 25
      src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java
  3. 26
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsApplyMessageTestBo.java
  4. 5
      src/main/java/com/qs/serve/modules/bms/service/BmsApplyMessageService.java
  5. 56
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java
  6. 4
      src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java
  7. 10
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java
  8. 31
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  9. 23
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  10. 104
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

13
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";
}

25
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<String,String> options = new HashMap<>();
options.put("CostBill","费用申请");
options.put("CheckCost","核销申请");
options.put("ReleasePolicy","政策申请");
List<SimpleKeyValue> 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));
}
}

26
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;
}

5
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<BmsApplyMessage> {
List<String> getSeeYonData(BmsApplyMessageTestBo param);
}

56
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<BmsApplyMessageMapper,BmsApplyMessage> implements BmsApplyMessageService {
private final TbsCostApplyService tbsCostApplyService;
private final VtbVerificationService vtbVerificationService;
@Override
public List<String> getSeeYonData(BmsApplyMessageTestBo param) {
Map<String, Object> 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<String> 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<BmsApplyMessage> msgLqw = new LambdaQueryWrapper<>();
msgLqw.eq(BmsApplyMessage::getType, param.getTargetType());
msgLqw.eq(BmsApplyMessage::getEnableFlag,1);
List<BmsApplyMessage> 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;
}
}

4
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;
/** 启用状态 */

10
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<TbsCostApply> {
*/
void commitApply(String id);
/**
* 获取致远data
* @param id
* @return
*/
Map<String, Object> getOAData(String id);
/**
* 释放预算占用
* @param costApplyId

31
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<TbsCostApplyMapper,TbsC
return result;
}
@Override
public Map<String, Object> getOAData(String id) {
TbsCostApply tbsCostApply = this.getById(id);
LambdaQueryWrapper<TbsActivity> actLqw = new LambdaQueryWrapper<>();
actLqw.eq(TbsActivity::getCostApplyId,id);
List<TbsActivity> activityList = tbsActivityMapper.selectList(actLqw);
BmsSupplier supplier = bmsSupplierService.getById(tbsCostApply.getSupplierId());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
List<TbsActivityPayCondition> payConditions = null;
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){
LambdaQueryWrapper<TbsCostContract> contractLambdaQueryWrapper = new LambdaQueryWrapper<>();
contractLambdaQueryWrapper.eq(TbsCostContract::getCostApplyId,id);
LambdaQueryWrapper<TbsActivityPayCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsActivityPayCondition::getCostApplyId,id);
payConditions = tbsActivityPayConditionMapper.selectList(lqw);
}
Map<String, Object> 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<TbsCostApplyMapper,TbsC
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
Map<String, Object> data = new HashMap<>(10);
// 匹配方式的result
TbsBudgetCostResult result0 = null;
TbsBudgetTableResultVo result1 = null;
@ -310,6 +338,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
}
//恢复绑定
this.releaseCost(tbsCostApply.getId(),0);
Map<String, Object> data = new HashMap<>(10);
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){
//创建协议的费用申请Data
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data);

23
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<VtbVerification> {
*/
void commit(VtbVerificationBo vtbVerificationBo);
/**
* 提交到致远审批流程的DATA
* @param activityId
* @return
*/
Map<String, Object> buildSeeYonVerificationData(String activityId);
/**
* 提交到致远审批流程
* @param activity
* @param sysUser
* @param verification
* @param saleRegionNames
* @param bizRegionNames
* @return
*/
Map<String, Object> buildSeeYonVerificationData(TbsActivity activity, SysUser sysUser,
VtbVerification verification, String saleRegionNames,
String bizRegionNames);
/**
* 审核通过回调
* @param verificationId

104
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -754,25 +754,76 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
* @param bizRegionNames
*/
private void commitSy(TbsActivity activity,SysUser sysUser,VtbVerification verification,String saleRegionNames,String bizRegionNames){
Map<String, Object> 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<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String flowId = flowIdResult.getData();
String formId = null;
R<String> 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<String, Object> 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<String, Object> buildSeeYonVerificationData(TbsActivity activity, SysUser sysUser, VtbVerification verification, String saleRegionNames, String bizRegionNames) {
Map<String, Object> 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<TbsCostPercent> costPercentLambdaQueryWrapper = new LambdaQueryWrapper<>();
costPercentLambdaQueryWrapper.eq(TbsCostPercent::getCostApplyId,activity.getCostApplyId());
costPercentLambdaQueryWrapper.eq(TbsCostPercent::getCostApplyId, activity.getCostApplyId());
List<TbsCostPercent> costPercentList = costPercentMapper.selectList(costPercentLambdaQueryWrapper);
if(costPercentList.size()>0){
TbsCostPercent costPercent = costPercentList.get(0);
@ -789,13 +840,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}
//拓展添加审批关联
data.put("biz_region",bizRegionNames);
data.put("exsp2",saleRegionNames);
data.put("biz_region", bizRegionNames);
data.put("exsp2", saleRegionNames);
data.put("data_state",TbsActivityState.STATE_1_Checking);
//添加跳转地址业务
String urlKey = "exsp5";
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),TbsSeeYonConst.CostCheckConf.Code(),verification.getId()+"");
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),TbsSeeYonConst.CostCheckConf.Code(), verification.getId()+"");
data.put("exsp5",urlKey);
data.put("cmsLink",baseJumpUrl);
@ -810,28 +861,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
e.printStackTrace();
}
data.put("sub",subList);
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<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String flowId = flowIdResult.getData();
String formId = null;
R<String> 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;
}

Loading…
Cancel
Save