diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java index 73753de0..e707c75a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java @@ -3,6 +3,8 @@ package com.qs.serve.modules.tbs.entity.bo; import lombok.Data; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; /** * @author YenHex @@ -31,5 +33,15 @@ public class TbsAffairCommitBo { @NotNull private String comment; + /** + * 修改金额列表 + */ + private List affairSubjectLines; + + @Data + public static class AffairSubjectLine{ + private Long verificationSubjectId; + private BigDecimal amount; + } } diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index aabfd754..d8f0f32d 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java @@ -29,9 +29,7 @@ import com.qs.serve.modules.vtb.entity.VtbVerificationChannel; import com.qs.serve.modules.vtb.entity.VtbVerificationChannelPoint; import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; import com.qs.serve.modules.vtb.entity.so.VtbVerificationSubjectSo; -import com.qs.serve.modules.vtb.service.VtbVerificationChannelPointService; -import com.qs.serve.modules.vtb.service.VtbVerificationChannelService; -import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService; +import com.qs.serve.modules.vtb.service.*; import com.tencentcloudapi.as.v20180419.models.Activity; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -42,7 +40,6 @@ import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.vtb.entity.so.VtbVerificationSo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; import com.qs.serve.modules.vtb.entity.VtbVerification; -import com.qs.serve.modules.vtb.service.VtbVerificationService; import javax.validation.Valid; import java.time.LocalDateTime; @@ -66,11 +63,10 @@ public class VtbVerificationController { private VtbVerificationChannelService vtbVerificationChannelService; private VtbVerificationChannelPointService vtbVerificationChannelPointService; private VtbVerificationSubjectService vtbVerificationSubjectService; - private TbsActivityService tbsActivityService; - private TbsCostApplyService tbsCostApplyService; private SysAttachService attachService; private SysUserService sysUserService; private SeeYonService seeYonService; + private VtbVerificationApplication verificationApplication; /** @@ -152,7 +148,7 @@ public class VtbVerificationController { String templateId = TbsSeeYonConst.VERIFICATION_TMP_ID; String templateCode = TbsSeeYonConst.VERIFICATION_CODE; R> result = seeYonService.commonListAffairs(verificationId+"",null, templateId,templateCode); - List result2 = this.buildCtpAffairVoList(result.getData()); + List result2 = verificationApplication.buildCtpAffairVoList(result.getData()); return R.ok(result2); } @@ -180,64 +176,14 @@ public class VtbVerificationController { PageVo pageVo = syResult.getData(); List ctpAffairs = pageVo.getList(); if(ctpAffairs.size()>0){ - List result = this.buildCtpAffairVoList(ctpAffairs); + List result = verificationApplication.buildCtpAffairVoList(ctpAffairs); PageVo costApplyPageVo = PageVo.initNewList(pageVo,result); return R.ok(costApplyPageVo); } return R.byEmptyList(); } - @NotNull - private List buildCtpAffairVoList(List ctpAffairs) { - if(CollectionUtil.isEmpty(ctpAffairs)){ - return new ArrayList<>(); - } - List oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList()); - List userList = sysUserService.listByOaMemberIds(oaUserIds); - List verificationIds = ctpAffairs.stream().map(CtpAffair::getCostApplyId).collect(Collectors.toList()); - List vtbVerificationList = new ArrayList<>(); - List activityList = new ArrayList<>(); - List costApplyList = new ArrayList<>(); - if(verificationIds.size()>0){ - vtbVerificationList = vtbVerificationService.listByIds(verificationIds); - List actIds = vtbVerificationList.stream().map(VtbVerification::getActivityId).collect(Collectors.toList()); - if(actIds.size()>0){ - activityList = tbsActivityService.listByIds(actIds); - List costIds = activityList.stream().map(TbsActivity::getCostApplyId).distinct().collect(Collectors.toList()); - costApplyList = tbsCostApplyService.listByIds(costIds); - } - } - List result = new ArrayList<>(); - for (CtpAffair ctpAffair : ctpAffairs) { - CtpAffairVo ctpAffairVo = new CtpAffairVo(); - for (VtbVerification verification : vtbVerificationList) { - if(verification.getId().toString().equals(ctpAffair.getCostApplyId())){ - ctpAffairVo.setVerification(verification); - for (TbsActivity activity : activityList) { - if(verification.getActivityId().equals(activity.getId())){ - ctpAffairVo.setActivityInfo(activity); - for (TbsCostApply costApply : costApplyList) { - if(activity.getCostApplyId().equals(costApply.getId())){ - ctpAffairVo.setCostApply(costApply); - break; - } - } - break; - } - } - break; - } - } - for (SysUser user : userList) { - if(ctpAffair.getMemberId().equals(user.getSyUserId())){ - ctpAffairVo.setUserInfo(user.toSysUserVo()); - } - } - ctpAffairVo.setAffairInfo(ctpAffair); - result.add(ctpAffairVo); - } - return result; - } + /** * 提交审批节点 @@ -247,51 +193,7 @@ public class VtbVerificationController { @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) @PreAuthorize("hasRole('tbs:costApply:commit')") public R commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ - VtbVerification verification = vtbVerificationService.getById(affairCommit.getCostApplyId()); - if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){ - return R.error("费用申请处于未非审批状态!"); - } - boolean isBackCommit = affairCommit.getState()==2; - R result = seeYonService.commonCommit(affairCommit,TbsSeeYonConst.VERIFICATION_CODE); - if(result.getStatus()==200){ - // 判断是否含有下个节点 - String flag = result.getData(); - //审批中(next)、完成(finish)、拒绝(refused) - if("finish".equals(flag)){ - VtbVerification vtbVer = new VtbVerification(); - vtbVer.setId(verification.getId()); - vtbVer.setVerificationState(VtbVerificationState.Finished.getCode()); - vtbVer.setFinishedTime(LocalDateTime.now()); - vtbVerificationService.updateById(vtbVer); - vtbVerificationService.successCommit(verification.getId()); - return R.ok(); - }else if ("stop".equals(flag)){ - if(isBackCommit){ - VtbVerification vtbVer = new VtbVerification(); - vtbVer.setId(verification.getId()); - vtbVer.setVerificationState(VtbVerificationState.Rollback.getCode()); - vtbVer.setSyFormId(""); - vtbVer.setSyFlowId(""); - vtbVerificationService.updateById(vtbVer); - }else { - VtbVerification vtbVer = new VtbVerification(); - vtbVer.setId(verification.getId()); - vtbVer.setVerificationState(VtbVerificationState.Stop.getCode()); - vtbVerificationService.updateById(vtbVer); - } - //还原活动为待核销状态 - TbsActivity activity = new TbsActivity(); - activity.setId(verification.getActivityId()); - activity.setActivityState(TbsActivityState.STATE_0_Todo); - tbsActivityService.updateById(activity); - return R.ok(); - }else if ("next".equals(flag)){ - return R.ok(); - } - }else if (result.getStatus()==500){ - return result; - } - return R.error("远程调用失败"); + return verificationApplication.commitAffair(affairCommit); } diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java new file mode 100644 index 00000000..3b41917f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java @@ -0,0 +1,96 @@ +package com.qs.serve.modules.vtb.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 核销审批线 实体类 + * @author YenHex + * @since 2023-02-14 + */ +@Data +@TableName("vtb_verification_yard") +public class VtbVerificationYard implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 核算id */ + @NotNull(message = "核算id不能为空") + private Long verificationId; + + /** 科目核销编码 */ + @NotBlank(message = "科目核销编码不能为空") + @Length(max = 32,message = "科目核销编码长度不能超过32字") + private String verificationSubCode; + + /** 状态:0-否定,1-同意,2-退回 */ + @NotNull(message = "状态:0-否定,1-同意,2-退回不能为空") + private Integer state; + + /** OA节点id */ + @NotBlank(message = "OA节点id不能为空") + @Length(max = 40,message = "OA节点id长度不能超过40字") + private String affairId; + + /** 评论 */ + @NotBlank(message = "评论不能为空") + @Length(max = 255,message = "评论长度不能超过255字") + private String comment; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 是否无效 */ + @NotNull(message = "是否无效不能为空") + private Integer effectiveFlag; + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java new file mode 100644 index 00000000..45558ff2 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java @@ -0,0 +1,145 @@ +package com.qs.serve.modules.vtb.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 核销审批线明细 实体类 + * @author YenHex + * @since 2023-02-14 + */ +@Data +@TableName("vtb_verification_yard_item") +public class VtbVerificationYardItem implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 核销线id */ + @NotNull(message = "核销线id不能为空") + private Long yardId; + + /** 核算id */ + @NotNull(message = "核算id不能为空") + private Long verificationId; + + /** 科目核销编码 */ + @NotBlank(message = "科目核销编码不能为空") + @Length(max = 32,message = "科目核销编码长度不能超过32字") + private String verificationSubCode; + + /** 费用申请id */ + @NotNull(message = "费用申请id不能为空") + private Long costApplyId; + + /** 活动id */ + @NotNull(message = "活动id不能为空") + private Long activityId; + + /** 科目id */ + @NotNull(message = "科目id不能为空") + private Long subjectId; + + /** 科目编码 */ + @NotBlank(message = "科目编码不能为空") + @Length(max = 50,message = "科目编码长度不能超过50字") + private String subjectCode; + + /** 科目名称 */ + @NotBlank(message = "科目名称不能为空") + @Length(max = 50,message = "科目名称长度不能超过50字") + private String subjectName; + + /** 客户id */ + @NotNull(message = "客户id不能为空") + private Long supplierId; + + /** 客户编码 */ + @NotBlank(message = "客户编码不能为空") + @Length(max = 30,message = "客户编码长度不能超过30字") + private String supplierCode; + + /** 客户名称 */ + @NotBlank(message = "客户名称不能为空") + @Length(max = 30,message = "客户名称长度不能超过30字") + private String supplierName; + + /** 上次审批金额 */ + @NotNull(message = "上次审批金额不能为空") + private BigDecimal lastAmount; + + /** 本次审批金额 */ + @NotNull(message = "本次审批金额不能为空") + private BigDecimal currAmount; + + /** 场次 */ + @NotNull(message = "场次不能为空") + private Integer countSession; + + /** 人数 */ + @NotNull(message = "人数不能为空") + private Integer countPerson; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 是否无效 */ + @NotNull(message = "是否无效不能为空") + private Integer effectiveFlag; + + public void initSetNull(){ + this.setCreateBy(null); + this.setCreateTime(null); + this.setUpdateBy(null); + this.setUpdateTime(null); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardItemMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardItemMapper.java new file mode 100644 index 00000000..71fbffd6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardItemMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem; + +/** + * 核销审批线明细 Mapper + * @author YenHex + * @date 2023-02-14 + */ +public interface VtbVerificationYardItemMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardMapper.java new file mode 100644 index 00000000..375b0fe9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.vtb.entity.VtbVerificationYard; + +/** + * 核销审批线 Mapper + * @author YenHex + * @date 2023-02-14 + */ +public interface VtbVerificationYardMapper extends BaseMapper { + +} + 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 new file mode 100644 index 00000000..2f102146 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java @@ -0,0 +1,196 @@ +package com.qs.serve.modules.vtb.service; + +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.modules.seeyon.entity.CtpAffair; +import com.qs.serve.modules.seeyon.service.SeeYonService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysAttachService; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsActivityState; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; +import com.qs.serve.modules.tbs.service.TbsActivityService; +import com.qs.serve.modules.tbs.service.TbsCostApplyService; +import com.qs.serve.modules.vtb.common.VtbVerificationState; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; +import com.qs.serve.modules.vtb.entity.VtbVerificationYard; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem; +import lombok.AllArgsConstructor; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.validation.Valid; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/2/14 + */ +@Service +@AllArgsConstructor +public class VtbVerificationApplication { + + private VtbVerificationService vtbVerificationService; + private VtbVerificationSubjectService vtbVerificationSubjectService; + private VtbVerificationYardService yardService; + private VtbVerificationYardItemService yardItemService; + + private TbsActivityService tbsActivityService; + private TbsCostApplyService tbsCostApplyService; + private SysUserService sysUserService; + private SeeYonService seeYonService; + + public R commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ + VtbVerification verification = vtbVerificationService.getById(affairCommit.getCostApplyId()); + if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){ + return R.error("费用申请处于未非审批状态!"); + } + VtbVerificationYard yard = new VtbVerificationYard(); + yard.setVerificationId(verification.getId()); + yard.setVerificationSubCode(verification.getVerificationCode()); + yard.setState(affairCommit.getState()); + yard.setAffairId(affairCommit.getAffairId()); + yard.setComment(affairCommit.getComment()); + + boolean isBackCommit = affairCommit.getState()==2; + R result = seeYonService.commonCommit(affairCommit, TbsSeeYonConst.VERIFICATION_CODE); + if(result.getStatus()==200){ + // 判断是否含有下个节点 + String flag = result.getData(); + //审批中(next)、完成(finish)、拒绝(refused) + if("finish".equals(flag)){ + VtbVerification vtbVer = new VtbVerification(); + vtbVer.setId(verification.getId()); + vtbVer.setVerificationState(VtbVerificationState.Finished.getCode()); + vtbVer.setFinishedTime(LocalDateTime.now()); + vtbVerificationService.updateById(vtbVer); + vtbVerificationService.successCommit(verification.getId()); + }else if ("stop".equals(flag)){ + if(isBackCommit){ + VtbVerification vtbVer = new VtbVerification(); + vtbVer.setId(verification.getId()); + vtbVer.setVerificationState(VtbVerificationState.Rollback.getCode()); + vtbVer.setSyFormId(""); + vtbVer.setSyFlowId(""); + vtbVerificationService.updateById(vtbVer); + }else { + VtbVerification vtbVer = new VtbVerification(); + vtbVer.setId(verification.getId()); + vtbVer.setVerificationState(VtbVerificationState.Stop.getCode()); + vtbVerificationService.updateById(vtbVer); + } + //还原活动为待核销状态 + TbsActivity activity = new TbsActivity(); + activity.setId(verification.getActivityId()); + activity.setActivityState(TbsActivityState.STATE_0_Todo); + tbsActivityService.updateById(activity); + }else if (!"next".equals(flag)){ + return R.error("远程调用返回,非指定状态"); + } + yardService.save(yard); + //非终止或者驳回,保存审批线金额明细 + if(!"stop".equals(flag)){ + List verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); + List yardItemList = new ArrayList<>(); + for (VtbVerificationSubject currVs : verificationSubjects) { + BigDecimal changeAmount = null; + if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){ + for (TbsAffairCommitBo.AffairSubjectLine affairSubjectLine : affairCommit.getAffairSubjectLines()) { + if(currVs.getId().equals(affairSubjectLine.getVerificationSubjectId())){ + changeAmount = affairSubjectLine.getAmount(); + break; + } + } + } + //保存明细判断是否更变金额 + VtbVerificationYardItem yardItem = CopierUtil.copy(currVs,new VtbVerificationYardItem()); + yardItem.initSetNull(); + BigDecimal lastAmount = currVs.getUsedAmount(); + yardItem.setLastAmount(lastAmount); + //金额有更变 + if(changeAmount!=null&&changeAmount.compareTo(lastAmount)!=0){ + yardItem.setCurrAmount(changeAmount); + BigDecimal diff = changeAmount.subtract(lastAmount); + if(diff.compareTo(BigDecimal.ZERO)>0){ + yardItem.setRemark(currVs.getSubjectName()+"["+currVs.getSubjectCode()+"]增加费用:"+diff); + }else { + yardItem.setRemark(currVs.getSubjectName()+"["+currVs.getSubjectCode()+"]减少费用:"+diff.negate()); + } + }else { + yardItem.setCurrAmount(lastAmount); + } + yardItemList.add(yardItem); + } + yardItemService.saveBatch(yardItemList); + } + return R.ok(); + }else if (result.getStatus()==500){ + return result; + } + return R.error("远程调用失败"); + } + + @NotNull + public List buildCtpAffairVoList(List ctpAffairs) { + if(CollectionUtil.isEmpty(ctpAffairs)){ + return new ArrayList<>(); + } + List oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList()); + List userList = sysUserService.listByOaMemberIds(oaUserIds); + List verificationIds = ctpAffairs.stream().map(CtpAffair::getCostApplyId).collect(Collectors.toList()); + List vtbVerificationList = new ArrayList<>(); + List activityList = new ArrayList<>(); + List costApplyList = new ArrayList<>(); + if(verificationIds.size()>0){ + vtbVerificationList = vtbVerificationService.listByIds(verificationIds); + List actIds = vtbVerificationList.stream().map(VtbVerification::getActivityId).collect(Collectors.toList()); + if(actIds.size()>0){ + activityList = tbsActivityService.listByIds(actIds); + List costIds = activityList.stream().map(TbsActivity::getCostApplyId).distinct().collect(Collectors.toList()); + costApplyList = tbsCostApplyService.listByIds(costIds); + } + } + List result = new ArrayList<>(); + for (CtpAffair ctpAffair : ctpAffairs) { + CtpAffairVo ctpAffairVo = new CtpAffairVo(); + for (VtbVerification verification : vtbVerificationList) { + if(verification.getId().toString().equals(ctpAffair.getCostApplyId())){ + ctpAffairVo.setVerification(verification); + for (TbsActivity activity : activityList) { + if(verification.getActivityId().equals(activity.getId())){ + ctpAffairVo.setActivityInfo(activity); + for (TbsCostApply costApply : costApplyList) { + if(activity.getCostApplyId().equals(costApply.getId())){ + ctpAffairVo.setCostApply(costApply); + break; + } + } + break; + } + } + break; + } + } + for (SysUser user : userList) { + if(ctpAffair.getMemberId().equals(user.getSyUserId())){ + ctpAffairVo.setUserInfo(user.toSysUserVo()); + } + } + ctpAffairVo.setAffairInfo(ctpAffair); + result.add(ctpAffairVo); + } + return result; + } + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardItemService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardItemService.java new file mode 100644 index 00000000..c8c11aca --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardItemService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem; + +/** + * 核销审批线明细 服务接口 + * @author YenHex + * @date 2023-02-14 + */ +public interface VtbVerificationYardItemService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardService.java new file mode 100644 index 00000000..65fd08de --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.vtb.entity.VtbVerificationYard; + +/** + * 核销审批线 服务接口 + * @author YenHex + * @date 2023-02-14 + */ +public interface VtbVerificationYardService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardItemServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardItemServiceImpl.java new file mode 100644 index 00000000..a2d5f3a7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardItemServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.vtb.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem; +import com.qs.serve.modules.vtb.service.VtbVerificationYardItemService; +import com.qs.serve.modules.vtb.mapper.VtbVerificationYardItemMapper; + +/** + * 核销审批线明细 服务实现类 + * @author YenHex + * @since 2023-02-14 + */ +@Slf4j +@Service +@AllArgsConstructor +public class VtbVerificationYardItemServiceImpl extends ServiceImpl implements VtbVerificationYardItemService { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardServiceImpl.java new file mode 100644 index 00000000..cf7429cb --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.vtb.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.vtb.entity.VtbVerificationYard; +import com.qs.serve.modules.vtb.service.VtbVerificationYardService; +import com.qs.serve.modules.vtb.mapper.VtbVerificationYardMapper; + +/** + * 核销审批线 服务实现类 + * @author YenHex + * @since 2023-02-14 + */ +@Slf4j +@Service +@AllArgsConstructor +public class VtbVerificationYardServiceImpl extends ServiceImpl implements VtbVerificationYardService { + +} +