Browse Source

预算修改的申请审批

v1.0
Yen 2 years ago
parent
commit
6524dd9344
  1. 2
      src/main/java/com/qs/serve/modules/data/entity/DataAffairCommit.java
  2. 2
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  3. 7
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  4. 1
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  5. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java
  6. 20
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java
  7. 6
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java
  8. 6
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java
  9. 122
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  10. 13
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  11. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  12. 2
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

2
src/main/java/com/qs/serve/modules/data/entity/DataAffairCommit.java

@ -24,7 +24,7 @@ import javax.validation.constraints.NotBlank;
* @since 2023-08-07
*/
@Data
@TableName("data_affair_commit")
@TableName(value = "data_affair_commit",autoResultMap = true)
public class DataAffairCommit implements Serializable {
private static final long serialVersionUID = 1L;

2
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java

@ -171,7 +171,7 @@ public interface SeeYonOperationService extends SeeYonBaseService{
for (DataAffairCommit affairCommit : affairCommits) {
if(affairCommit.getId().equals(ctpAffair.getAffairId())){
ctpAffairVo.setCommitInfo(affairCommit);
if(CollectionUtil.isNotEmpty(affairCommit.getAttachIds())){
if(affairCommit.getAttachIds()!=null&&affairCommit.getAttachIds().length>0){
ctpAffairVo.setAttachments(
sysAttachMapper.selectBatchIds(
Arrays.asList(affairCommit.getAttachIds())));

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

@ -45,6 +45,13 @@ public interface TbsSeeYonConst {
}
}
class BudgetChangeConf{
public static String Code(){
return DevEnvironmentConfig.isDev()?"budgetAdjust":"budgetAdjust_Test";
}
}
String API_TEST = "/testConnection";
String API_PROCESS_CREATE = "/process/create";
String API_PROCESS_CREATE_CALLBACK = "/process/createCallback";

1
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -333,6 +333,7 @@ public class TbsCostApplyController {
entity.setCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply));
entity.setTemplateId(param.getTemplateId());
entity.setTemplateTitle(param.getTemplateTitle());
entity.setMatchType(1);
activityBo.setTemplateId(param.getTemplateId());
activityBo.setTemplateTitle(param.getTemplateTitle());
entity.setSupplierCode(supplier.getCode());

3
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java

@ -97,6 +97,9 @@ public class TbsBudgetChange implements Serializable {
@Length(max = 30,message = "考核期名称长度不能超过30字")
private String scheduleName;
/** 致远表单id */
private String syFormId;
/** 提交审批时间 */
@Length(max = 0,message = "提交审批时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

20
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java

@ -113,10 +113,10 @@ public class TbsBudgetChangeScheduleItem implements Serializable {
private String delFlag;
public static TbsBudgetChangeScheduleItem toNewObject(TbsBudgetChangeScheduleItem source){
public static TbsBudgetChangeScheduleItem toNewObject(TbsScheduleItemBudget source){
TbsBudgetChangeScheduleItem budgetChangeScheduleItem = new TbsBudgetChangeScheduleItem();
budgetChangeScheduleItem.setId(source.getId());
budgetChangeScheduleItem.setChangeId(source.getChangeId());
//budgetChangeScheduleItem.setChangeId(source.getChangeId());
budgetChangeScheduleItem.setScheduleId(source.getScheduleId());
budgetChangeScheduleItem.setScheduleItemId(source.getScheduleItemId());
budgetChangeScheduleItem.setItemName(source.getItemName());
@ -125,15 +125,15 @@ public class TbsBudgetChangeScheduleItem implements Serializable {
budgetChangeScheduleItem.setBudgetId(source.getBudgetId());
budgetChangeScheduleItem.setBudgetAmount(source.getBudgetAmount());
budgetChangeScheduleItem.setPreDispatchAmount(source.getPreDispatchAmount());
budgetChangeScheduleItem.setNewBudgetAmount(source.getNewBudgetAmount());
budgetChangeScheduleItem.setNewPreDispatchAmount(source.getNewPreDispatchAmount());
// budgetChangeScheduleItem.setNewBudgetAmount(source.getNewBudgetAmount());
// budgetChangeScheduleItem.setNewPreDispatchAmount(source.getNewPreDispatchAmount());
budgetChangeScheduleItem.setRemark(source.getRemark());
budgetChangeScheduleItem.setCreateTime(source.getCreateTime());
budgetChangeScheduleItem.setUpdateTime(source.getUpdateTime());
budgetChangeScheduleItem.setTenantId(source.getTenantId());
budgetChangeScheduleItem.setCreateBy(source.getCreateBy());
budgetChangeScheduleItem.setUpdateBy(source.getUpdateBy());
budgetChangeScheduleItem.setDelFlag(source.getDelFlag());
// budgetChangeScheduleItem.setCreateTime(source.getCreateTime());
// budgetChangeScheduleItem.setUpdateTime(source.getUpdateTime());
// budgetChangeScheduleItem.setTenantId(source.getTenantId());
// budgetChangeScheduleItem.setCreateBy(source.getCreateBy());
// budgetChangeScheduleItem.setUpdateBy(source.getUpdateBy());
// budgetChangeScheduleItem.setDelFlag(source.getDelFlag());
return budgetChangeScheduleItem;
}

6
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java

@ -2,6 +2,8 @@ package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/8/8
@ -11,8 +13,8 @@ public class TbsBudgetAmtBo {
private Long budgetScheduleItemId;
private Integer preDispatchAmount;
private BigDecimal preDispatchAmount;
private Integer budgetAmount;
private BigDecimal budgetAmount;
}

6
src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java

@ -145,7 +145,11 @@ public interface TbsScheduleItemBudgetMapper extends BaseMapper<TbsScheduleItemB
Long findUnMatchScheduleItemBySourceBudgetIdAndTargetBudgetId(@Param("sourceId")Long sourceId, @Param("targetId")Long targetId);
/**
* 统计设置金额
* @param ids
* @return
*/
List<TbsBudgetLogWithAmount> getAllByScheduleItemIdList(@Param("selectIds") List<Long> ids);
}

122
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -1,22 +1,35 @@
package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.CodeGenUtil;
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.dto.R;
import com.qs.serve.common.util.*;
import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo;
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.util.TbsBudgetConditionUtil;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsBudgetChangeCondition;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetAmtBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeConditionMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount;
import com.qs.serve.modules.tbs.mapper.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.tbs.entity.TbsBudgetChange;
import com.qs.serve.modules.tbs.service.TbsBudgetChangeService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeMapper;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -31,13 +44,71 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
private final TbsBudgetMapper tbsBudgetMapper;
private final TbsBudgetChangeConditionMapper tbsBudgetChangeConditionMapper;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsBudgetChangeScheduleItemMapper tbsBudgetChangeScheduleItemMapper;
private final SysUserService sysUserService;
private final SeeYonRequestService seeYonService;
private final ProjectProperties projectProperties;
@Override
public void commitApply(TbsBudgetUpdateAfterStartBo param) {
seeYonService.testConnection();
TbsBudget budget = tbsBudgetMapper.selectById(param.getId());
TbsBudgetChange budgetChange = buildBudgetChange(param, budget);
String templateCode = TbsSeeYonConst.BudgetChangeConf.Code();
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
Map<String,Object> data = new HashMap<>();
data.put("exsp5", budgetChange.getChangeCode());
data.put("orgId", budgetChange.getId().toString());
data.put("applyUserCode", sysUser.getCode());
data.put("applyUserName", sysUser.getName());
data.put("targetId", budgetChange.getId()+"");
data.put("targetCode", budgetChange.getChangeCode());
data.put("exsp1", templateCode);
//添加跳转地址业务
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),templateCode,budgetChange.getId()+"");
data.put("cmsLink",baseJumpUrl);
data.put("rowDate", DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
data.put("rowState","03");
BaseCreateProcessBo createProcess = new BaseCreateProcessBo();
createProcess.setTemplateCode(templateCode);
createProcess.setMemberLoginName(sysUser.getSyAccount());
createProcess.setSubjectTitle("[预算修改]"+budgetChange.getBudgetTitle()+"("+budgetChange.getBudgetNumber()+")");
createProcess.setTargetId(budgetChange.getId()+"");
createProcess.setDataJson(JsonUtil.objectToJson(data));
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String formId = null;
R<String> formIdResult = seeYonService.getFormId(templateCode,budgetChange.getId());
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
budgetChange.setSubmitTime(LocalDateTime.now());
budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
budgetChange.setSyFormId(formId);
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,budgetChange.getId()+"");
seeYonService.createCallbackStatus(callbackBo);
//请求校验是否成功
AsyncManager.me().execute(AsyncFactory.submitBudgetApply(budgetChange.getId()+""));
}
/**
* 创建更变记录
* @param param
* @param budget
* @return
*/
private TbsBudgetChange buildBudgetChange(TbsBudgetUpdateAfterStartBo param, TbsBudget budget) {
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget);
budgetChange.setChangeCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetChange));
boolean notChangeTitle = param.getBudgetCode()!=null&&param.getBudgetCode().equals(budget.getBudgetCode());
boolean notChangeTitle = param.getBudgetCode()!=null&& param.getBudgetCode().equals(budget.getBudgetCode());
if(!notChangeTitle){
budgetChange.setNewBudgetTitle(param.getBudgetCode());
}
@ -45,7 +116,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
Long changeId = budgetChange.getId();
//设置条件
List<TbsBudgetCondition> budgetConditionList = TbsBudgetConditionUtil.buildCondition(
budget.getId(),param.getBrandIds(),param.getCategoryIds(),param.getSeriesIds(),param.getSpuIds(),param.getSkuIds());
budget.getId(), param.getBrandIds(), param.getCategoryIds(), param.getSeriesIds(), param.getSpuIds(), param.getSkuIds());
List<TbsBudgetChangeCondition> changeConditionList = budgetConditionList.stream().map(cond->{
TbsBudgetChangeCondition changeCondition = TbsBudgetChangeCondition.toNewObject(cond);
changeCondition.setChangeId(changeId);
@ -55,7 +126,38 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
tbsBudgetChangeConditionMapper.insert(changeCondition);
}
//设置金额
List<TbsBudgetAmtBo> budgetAmtUpdateList = param.getBudgetAmtUpdateList();
if(CollectionUtil.isNotEmpty(budgetAmtUpdateList)){
List<Long> budgetScheduleIds = budgetAmtUpdateList.stream().map(TbsBudgetAmtBo::getBudgetScheduleItemId).collect(Collectors.toList());
List<TbsBudgetLogWithAmount> budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getAllByScheduleItemIdList(budgetScheduleIds);
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectBatchIds(budgetScheduleIds);
List<TbsBudgetChangeScheduleItem> changeScheduleItemList = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgetList) {
TbsBudgetChangeScheduleItem resultItem = TbsBudgetChangeScheduleItem.toNewObject(scheduleItemBudget);
resultItem.setChangeId(changeId);
//设置当前项调整的最终金额
for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) {
if(withAmount.getId().equals(scheduleItemBudget.getScheduleItemId())){
resultItem.setBudgetAmount(withAmount.getAmt());
break;
}
}
//设置更新的金额
for (TbsBudgetAmtBo budgetAmtBo : budgetAmtUpdateList) {
if(budgetAmtBo.getBudgetScheduleItemId().equals(scheduleItemBudget.getId())){
resultItem.setNewPreDispatchAmount(budgetAmtBo.getPreDispatchAmount());
resultItem.setNewBudgetAmount(budgetAmtBo.getBudgetAmount());
break;
}
}
changeScheduleItemList.add(resultItem);
}
for (TbsBudgetChangeScheduleItem item : changeScheduleItemList) {
tbsBudgetChangeScheduleItemMapper.insert(item);
}
}
return budgetChange;
}
}

