From 6524dd93444bd0023c1a0c379cb0f7d49f6c6509 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 9 Aug 2023 15:43:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=AE=97=E4=BF=AE=E6=94=B9=E7=9A=84?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/data/entity/DataAffairCommit.java | 2 +- .../service/SeeYonOperationService.java | 2 +- .../modules/tbs/common/TbsSeeYonConst.java | 7 + .../controller/TbsCostApplyController.java | 1 + .../modules/tbs/entity/TbsBudgetChange.java | 3 + .../entity/TbsBudgetChangeScheduleItem.java | 20 +-- .../modules/tbs/entity/bo/TbsBudgetAmtBo.java | 6 +- .../mapper/TbsScheduleItemBudgetMapper.java | 6 +- .../impl/TbsBudgetChangeServiceImpl.java | 122 ++++++++++++++++-- .../service/impl/TbsBudgetServiceImpl.java | 13 +- .../TbsCostApplyOperationServiceImpl.java | 2 +- .../service/VtbVerificationApplication.java | 2 +- 12 files changed, 154 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/data/entity/DataAffairCommit.java b/src/main/java/com/qs/serve/modules/data/entity/DataAffairCommit.java index 6deb7cab..bffcf08d 100644 --- a/src/main/java/com/qs/serve/modules/data/entity/DataAffairCommit.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 9b49dc3d..d985e21e 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/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()))); diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index 157d78ea..208294e0 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/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"; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 4d3476ef..fa7e42d9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/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()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java index b28f4d99..a9ecc1ab 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java +++ b/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") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java index eb2dca31..d94de279 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java index 928e332a..9f8d60b4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java index f7a095b2..41155d0e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java @@ -145,7 +145,11 @@ public interface TbsScheduleItemBudgetMapper extends BaseMapper getAllByScheduleItemIdList(@Param("selectIds") List ids); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index 19a68fba..cdc7d36c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/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 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 flowIdResult = seeYonService.baseCreateProcess(createProcess); + if(flowIdResult.getStatus()!=200){ + Assert.throwEx("远程服务调用失败"); + } + String formId = null; + R 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&¶m.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 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 changeConditionList = budgetConditionList.stream().map(cond->{ TbsBudgetChangeCondition changeCondition = TbsBudgetChangeCondition.toNewObject(cond); changeCondition.setChangeId(changeId); @@ -55,7 +126,38 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl budgetAmtUpdateList = param.getBudgetAmtUpdateList(); + if(CollectionUtil.isNotEmpty(budgetAmtUpdateList)){ + List budgetScheduleIds = budgetAmtUpdateList.stream().map(TbsBudgetAmtBo::getBudgetScheduleItemId).collect(Collectors.toList()); + List budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getAllByScheduleItemIdList(budgetScheduleIds); + List scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectBatchIds(budgetScheduleIds); + List 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; } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 9d5e9329..fd5ea568 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/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 @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 data = new HashMap<>(); @@ -101,15 +103,12 @@ public class TbsBudgetServiceImpl extends ServiceImpl 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 tbsBudget.setSyFormId(formId); this.updateById(tbsBudget); + //创建流程后回调 + BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,tbsBudget.getId()+""); + seeYonService.createCallbackStatus(callbackBo); + //请求校验是否成功 AsyncManager.me().execute(AsyncFactory.submitBudgetApply(tbsBudget.getId()+"")); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java index 0821e9a1..e52c3ecc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java +++ b/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()))); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java index b984b31e..ecc86035 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java +++ b/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())));