From 0d1713787eec87939f5a6595107dc38c2b48b649 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 19 Jul 2023 15:36:22 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E7=B1=BB=E8=B4=B9?= =?UTF-8?q?=E7=94=A8=E7=94=B3=E8=AF=B7=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/tbs/common/TbsSeeYonConst.java | 6 + .../entity/dto/TbsContractCostSubItem.java | 53 ++++ .../TbsCostApplyOperationServiceImpl.java | 108 +++++++- .../service/impl/TbsCostApplyServiceImpl.java | 233 +++++++++++++----- 4 files changed, 339 insertions(+), 61 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java 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 7d373232..1f513b35 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 @@ -24,6 +24,12 @@ public interface TbsSeeYonConst { return DevEnvironmentConfig.isDev()?"CostBill_Test":"CostBill"; } } + /** 费用申请2-协议类 */ + class CostApplyContractConf{ + public static String Code(){ + return DevEnvironmentConfig.isDev()?"contractApply_Test":"contractApply"; + } + } /** 核销 */ class CostCheckConf{ diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java new file mode 100644 index 00000000..baf4128a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -0,0 +1,53 @@ +package com.qs.serve.modules.tbs.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * @author YenHex + * @since 2023/5/9 + */ +public class TbsContractCostSubItem { + + @Data + public static class Activity{ + private String activityCode; + private String activityPurpose; + private String costCode; + private LocalDate startDate; + private LocalDate endDate; + private LocalDate writeOffDate; + private String productType; + private String product; + private String accountCode; + private String accountName; + private String costCenterNo; + private String costCenterName; + private BigDecimal costMoney; + + } + + @Data + public static class Payment{ + private String payItem; + private String payCondition; + private BigDecimal money; + private LocalDate payDate; + private String actualPayDate; + private Integer payCompleteState; + private String payRemark; + } + + @Data + public static class ToDoItem{ + private String serviceDescription; + private String deliveryStandard; + private LocalDate deliveryDate; + private String agreeRemark; + + } + +} 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 c5e8502f..7a432219 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 @@ -5,9 +5,16 @@ import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.seeyon.entity.CtpAffair; +import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; +import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO; +import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; +import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsActivityState; @@ -28,7 +35,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; /** @@ -68,6 +77,43 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService return TbsSeeYonConst.CostApplyConf.Code(); } + @Override + public R addNode(CtpAddNodeParam param) { + getRequestService().testConnection(); + TbsCostApply tbsCostApply = costApplyService.getById(param.getTargetId()); + CtpAddNodeDTO addNodeDTO = new CtpAddNodeDTO(); + addNodeDTO.setBackToMe(param.getBackToMe()); + addNodeDTO.setTargetId(param.getTargetId()); + List selectUserIds = new ArrayList<>(); + SysUser loginUser = getUserMapper().selectById(AuthContextUtils.getSysUserId()); + for (String userId : param.getUserIds()) { + SysUser user = getUserMapper().selectById(userId); + if(loginUser.getSyUserId().equals(user.getSyUserId())){ + return R.error("不能选择相同的OA账号的员工"); + } + if(StringUtils.hasText(user.getSyUserId())&&!user.getSyUserId().equals("0")){ + selectUserIds.add(user.getSyUserId()); + } + } + if(selectUserIds.size()==0){ + Assert.throwEx("选中的用户未绑定OA凭证"); + } + addNodeDTO.setUserIds(selectUserIds); + SysUser sysUser = getUserMapper().selectById(AuthContextUtils.getSysUserId()); + addNodeDTO.setUserCode(sysUser.getAccount()); + addNodeDTO.setUserSyId(sysUser.getSyUserId()); + String templateCode = getTemplateCode(); + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + addNodeDTO.setTemplateCode(TbsSeeYonConst.CostApplyContractConf.Code()); + } + addNodeDTO.setTemplateCode(templateCode); + R result = getRequestService().addNode(addNodeDTO); + if(result.getData()!=null&&result.getData().toLowerCase(Locale.ROOT).contains("ok")){ + return R.ok(); + } + return R.error(result.getMsg()); + } + @Override public SeeYonRequestService getRequestService() { return requestService; @@ -187,7 +233,42 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService @Override public R commitAffair(TbsAffairCommitBo affairCommit) { - return SeeYonOperationService.super.commitAffair(affairCommit); + getRequestService().testConnection(); + TbsCostApply costApply = costApplyService.getById(affairCommit.getCostApplyId()); + if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ + Assert.throwEx("费用申请处于未非审批状态"); + } + String syFormId = costApply.getSyFormId(); + String templateCode = getTemplateCode(); + //判断是否协议类 + if(costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){ + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); + } + R result = getRequestService().commonCommit(affairCommit, templateCode ,syFormId); + boolean isBackCommit = affairCommit.getState()==2; + if(result.getStatus()==200){ + // 判断是否含有下个节点 + String flag = result.getData(); + //审批中(next)、完成(finish)、拒绝(refused) + if("finish".equals(flag)){ + this.doFinished(affairCommit); + return R.ok(); + }else if ("stop".equals(flag)){ + if(isBackCommit){ + this.doBacked(affairCommit); + return R.ok(); + }else { + this.doRefuse(affairCommit); + return R.ok(); + } + }else if ("next".equals(flag)){ + this.doNext(affairCommit); + return R.ok(); + } + }else if (result.getStatus()==500){ + return result; + } + return R.ok(); } @Override @@ -236,4 +317,29 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService } return null; } + + @Override + public R runCompensate(String targetId) { + testConnection(); + String templateCode = getTemplateCode(); + TbsCostApply costApply = costApplyService.getById(targetId); + if(costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){ + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); + } + SyAffairStateResult stateResult =checkAffairState(targetId,templateCode); + SyAffairState affairState = stateResult.getState(); + if(affairState.equals(SyAffairState.next)){ + return R.ok(compensateNext(targetId)); + }else if(affairState.equals(SyAffairState.backed)){ + return R.ok(compensateBacked(targetId)); + }else if(affairState.equals(SyAffairState.finished)){ + return R.ok(compensateFinished(targetId)); + }else if(affairState.equals(SyAffairState.refuse)){ + return R.ok(compensateRefuse(targetId)); + }else if(affairState.equals(SyAffairState.error)){ + return R.error("数据异常请联系管理员"); + }else{ + return R.error("OA无相关审批数据"); + } + } } 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 a887ef2a..b6437f79 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 @@ -40,6 +40,7 @@ import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodBirDTO; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; +import com.qs.serve.modules.tbs.entity.dto.TbsContractCostSubItem; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.mapper.*; import com.qs.serve.modules.tbs.service.*; @@ -80,14 +81,17 @@ public class TbsCostApplyServiceImpl extends ServiceImpl payConditions = null; if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsActivityPayCondition::getCostApplyId,id); - List payConditions = tbsActivityPayConditionMapper.selectList(lqw); + payConditions = tbsActivityPayConditionMapper.selectList(lqw); if(payConditions.size()<1){ Assert.throwEx("请补充支付条件"); } @@ -212,71 +217,113 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); - String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); - data.put("costApplyCode",tbsCostApply.getCode()); - data.put("applyUserCode",sysUser.getCode()); - data.put("applyUserName",sysUser.getName()); - data.put("supplierName",tbsCostApply.getSupplierName()); - data.put("supplierCode",tbsCostApply.getSupplierCode()); - data.put("title",tbsCostApply.getChargeTheme()); - data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); - data.put("rowState","03"); - data.put("orgId",tbsCostApply.getId()+""); - data.put("targetId",tbsCostApply.getId()+""); - data.put("targetCode",tbsCostApply.getCode()); - data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); - data.put("money",tbsCostApply.getTotalActivityAmount()); - - //记录主表费率参数 - try { - this.buildMainData4ROI(tbsCostApply, data); - } catch (Exception e) { - e.printStackTrace(); - } + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + //创建协议类data数据 + data.put("serialNumber",tbsCostApply.getCode()); + data.put("applySubject",tbsCostApply.getChargeTheme()); + data.put("supplierCode",tbsCostApply.getSupplierCode()); + data.put("supplierName",tbsCostApply.getSupplierName()); + data.put("totalSalesMoney",tbsCostApply.getTotalActivityAmount()); + data.put("totalExpenseRate",tbsCostApply.getTotalActivityPreNotAmount()); + data.put("remark",tbsCostApply.getRemark()); +// data.put("payee",""); +// data.put("bankName",""); +// data.put("bankAccount",""); +// data.put("sealID",""); +// data.put("sealName",""); +// data.put("sealNum",""); +// data.put("fileNum",""); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); + List contracts = costContractMapper.selectList(lqw); + if(contracts.size()>0){ + TbsCostContract contract = contracts.get(0); + data.put("contractName",contract.getContractName()); + data.put("applyMoney",contract.getContractAmount()); + data.put("signDate",contract.getSignTime()); + data.put("expireDate",contract.getExpireTime()); + data.put("contractContent",contract.getContractCondition()); + //data.put("contractFile",""); + } - //拓展添加审批关联区域 - String saleRegionId = supplier.handleSaleRegionId(); - String bizRegionId = supplier.handleBizRegionId(); - BmsRegion saleRegion = regionMapper.selectById(saleRegionId); - BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); - String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; - String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + //创建子表数据 + List subList = new ArrayList<>(); + + //活动明细 + LambdaQueryWrapper actCgLqw = new LambdaQueryWrapper<>(); + actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId,id); + List activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + TbsActivity currActivity = null; + for (TbsActivity activity : activityList) { + if(centerGoods.getActivityId().equals(activity.getId())){ + currActivity = activity; + break; + } + } + TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity(); + dataActivity.setActivityCode(currActivity.getActivityCode()); + dataActivity.setActivityPurpose(currActivity.getActTitle()); + dataActivity.setCostCode(tbsCostApply.getCode()); + dataActivity.setStartDate(currActivity.getActStartDate()); + dataActivity.setEndDate(currActivity.getActEndDate()); + dataActivity.setWriteOffDate(currActivity.getPreCheckDate()); + dataActivity.setProductType(centerGoods.getTargetType()); + dataActivity.setProduct(centerGoods.getTargetName()); + dataActivity.setAccountCode(centerGoods.getSubjectCode()); + dataActivity.setAccountName(centerGoods.getSubjectName()); + dataActivity.setCostCenterNo(centerGoods.getCenterType()); + dataActivity.setCostCenterName(centerGoods.getCenterName()); + dataActivity.setCostMoney(centerGoods.getCenterGoodsAmount()); + subList.add(dataActivity); + } - //拓展添加审批关联 - data.put("biz_region",bizRegionNames); - data.put("exsp2",saleRegionNames); - data.put("data_state",TbsCostApplyState.State_1_apply.getCode()+""); + // 付款条件 + for (TbsActivityPayCondition payCondition : payConditions) { + TbsActivity currActivity = null; + for (TbsActivity activity : activityList) { + if(payCondition.getActivityId().equals(activity.getId())){ + currActivity = activity; + break; + } + } + TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment(); + subPayment.setPayItem(payCondition.getTitle()); + subPayment.setPayCondition(payCondition.getConditionMsg()); + subPayment.setMoney(currActivity.getTotalAmount()); + subPayment.setPayDate(payCondition.getPaymentDate()); + subPayment.setActualPayDate(null); + subPayment.setPayCompleteState(payCondition.getPreNotifyStatus()); + subPayment.setPayRemark(payCondition.getRemark()); + subList.add(subPayment); + } - //添加跳转地址业务 - String urlKey = "exsp5"+IdUtil.simpleUUID(); - String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); - data.put("exsp5",urlKey); - data.put("cmsLink",baseJumpUrl); - data.put("activitySummary",actTitles); + // 协议条款 + LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); + todoLqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId()); + List costTodoList = tbsCostTodoMapper.selectList(todoLqw); + for (TbsCostTodo costTodo : costTodoList) { + TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); + toDoItem.setServiceDescription(costTodo.getDescr()); + toDoItem.setDeliveryStandard(costTodo.getPayMsg()); + toDoItem.setDeliveryDate(costTodo.getPrePayDate()); + toDoItem.setAgreeRemark(costTodo.getRemark()); + subList.add(toDoItem); + } + //关联 + data.put("sub", subList); - //添加科目和成本中心 - List tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); - List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); - List subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); - List subList = new ArrayList<>(); - //创建子表数据 - try { - this.buildSubList(result, tbsActivityCenters, subjectNames, subList); - } catch (Exception e) { - e.printStackTrace(); - } - //创建商品抬头列表 - List tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); - Set bands = new HashSet<>(); - for (TbsActivityGoods tbsActivityGood : tbsActivityGoods) { - String band = tbsActivityGood.getTargetLevelPathNames().split("_")[0]; - bands.add(band); + }else { + //创建通用的费用申请Data + this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data); } - String goods = bands.stream().collect(Collectors.joining(",")); - data.put("chanPinPinLei",goods); - data.put("sub",subList); + //修改申请编码 + String templateCode = tbsCostApply.getCostThemeEditFlag().equals(1) + ?TbsSeeYonConst.CostApplyContractConf.Code() + :TbsSeeYonConst.CostApplyConf.Code(); BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); - createProcess.setTemplateCode(TbsSeeYonConst.CostApplyConf.Code()); + createProcess.setTemplateCode(templateCode); createProcess.setMemberLoginName(sysUser.getSyAccount()); createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme()); createProcess.setTargetId(tbsCostApply.getId()+""); @@ -358,6 +405,72 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map data) { + String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); + data.put("costApplyCode", tbsCostApply.getCode()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", tbsCostApply.getSupplierName()); + data.put("supplierCode", tbsCostApply.getSupplierCode()); + data.put("title", tbsCostApply.getChargeTheme()); + data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","03"); + data.put("orgId", tbsCostApply.getId()+""); + data.put("targetId", tbsCostApply.getId()+""); + data.put("targetCode", tbsCostApply.getCode()); + data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); + data.put("money", tbsCostApply.getTotalActivityAmount()); + + //记录主表费率参数 + try { + this.buildMainData4ROI(tbsCostApply, data); + } catch (Exception e) { + e.printStackTrace(); + } + + //拓展添加审批关联区域 + String saleRegionId = supplier.handleSaleRegionId(); + String bizRegionId = supplier.handleBizRegionId(); + BmsRegion saleRegion = regionMapper.selectById(saleRegionId); + BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); + String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; + String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + + //拓展添加审批关联 + data.put("biz_region",bizRegionNames); + data.put("exsp2",saleRegionNames); + data.put("data_state",TbsCostApplyState.State_1_apply.getCode()+""); + + //添加跳转地址业务 + String urlKey = "exsp5"+IdUtil.simpleUUID(); + String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); + data.put("exsp5",urlKey); + data.put("cmsLink",baseJumpUrl); + data.put("activitySummary",actTitles); + + //添加科目和成本中心 + List tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); + List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); + List subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); + List subList = new ArrayList<>(); + //创建子表数据 + try { + this.buildSubList(result, tbsActivityCenters, subjectNames, subList); + } catch (Exception e) { + e.printStackTrace(); + } + //创建商品抬头列表 + List tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); + Set bands = new HashSet<>(); + for (TbsActivityGoods tbsActivityGood : tbsActivityGoods) { + String band = tbsActivityGood.getTargetLevelPathNames().split("_")[0]; + bands.add(band); + } + String goods = bands.stream().collect(Collectors.joining(",")); + data.put("chanPinPinLei",goods); + data.put("sub",subList); + } + /** * 记录主表费率参数 * @param tbsCostApply From ad2324d307f2321b5f6c5e023069938ee97c6e68 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 19 Jul 2023 15:36:22 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E7=B1=BB=E8=B4=B9?= =?UTF-8?q?=E7=94=A8=E7=94=B3=E8=AF=B7=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/tbs/common/TbsSeeYonConst.java | 6 + .../entity/dto/TbsContractCostSubItem.java | 53 ++++ .../TbsCostApplyOperationServiceImpl.java | 108 +++++++- .../service/impl/TbsCostApplyServiceImpl.java | 233 +++++++++++++----- 4 files changed, 339 insertions(+), 61 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java 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 7d373232..1f513b35 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 @@ -24,6 +24,12 @@ public interface TbsSeeYonConst { return DevEnvironmentConfig.isDev()?"CostBill_Test":"CostBill"; } } + /** 费用申请2-协议类 */ + class CostApplyContractConf{ + public static String Code(){ + return DevEnvironmentConfig.isDev()?"contractApply_Test":"contractApply"; + } + } /** 核销 */ class CostCheckConf{ diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java new file mode 100644 index 00000000..baf4128a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -0,0 +1,53 @@ +package com.qs.serve.modules.tbs.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * @author YenHex + * @since 2023/5/9 + */ +public class TbsContractCostSubItem { + + @Data + public static class Activity{ + private String activityCode; + private String activityPurpose; + private String costCode; + private LocalDate startDate; + private LocalDate endDate; + private LocalDate writeOffDate; + private String productType; + private String product; + private String accountCode; + private String accountName; + private String costCenterNo; + private String costCenterName; + private BigDecimal costMoney; + + } + + @Data + public static class Payment{ + private String payItem; + private String payCondition; + private BigDecimal money; + private LocalDate payDate; + private String actualPayDate; + private Integer payCompleteState; + private String payRemark; + } + + @Data + public static class ToDoItem{ + private String serviceDescription; + private String deliveryStandard; + private LocalDate deliveryDate; + private String agreeRemark; + + } + +} 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 c5e8502f..7a432219 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 @@ -5,9 +5,16 @@ import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.seeyon.entity.CtpAffair; +import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; +import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO; +import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; +import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsActivityState; @@ -28,7 +35,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; /** @@ -68,6 +77,43 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService return TbsSeeYonConst.CostApplyConf.Code(); } + @Override + public R addNode(CtpAddNodeParam param) { + getRequestService().testConnection(); + TbsCostApply tbsCostApply = costApplyService.getById(param.getTargetId()); + CtpAddNodeDTO addNodeDTO = new CtpAddNodeDTO(); + addNodeDTO.setBackToMe(param.getBackToMe()); + addNodeDTO.setTargetId(param.getTargetId()); + List selectUserIds = new ArrayList<>(); + SysUser loginUser = getUserMapper().selectById(AuthContextUtils.getSysUserId()); + for (String userId : param.getUserIds()) { + SysUser user = getUserMapper().selectById(userId); + if(loginUser.getSyUserId().equals(user.getSyUserId())){ + return R.error("不能选择相同的OA账号的员工"); + } + if(StringUtils.hasText(user.getSyUserId())&&!user.getSyUserId().equals("0")){ + selectUserIds.add(user.getSyUserId()); + } + } + if(selectUserIds.size()==0){ + Assert.throwEx("选中的用户未绑定OA凭证"); + } + addNodeDTO.setUserIds(selectUserIds); + SysUser sysUser = getUserMapper().selectById(AuthContextUtils.getSysUserId()); + addNodeDTO.setUserCode(sysUser.getAccount()); + addNodeDTO.setUserSyId(sysUser.getSyUserId()); + String templateCode = getTemplateCode(); + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + addNodeDTO.setTemplateCode(TbsSeeYonConst.CostApplyContractConf.Code()); + } + addNodeDTO.setTemplateCode(templateCode); + R result = getRequestService().addNode(addNodeDTO); + if(result.getData()!=null&&result.getData().toLowerCase(Locale.ROOT).contains("ok")){ + return R.ok(); + } + return R.error(result.getMsg()); + } + @Override public SeeYonRequestService getRequestService() { return requestService; @@ -187,7 +233,42 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService @Override public R commitAffair(TbsAffairCommitBo affairCommit) { - return SeeYonOperationService.super.commitAffair(affairCommit); + getRequestService().testConnection(); + TbsCostApply costApply = costApplyService.getById(affairCommit.getCostApplyId()); + if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ + Assert.throwEx("费用申请处于未非审批状态"); + } + String syFormId = costApply.getSyFormId(); + String templateCode = getTemplateCode(); + //判断是否协议类 + if(costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){ + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); + } + R result = getRequestService().commonCommit(affairCommit, templateCode ,syFormId); + boolean isBackCommit = affairCommit.getState()==2; + if(result.getStatus()==200){ + // 判断是否含有下个节点 + String flag = result.getData(); + //审批中(next)、完成(finish)、拒绝(refused) + if("finish".equals(flag)){ + this.doFinished(affairCommit); + return R.ok(); + }else if ("stop".equals(flag)){ + if(isBackCommit){ + this.doBacked(affairCommit); + return R.ok(); + }else { + this.doRefuse(affairCommit); + return R.ok(); + } + }else if ("next".equals(flag)){ + this.doNext(affairCommit); + return R.ok(); + } + }else if (result.getStatus()==500){ + return result; + } + return R.ok(); } @Override @@ -236,4 +317,29 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService } return null; } + + @Override + public R runCompensate(String targetId) { + testConnection(); + String templateCode = getTemplateCode(); + TbsCostApply costApply = costApplyService.getById(targetId); + if(costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){ + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); + } + SyAffairStateResult stateResult =checkAffairState(targetId,templateCode); + SyAffairState affairState = stateResult.getState(); + if(affairState.equals(SyAffairState.next)){ + return R.ok(compensateNext(targetId)); + }else if(affairState.equals(SyAffairState.backed)){ + return R.ok(compensateBacked(targetId)); + }else if(affairState.equals(SyAffairState.finished)){ + return R.ok(compensateFinished(targetId)); + }else if(affairState.equals(SyAffairState.refuse)){ + return R.ok(compensateRefuse(targetId)); + }else if(affairState.equals(SyAffairState.error)){ + return R.error("数据异常请联系管理员"); + }else{ + return R.error("OA无相关审批数据"); + } + } } 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 35812ffd..2143430c 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 @@ -40,6 +40,7 @@ import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodBirDTO; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; +import com.qs.serve.modules.tbs.entity.dto.TbsContractCostSubItem; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.mapper.*; import com.qs.serve.modules.tbs.service.*; @@ -81,14 +82,17 @@ public class TbsCostApplyServiceImpl extends ServiceImpl payConditions = null; if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsActivityPayCondition::getCostApplyId,id); - List payConditions = tbsActivityPayConditionMapper.selectList(lqw); + payConditions = tbsActivityPayConditionMapper.selectList(lqw); if(payConditions.size()<1){ Assert.throwEx("请补充支付条件"); } @@ -213,71 +218,113 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); - String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); - data.put("costApplyCode",tbsCostApply.getCode()); - data.put("applyUserCode",sysUser.getCode()); - data.put("applyUserName",sysUser.getName()); - data.put("supplierName",tbsCostApply.getSupplierName()); - data.put("supplierCode",tbsCostApply.getSupplierCode()); - data.put("title",tbsCostApply.getChargeTheme()); - data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); - data.put("rowState","03"); - data.put("orgId",tbsCostApply.getId()+""); - data.put("targetId",tbsCostApply.getId()+""); - data.put("targetCode",tbsCostApply.getCode()); - data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); - data.put("money",tbsCostApply.getTotalActivityAmount()); - - //记录主表费率参数 - try { - this.buildMainData4ROI(tbsCostApply, data); - } catch (Exception e) { - e.printStackTrace(); - } + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + //创建协议类data数据 + data.put("serialNumber",tbsCostApply.getCode()); + data.put("applySubject",tbsCostApply.getChargeTheme()); + data.put("supplierCode",tbsCostApply.getSupplierCode()); + data.put("supplierName",tbsCostApply.getSupplierName()); + data.put("totalSalesMoney",tbsCostApply.getTotalActivityAmount()); + data.put("totalExpenseRate",tbsCostApply.getTotalActivityPreNotAmount()); + data.put("remark",tbsCostApply.getRemark()); +// data.put("payee",""); +// data.put("bankName",""); +// data.put("bankAccount",""); +// data.put("sealID",""); +// data.put("sealName",""); +// data.put("sealNum",""); +// data.put("fileNum",""); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); + List contracts = costContractMapper.selectList(lqw); + if(contracts.size()>0){ + TbsCostContract contract = contracts.get(0); + data.put("contractName",contract.getContractName()); + data.put("applyMoney",contract.getContractAmount()); + data.put("signDate",contract.getSignTime()); + data.put("expireDate",contract.getExpireTime()); + data.put("contractContent",contract.getContractCondition()); + //data.put("contractFile",""); + } - //拓展添加审批关联区域 - String saleRegionId = supplier.handleSaleRegionId(); - String bizRegionId = supplier.handleBizRegionId(); - BmsRegion saleRegion = regionMapper.selectById(saleRegionId); - BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); - String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; - String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + //创建子表数据 + List subList = new ArrayList<>(); + + //活动明细 + LambdaQueryWrapper actCgLqw = new LambdaQueryWrapper<>(); + actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId,id); + List activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + TbsActivity currActivity = null; + for (TbsActivity activity : activityList) { + if(centerGoods.getActivityId().equals(activity.getId())){ + currActivity = activity; + break; + } + } + TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity(); + dataActivity.setActivityCode(currActivity.getActivityCode()); + dataActivity.setActivityPurpose(currActivity.getActTitle()); + dataActivity.setCostCode(tbsCostApply.getCode()); + dataActivity.setStartDate(currActivity.getActStartDate()); + dataActivity.setEndDate(currActivity.getActEndDate()); + dataActivity.setWriteOffDate(currActivity.getPreCheckDate()); + dataActivity.setProductType(centerGoods.getTargetType()); + dataActivity.setProduct(centerGoods.getTargetName()); + dataActivity.setAccountCode(centerGoods.getSubjectCode()); + dataActivity.setAccountName(centerGoods.getSubjectName()); + dataActivity.setCostCenterNo(centerGoods.getCenterType()); + dataActivity.setCostCenterName(centerGoods.getCenterName()); + dataActivity.setCostMoney(centerGoods.getCenterGoodsAmount()); + subList.add(dataActivity); + } - //拓展添加审批关联 - data.put("biz_region",bizRegionNames); - data.put("exsp2",saleRegionNames); - data.put("data_state",TbsCostApplyState.State_1_apply.getCode()+""); + // 付款条件 + for (TbsActivityPayCondition payCondition : payConditions) { + TbsActivity currActivity = null; + for (TbsActivity activity : activityList) { + if(payCondition.getActivityId().equals(activity.getId())){ + currActivity = activity; + break; + } + } + TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment(); + subPayment.setPayItem(payCondition.getTitle()); + subPayment.setPayCondition(payCondition.getConditionMsg()); + subPayment.setMoney(currActivity.getTotalAmount()); + subPayment.setPayDate(payCondition.getPaymentDate()); + subPayment.setActualPayDate(null); + subPayment.setPayCompleteState(payCondition.getPreNotifyStatus()); + subPayment.setPayRemark(payCondition.getRemark()); + subList.add(subPayment); + } - //添加跳转地址业务 - String urlKey = "exsp5"+IdUtil.simpleUUID(); - String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); - data.put("exsp5",urlKey); - data.put("cmsLink",baseJumpUrl); - data.put("activitySummary",actTitles); + // 协议条款 + LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); + todoLqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId()); + List costTodoList = tbsCostTodoMapper.selectList(todoLqw); + for (TbsCostTodo costTodo : costTodoList) { + TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); + toDoItem.setServiceDescription(costTodo.getDescr()); + toDoItem.setDeliveryStandard(costTodo.getPayMsg()); + toDoItem.setDeliveryDate(costTodo.getPrePayDate()); + toDoItem.setAgreeRemark(costTodo.getRemark()); + subList.add(toDoItem); + } + //关联 + data.put("sub", subList); - //添加科目和成本中心 - List tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); - List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); - List subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); - List subList = new ArrayList<>(); - //创建子表数据 - try { - this.buildSubList(result, tbsActivityCenters, subjectNames, subList); - } catch (Exception e) { - e.printStackTrace(); - } - //创建商品抬头列表 - List tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); - Set bands = new HashSet<>(); - for (TbsActivityGoods tbsActivityGood : tbsActivityGoods) { - String band = tbsActivityGood.getTargetLevelPathNames().split("_")[0]; - bands.add(band); + }else { + //创建通用的费用申请Data + this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data); } - String goods = bands.stream().collect(Collectors.joining(",")); - data.put("chanPinPinLei",goods); - data.put("sub",subList); + //修改申请编码 + String templateCode = tbsCostApply.getCostThemeEditFlag().equals(1) + ?TbsSeeYonConst.CostApplyContractConf.Code() + :TbsSeeYonConst.CostApplyConf.Code(); BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); - createProcess.setTemplateCode(TbsSeeYonConst.CostApplyConf.Code()); + createProcess.setTemplateCode(templateCode); createProcess.setMemberLoginName(sysUser.getSyAccount()); createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme()); createProcess.setTargetId(tbsCostApply.getId()+""); @@ -362,6 +409,72 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map data) { + String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); + data.put("costApplyCode", tbsCostApply.getCode()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", tbsCostApply.getSupplierName()); + data.put("supplierCode", tbsCostApply.getSupplierCode()); + data.put("title", tbsCostApply.getChargeTheme()); + data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","03"); + data.put("orgId", tbsCostApply.getId()+""); + data.put("targetId", tbsCostApply.getId()+""); + data.put("targetCode", tbsCostApply.getCode()); + data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); + data.put("money", tbsCostApply.getTotalActivityAmount()); + + //记录主表费率参数 + try { + this.buildMainData4ROI(tbsCostApply, data); + } catch (Exception e) { + e.printStackTrace(); + } + + //拓展添加审批关联区域 + String saleRegionId = supplier.handleSaleRegionId(); + String bizRegionId = supplier.handleBizRegionId(); + BmsRegion saleRegion = regionMapper.selectById(saleRegionId); + BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); + String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; + String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + + //拓展添加审批关联 + data.put("biz_region",bizRegionNames); + data.put("exsp2",saleRegionNames); + data.put("data_state",TbsCostApplyState.State_1_apply.getCode()+""); + + //添加跳转地址业务 + String urlKey = "exsp5"+IdUtil.simpleUUID(); + String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); + data.put("exsp5",urlKey); + data.put("cmsLink",baseJumpUrl); + data.put("activitySummary",actTitles); + + //添加科目和成本中心 + List tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); + List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); + List subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); + List subList = new ArrayList<>(); + //创建子表数据 + try { + this.buildSubList(result, tbsActivityCenters, subjectNames, subList); + } catch (Exception e) { + e.printStackTrace(); + } + //创建商品抬头列表 + List tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); + Set bands = new HashSet<>(); + for (TbsActivityGoods tbsActivityGood : tbsActivityGoods) { + String band = tbsActivityGood.getTargetLevelPathNames().split("_")[0]; + bands.add(band); + } + String goods = bands.stream().collect(Collectors.joining(",")); + data.put("chanPinPinLei",goods); + data.put("sub",subList); + } + /** * 记录主表费率参数 * @param tbsCostApply From 53627d1d504348d3e92b79d7a86c57d429b02418 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 20 Jul 2023 15:21:49 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=95=B4=E5=90=88union?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/dto/TbsContractCostSubItem.java | 2 +- .../service/impl/TbsCostApplyServiceImpl.java | 54 +++++++++++++++---- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java index baf4128a..35f207d5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -26,7 +26,7 @@ public class TbsContractCostSubItem { private String accountName; private String costCenterNo; private String costCenterName; - private BigDecimal costMoney; + private BigDecimal applyMoney; } 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 2143430c..7375bb53 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 @@ -219,6 +219,39 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + + data.put("title",tbsCostApply.getChargeTheme()); + data.put("orgId",tbsCostApply.getId().toString()); + data.put("costApplyCode", tbsCostApply.getCode()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", tbsCostApply.getSupplierName()); + data.put("supplierCode", tbsCostApply.getSupplierCode()); + data.put("targetId", tbsCostApply.getId()+""); + data.put("targetCode", tbsCostApply.getCode()); + data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); + //添加跳转地址业务 + String urlKey = "exsp5"+IdUtil.simpleUUID(); + String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); + data.put("exsp5",urlKey); + data.put("cmsLink",baseJumpUrl); + + data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","03"); + + //拓展添加审批关联区域 + String saleRegionId = supplier.handleSaleRegionId(); + String bizRegionId = supplier.handleBizRegionId(); + BmsRegion saleRegion = regionMapper.selectById(saleRegionId); + BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); + String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; + String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + + //拓展添加审批关联 + data.put("biz_region",bizRegionNames); + data.put("exsp2",saleRegionNames); + data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+""); + //创建协议类data数据 data.put("serialNumber",tbsCostApply.getCode()); data.put("applySubject",tbsCostApply.getChargeTheme()); @@ -227,13 +260,14 @@ public class TbsCostApplyServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); @@ -241,11 +275,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl0){ TbsCostContract contract = contracts.get(0); data.put("contractName",contract.getContractName()); - data.put("applyMoney",contract.getContractAmount()); + data.put("contractTotalMoney",contract.getContractAmount()); data.put("signDate",contract.getSignTime()); data.put("expireDate",contract.getExpireTime()); data.put("contractContent",contract.getContractCondition()); - //data.put("contractFile",""); + data.put("contractFile",""); } //创建子表数据 @@ -276,7 +310,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl Date: Thu, 20 Jul 2023 16:53:51 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=95=B4=E5=90=88union?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + .../com/qs/serve/common/util/JsonUtil.java | 2 + .../entity/dto/TbsContractCostSubItem.java | 10 ++-- .../TbsCostApplyOperationServiceImpl.java | 57 +++++++++++++++++++ .../service/impl/TbsCostApplyServiceImpl.java | 26 ++++----- 5 files changed, 78 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index e10c5f69..d7146001 100644 --- a/pom.xml +++ b/pom.xml @@ -114,6 +114,7 @@ ${fastjson.version} + com.github.pagehelper pagehelper-spring-boot-starter diff --git a/src/main/java/com/qs/serve/common/util/JsonUtil.java b/src/main/java/com/qs/serve/common/util/JsonUtil.java index 2e7c66b7..69fae846 100644 --- a/src/main/java/com/qs/serve/common/util/JsonUtil.java +++ b/src/main/java/com/qs/serve/common/util/JsonUtil.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.experimental.UtilityClass; import java.util.ArrayList; @@ -31,6 +32,7 @@ public class JsonUtil { static { MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL); + //MAPPER.registerModule(new JavaTimeModule()); } /** diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java index 35f207d5..34cf01ed 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -17,9 +17,9 @@ public class TbsContractCostSubItem { private String activityCode; private String activityPurpose; private String costCode; - private LocalDate startDate; - private LocalDate endDate; - private LocalDate writeOffDate; + private String startDate; + private String endDate; + private String writeOffDate; private String productType; private String product; private String accountCode; @@ -35,7 +35,7 @@ public class TbsContractCostSubItem { private String payItem; private String payCondition; private BigDecimal money; - private LocalDate payDate; + private String payDate; private String actualPayDate; private Integer payCompleteState; private String payRemark; @@ -45,7 +45,7 @@ public class TbsContractCostSubItem { public static class ToDoItem{ private String serviceDescription; private String deliveryStandard; - private LocalDate deliveryDate; + private String deliveryDate; private String agreeRemark; } 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 7a432219..5c85a06a 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 @@ -6,6 +6,7 @@ import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.SpringUtils; import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.seeyon.entity.CtpAffair; import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; @@ -14,8 +15,10 @@ import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.entity.SysPostUser; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.mapper.SysUserMapper; +import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsCostApplyState; @@ -38,6 +41,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.stream.Collectors; /** @@ -77,6 +81,21 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService return TbsSeeYonConst.CostApplyConf.Code(); } + + @Override + public String checkAffairSummery(String targetId) { + TbsCostApply tbsCostApply = costApplyService.getById(targetId); + String templateCode = getTemplateCode(); + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); + } + R result = getRequestService().checkAffairSummery(templateCode,targetId); + if(result.getData()==null){ + return "next"; + } + return result.getData(); + } + @Override public R addNode(CtpAddNodeParam param) { getRequestService().testConnection(); @@ -119,6 +138,44 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService return requestService; } + @Override + public R> pageAffair(String targetId) { + boolean existFormId = checkSyFormIdIsNotNull(targetId); + if (!existFormId){ + return R.ok(new ArrayList<>()); + } + String templateCode = getTemplateCode(); + TbsCostApply costApply = costApplyService.getById(targetId); + if(costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){ + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); + } + R> syResult = getRequestService().commonListAffairs(targetId,null,templateCode); + List ctpAffairs = syResult.getData(); + if(ctpAffairs.size()>0){ + List oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList()); + List userList = getSysUserService().listByOaMemberIds(oaUserIds); + SysPostUserService postUserService = SpringUtils.getBean(SysPostUserService.class); + List userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); + List postUserList = postUserService.listByUserIds(userIds); + Map> postMap = postUserList.stream().collect(Collectors.groupingBy(SysPostUser::getUserId)); + List result = new ArrayList<>(); + for (CtpAffair ctpAffair : ctpAffairs) { + CtpAffairVo ctpAffairVo = new CtpAffairVo(); + ctpAffairVo.setAffairInfo(ctpAffair); + for (SysUser user : userList) { + if(ctpAffair.getMemberId().equals(user.getSyUserId())){ + ctpAffairVo.setUserInfo(user.toSysUserVo()); + List postUsers = postMap.get(user.getId()); + ctpAffairVo.setUserPostList(postUsers); + } + } + result.add(ctpAffairVo); + } + return R.ok(result); + } + return R.ok(new ArrayList<>()); + } + @Override public SysUserMapper getUserMapper() { return userMapper; 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 7375bb53..8f546549 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 @@ -229,7 +229,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); @@ -276,8 +276,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl formIdResult = seeYonService.getFormId(TbsSeeYonConst.CostApplyConf.Code(),tbsCostApply.getId()); + R formIdResult = seeYonService.getFormId(templateCode,tbsCostApply.getId()); if(formIdResult.getStatus()==200){ formId = formIdResult.getData(); } @@ -434,7 +434,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl Date: Fri, 21 Jul 2023 10:20:47 +0800 Subject: [PATCH 5/5] =?UTF-8?q?debug=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tbs/service/impl/TbsCostApplyOperationServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 5c85a06a..783fc9ad 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 @@ -123,7 +123,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService addNodeDTO.setUserSyId(sysUser.getSyUserId()); String templateCode = getTemplateCode(); if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ - addNodeDTO.setTemplateCode(TbsSeeYonConst.CostApplyContractConf.Code()); + templateCode = TbsSeeYonConst.CostApplyContractConf.Code(); } addNodeDTO.setTemplateCode(templateCode); R result = getRequestService().addNode(addNodeDTO);