11 changed files with 555 additions and 104 deletions
@ -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; |
||||
|
|
||||
|
} |
||||
|
|
@ -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); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
@ -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<VtbVerificationYardItem> { |
||||
|
|
||||
|
} |
||||
|
|
@ -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<VtbVerificationYard> { |
||||
|
|
||||
|
} |
||||
|
|
@ -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<String> 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<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); |
||||
|
List<VtbVerificationYardItem> 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<CtpAffairVo> buildCtpAffairVoList(List<CtpAffair> ctpAffairs) { |
||||
|
if(CollectionUtil.isEmpty(ctpAffairs)){ |
||||
|
return new ArrayList<>(); |
||||
|
} |
||||
|
List<String> oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList()); |
||||
|
List<SysUser> userList = sysUserService.listByOaMemberIds(oaUserIds); |
||||
|
List<String> verificationIds = ctpAffairs.stream().map(CtpAffair::getCostApplyId).collect(Collectors.toList()); |
||||
|
List<VtbVerification> vtbVerificationList = new ArrayList<>(); |
||||
|
List<TbsActivity> activityList = new ArrayList<>(); |
||||
|
List<TbsCostApply> costApplyList = new ArrayList<>(); |
||||
|
if(verificationIds.size()>0){ |
||||
|
vtbVerificationList = vtbVerificationService.listByIds(verificationIds); |
||||
|
List<Long> actIds = vtbVerificationList.stream().map(VtbVerification::getActivityId).collect(Collectors.toList()); |
||||
|
if(actIds.size()>0){ |
||||
|
activityList = tbsActivityService.listByIds(actIds); |
||||
|
List<Long> costIds = activityList.stream().map(TbsActivity::getCostApplyId).distinct().collect(Collectors.toList()); |
||||
|
costApplyList = tbsCostApplyService.listByIds(costIds); |
||||
|
} |
||||
|
} |
||||
|
List<CtpAffairVo> 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; |
||||
|
} |
||||
|
|
||||
|
} |
@ -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<VtbVerificationYardItem> { |
||||
|
|
||||
|
} |
||||
|
|
@ -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<VtbVerificationYard> { |
||||
|
|
||||
|
} |
||||
|
|
@ -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<VtbVerificationYardItemMapper,VtbVerificationYardItem> implements VtbVerificationYardItemService { |
||||
|
|
||||
|
} |
||||
|
|
@ -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<VtbVerificationYardMapper,VtbVerificationYard> implements VtbVerificationYardService { |
||||
|
|
||||
|
} |
||||
|
|
Loading…
Reference in new issue