13
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -19,6 +19,7 @@ import com.qs.serve.modules.goods.entity.dto.TbsCenterDto;
import com.qs.serve.modules.goods.service.GoodsCategoryService;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo;
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysAttach;
@ -92,6 +93,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
@Override
public void commitApply(Long id) {
seeYonService.testConnection();
String templateCode = TbsSeeYonConst.BudgetApplyConf.Code();
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsBudget tbsBudget = this.getById(id);
Map<String,Object> data = new HashMap<>();
@ -101,15 +103,12 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
data.put("applyUserName", sysUser.getName());
data.put("targetId", tbsBudget.getId()+"");
data.put("targetCode", tbsBudget.getBudgetNumber());
data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code());
data.put("exsp1",templateCode);
//添加跳转地址业务
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),TbsSeeYonConst.CostApplyConf.Code(),id+"");
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),templateCode,id+"");
data.put("cmsLink",baseJumpUrl);
data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
data.put("rowState","03");
String templateCode = TbsSeeYonConst.BudgetApplyConf.Code();
BaseCreateProcessBo createProcess = new BaseCreateProcessBo();
createProcess.setTemplateCode(templateCode);
createProcess.setMemberLoginName(sysUser.getSyAccount());
@ -130,6 +129,10 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
tbsBudget.setSyFormId(formId);
this.updateById(tbsBudget);
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,tbsBudget.getId()+"");
seeYonService.createCallbackStatus(callbackBo);
//请求校验是否成功
AsyncManager.me().execute(AsyncFactory.submitBudgetApply(tbsBudget.getId()+""));

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -189,7 +189,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
for (DataAffairCommit affairCommit : affairCommits) {
if(affairCommit.getId().equals(ctpAffair.getAffairId())){
ctpAffairVo.setCommitInfo(affairCommit);
if(CollectionUtil.isNotEmpty(affairCommit.getAttachIds())){
if(affairCommit.getAttachIds()!=null&&affairCommit.getAttachIds().length>0){
ctpAffairVo.setAttachments(
sysAttachMapper.selectBatchIds(
Arrays.asList(affairCommit.getAttachIds())));

2
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -436,7 +436,7 @@ public class VtbVerificationApplication {
for (DataAffairCommit affairCommit : affairCommits) {
if(affairCommit.getId().equals(ctpAffair.getAffairId())){
ctpAffairVo.setCommitInfo(affairCommit);
if(CollectionUtil.isNotEmpty(affairCommit.getAttachIds())){
if(affairCommit.getAttachIds()!=null&&affairCommit.getAttachIds().length>0){
ctpAffairVo.setAttachments(
sysAttachMapper.selectBatchIds(
Arrays.asList(affairCommit.getAttachIds())));

Loading…
Cancel
Save