Browse Source

添加政策日志;一条龙接口拓展保存apt和xlt参数

contract
Yen 2 years ago
parent
commit
6edb83e99b
  1. 6
      src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java
  2. 84
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  3. 200
      src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItemLog.java
  4. 14
      src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyItemLogMapper.java
  5. 14
      src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyItemLogService.java
  6. 22
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyItemLogServiceImpl.java

6
src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java

@ -43,4 +43,10 @@ public class ProcessCreatePolicyCostBo {
@NotNull(message = "存货编码 不能为空") @NotNull(message = "存货编码 不能为空")
private List<ProcessGoodsItem> goodsList; private List<ProcessGoodsItem> goodsList;
/** 拓展:是否保存核销到中间库 aptclaim,0->不保存(默认);1->保存 */
private Integer toSaveCostCheckFlag;
/** 拓展:是否保存支付到中间库 xlt,0->不保存(默认);1->保存 */
private Integer toSavePaymentFlag;
} }

84
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -3,10 +3,7 @@ package com.qs.serve.modules.third.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.consts.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.ResultFlag; import com.qs.serve.common.model.consts.ResultFlag;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.IdUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSubjectService;
@ -22,6 +19,9 @@ import com.qs.serve.modules.pay.entity.PayPayment;
import com.qs.serve.modules.pay.entity.PayPaymentItem; import com.qs.serve.modules.pay.entity.PayPaymentItem;
import com.qs.serve.modules.pay.service.PayPaymentItemService; import com.qs.serve.modules.pay.service.PayPaymentItemService;
import com.qs.serve.modules.pay.service.PayPaymentService; import com.qs.serve.modules.pay.service.PayPaymentService;
import com.qs.serve.modules.seeyon.entity.XltApticlaim;
import com.qs.serve.modules.seeyon.entity.XltPaymentRecord;
import com.qs.serve.modules.seeyon.service.XiaoLuTonService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsActivityState;
@ -32,10 +32,13 @@ import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo; import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo;
import com.qs.serve.modules.third.entity.ProcessCreatePolicyCostBo; import com.qs.serve.modules.third.entity.ProcessCreatePolicyCostBo;
import com.qs.serve.modules.third.entity.ProcessGoodsItem; import com.qs.serve.modules.third.entity.ProcessGoodsItem;
import com.qs.serve.modules.tzc.common.TzPolicyItemStatus;
import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync;
import com.qs.serve.modules.tzc.entity.TzcPolicyItem; import com.qs.serve.modules.tzc.entity.TzcPolicyItem;
import com.qs.serve.modules.tzc.entity.TzcPolicyItemLog;
import com.qs.serve.modules.tzc.service.TzcPolicyGoodsSyncService; import com.qs.serve.modules.tzc.service.TzcPolicyGoodsSyncService;
import com.qs.serve.modules.tzc.service.TzcPolicyItemLogService;
import com.qs.serve.modules.tzc.service.TzcPolicyItemService; import com.qs.serve.modules.tzc.service.TzcPolicyItemService;
import com.qs.serve.modules.tzc.service.TzcPolicyService; import com.qs.serve.modules.tzc.service.TzcPolicyService;
import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.common.VtbVerificationState;
@ -49,13 +52,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Random;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -95,7 +95,9 @@ public class PortalOfCostApplication {
private TzcPolicyService policyService; private TzcPolicyService policyService;
private TzcPolicyItemService policyItemServiceService; private TzcPolicyItemService policyItemServiceService;
private TzcPolicyItemLogService policyItemLogService;
private TzcPolicyGoodsSyncService tzcPolicyGoodsSyncService; private TzcPolicyGoodsSyncService tzcPolicyGoodsSyncService;
private final XiaoLuTonService xiaoLuTonService;
@ -105,6 +107,9 @@ public class PortalOfCostApplication {
if(user==null){Assert.throwEx("用户不存在,请重新编辑");} if(user==null){Assert.throwEx("用户不存在,请重新编辑");}
TzcPolicyItem policyItem = policyItemServiceService.getByPolicyItemCode(createBo.getPolicyItemCode()); TzcPolicyItem policyItem = policyItemServiceService.getByPolicyItemCode(createBo.getPolicyItemCode());
if(policyItem==null){ Assert.throwEx("政策项不存在,请重新编辑");} if(policyItem==null){ Assert.throwEx("政策项不存在,请重新编辑");}
if(!policyItem.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_2_SyncSuccess)){
Assert.throwEx("政策项状态异常或未完成同步");
}
BmsSupplier supplier = supplierService.getById(policyItem.getSupplierId()); BmsSupplier supplier = supplierService.getById(policyItem.getSupplierId());
BmsSubject subject = subjectService.getById(policyItem.getSubjectId()); BmsSubject subject = subjectService.getById(policyItem.getSubjectId());
//发票号 //发票号
@ -114,15 +119,15 @@ public class PortalOfCostApplication {
payLqw.eq(PayPayment::getBillNumber,billNumber); payLqw.eq(PayPayment::getBillNumber,billNumber);
long countPay = paymentService.count(payLqw); long countPay = paymentService.count(payLqw);
if(countPay>0){Assert.throwEx("发票号已存在,请勿重复提交");} if(countPay>0){Assert.throwEx("发票号已存在,请勿重复提交");}
//TODO 校验商品信息 //校验商品信息
// List<String> skuCodes = createBo.getGoodsList().stream().map(a->a.getInventoryCode()).collect(Collectors.toList()); List<String> skuCodes = createBo.getGoodsList().stream().map(a->a.getInventoryCode()).collect(Collectors.toList());
// LambdaQueryWrapper<TzcPolicyGoodsSync> goodsSyncLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TzcPolicyGoodsSync> goodsSyncLambdaQueryWrapper = new LambdaQueryWrapper<>();
// goodsSyncLambdaQueryWrapper.eq(TzcPolicyGoodsSync::getPolicyItemCode,policyItem.getPolicyItemCode()); goodsSyncLambdaQueryWrapper.eq(TzcPolicyGoodsSync::getPolicyItemCode,policyItem.getPolicyItemCode());
// goodsSyncLambdaQueryWrapper.in(TzcPolicyGoodsSync::getSkuCode,skuCodes); goodsSyncLambdaQueryWrapper.in(TzcPolicyGoodsSync::getSkuCode,skuCodes);
// long countSku = tzcPolicyGoodsSyncService.count(goodsSyncLambdaQueryWrapper); long countSku = tzcPolicyGoodsSyncService.count(goodsSyncLambdaQueryWrapper);
// if(countSku < skuCodes.size()){ if(countSku < skuCodes.size()){
// Assert.throwEx("部分商品不在政策范围内"); Assert.throwEx("部分商品不在政策范围内");
// } }
//初始化sku列表 //初始化sku列表
List<ProcessGoodsItem> processGoodsItems = createBo.getGoodsList(); List<ProcessGoodsItem> processGoodsItems = createBo.getGoodsList();
List<GoodsSku> skuList = this.initSkuListOfProcess(createBo.getGoodsList()); List<GoodsSku> skuList = this.initSkuListOfProcess(createBo.getGoodsList());
@ -132,6 +137,7 @@ public class PortalOfCostApplication {
final BigDecimal OneHundred = new BigDecimal("100"); final BigDecimal OneHundred = new BigDecimal("100");
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
LocalDate nowDate = LocalDate.now(); LocalDate nowDate = LocalDate.now();
Date nowDate_ = new Date();
String erpCode = createBo.getErpCode(); String erpCode = createBo.getErpCode();
Long supplierId = Long.parseLong(supplier.getId()); Long supplierId = Long.parseLong(supplier.getId());
BigDecimal totalAmount = createBo.getTotalAmount(); BigDecimal totalAmount = createBo.getTotalAmount();
@ -280,8 +286,15 @@ public class PortalOfCostApplication {
// 因为政策申请已扣除预算,这里旧不需要再进行保存 // 因为政策申请已扣除预算,这里旧不需要再进行保存
// budgetLogService.saveBatch(budgetLogList); // budgetLogService.saveBatch(budgetLogList);
//TODO 修改预算日志,记录政策使用情况 //修改预算日志,记录政策使用情况
TzcPolicyItemLog policyItemLog = TzcPolicyItemLog.toNewObject(policyItem,totalAmount);
policyItemLogService.save(policyItemLog);
//更新项使用情况
TzcPolicyItem policyItemParam = new TzcPolicyItem();
policyItemParam.setId(policyItem.getId());
policyItemParam.setUsedAmount(policyItem.getUsedAmount().add(totalAmount));
policyItemServiceService.updateById(policyItemParam);
//保存核销申请 //保存核销申请
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
@ -300,6 +313,34 @@ public class PortalOfCostApplication {
verification.setPaymentState(ResultFlag.OK); verification.setPaymentState(ResultFlag.OK);
verificationService.save(verification); verificationService.save(verification);
if(createBo.getToSaveCostCheckFlag()!=null&&createBo.getToSaveCostCheckFlag().equals(1)){
//发送请求到中间服务
XltApticlaim apticlaim = new XltApticlaim();
apticlaim.setVerificationCode(verification.getVerificationCode());
apticlaim.setCostCode(costApply.getCode());
apticlaim.setCostCode2(activity.getActivityCode());
apticlaim.setCusCode(verification.getSupplierCode());
apticlaim.setAmount(totalAmount);
apticlaim.setSubjectCode(subject.getSubjectCode());
apticlaim.setSubjectName(subject.getSubjectName());
apticlaim.setExpType("TI");
apticlaim.setApplyType("01");
apticlaim.setEffDate(nowDate_);
apticlaim.setInvoiced("2");
apticlaim.setCreateTime(nowDate_);
apticlaim.setStatus("00");
apticlaim.setDealTime(nowDate_);
apticlaim.setTopic(costApply.getChargeTheme());
try {
//todo 如果失败做补偿处理
xiaoLuTonService.saveApticlaim(apticlaim);
log.info("发送对象(apticlaim)到OA服务成功");
} catch (Exception e) {
e.printStackTrace();
log.error("发送对象到OA服务失败,数据内容如下:{}", JsonUtil.objectToJson(apticlaim));
}
}
//保存核销费用结果 //保存核销费用结果
VtbVerificationSubject verificationSubject = new VtbVerificationSubject(); VtbVerificationSubject verificationSubject = new VtbVerificationSubject();
verificationSubject.setVerificationId(verification.getId()); verificationSubject.setVerificationId(verification.getId());
@ -349,6 +390,13 @@ public class PortalOfCostApplication {
paymentItem.setSubjectCode(subject.getSubjectCode()); paymentItem.setSubjectCode(subject.getSubjectCode());
paymentItem.setSubjectName(subject.getSubjectName()); paymentItem.setSubjectName(subject.getSubjectName());
paymentItemService.save(paymentItem); paymentItemService.save(paymentItem);
if(createBo.getToSavePaymentFlag()!=null&&createBo.getToSavePaymentFlag().equals(1)){
//TODO 保存支付记录
XltPaymentRecord paymentRecord = new XltPaymentRecord();
xiaoLuTonService.savePaymentRecord(paymentRecord);
}
} }

200
src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItemLog.java

@ -0,0 +1,200 @@
package com.qs.serve.modules.tzc.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-03-02
*/
@Data
@TableName("tzc_policy_item_log")
public class TzcPolicyItemLog implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 主题 */
@NotBlank(message = "主题不能为空")
@Length(max = 60,message = "主题长度不能超过60字")
private String title;
/** 政策id */
@NotNull(message = "政策id不能为空")
private Long policyId;
/** 政策编码 */
@NotBlank(message = "政策编码不能为空")
@Length(max = 50,message = "政策编码长度不能超过50字")
private String policyItemCode;
/** 开始时间 */
@NotNull(message = "开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate policyStartDate;
/** 结束时间 */
@NotNull(message = "结束时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate policyEndDate;
/** 状态:0-未使用;1-已通过;2-已同步;3-已用完 */
@NotNull(message = "状态:0-未使用;1-已通过;2-已同步;3-已用完不能为空")
private Integer policyItemStatus;
/** 本次满减金额 */
@NotNull(message = "本次满减金额不能为空")
private BigDecimal currentAmount;
/** 客户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;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userId;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userCode;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userName;
/** 成本中心类型 */
@NotBlank(message = "成本中心类型不能为空")
@Length(max = 50,message = "成本中心类型长度不能超过50字")
private String centerType;
/** 成本中心id */
@NotBlank(message = "成本中心id不能为空")
@Length(max = 32,message = "成本中心id长度不能超过32字")
private String centerId;
/** 成本中心编码 */
@NotBlank(message = "成本中心编码不能为空")
@Length(max = 50,message = "成本中心编码长度不能超过50字")
private String centerCode;
/** 成本中心名称 */
@NotBlank(message = "成本中心名称不能为空")
@Length(max = 50,message = "成本中心名称长度不能超过50字")
private String centerName;
/** 科目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;
/** 备注 */
@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;
public static TzcPolicyItemLog toNewObject(TzcPolicyItem source,BigDecimal totalAmount){
TzcPolicyItemLog policyItemLog = new TzcPolicyItemLog();
policyItemLog.setId(source.getId());
policyItemLog.setTitle(source.getTitle());
policyItemLog.setPolicyId(source.getPolicyId());
policyItemLog.setPolicyItemCode(source.getPolicyItemCode());
policyItemLog.setPolicyStartDate(source.getPolicyStartDate());
policyItemLog.setPolicyEndDate(source.getPolicyEndDate());
policyItemLog.setPolicyItemStatus(source.getPolicyItemStatus());
policyItemLog.setCurrentAmount(totalAmount);
policyItemLog.setSupplierId(source.getSupplierId());
policyItemLog.setSupplierCode(source.getSupplierCode());
policyItemLog.setSupplierName(source.getSupplierName());
policyItemLog.setUserId(source.getUserId());
policyItemLog.setUserCode(source.getUserCode());
policyItemLog.setUserName(source.getUserName());
policyItemLog.setCenterType(source.getCenterType());
policyItemLog.setCenterId(source.getCenterId());
policyItemLog.setCenterCode(source.getCenterCode());
policyItemLog.setCenterName(source.getCenterName());
policyItemLog.setSubjectId(source.getSubjectId());
policyItemLog.setSubjectCode(source.getSubjectCode());
policyItemLog.setSubjectName(source.getSubjectName());
policyItemLog.setRemark(source.getRemark());
policyItemLog.setCreateTime(source.getCreateTime());
policyItemLog.setUpdateTime(source.getUpdateTime());
policyItemLog.setTenantId(source.getTenantId());
policyItemLog.setCreateBy(source.getCreateBy());
policyItemLog.setUpdateBy(source.getUpdateBy());
policyItemLog.setDelFlag(source.getDelFlag());
return policyItemLog;
}
}

14
src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyItemLogMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.tzc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tzc.entity.TzcPolicyItemLog;
/**
* 政策项使用日志 Mapper
* @author YenHex
* @date 2023-03-02
*/
public interface TzcPolicyItemLogMapper extends BaseMapper<TzcPolicyItemLog> {
}

14
src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyItemLogService.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.tzc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tzc.entity.TzcPolicyItemLog;
/**
* 政策项使用日志 服务接口
* @author YenHex
* @date 2023-03-02
*/
public interface TzcPolicyItemLogService extends IService<TzcPolicyItemLog> {
}

22
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyItemLogServiceImpl.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.tzc.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.tzc.entity.TzcPolicyItemLog;
import com.qs.serve.modules.tzc.service.TzcPolicyItemLogService;
import com.qs.serve.modules.tzc.mapper.TzcPolicyItemLogMapper;
/**
* 政策项使用日志 服务实现类
* @author YenHex
* @since 2023-03-02
*/
@Slf4j
@Service
@AllArgsConstructor
public class TzcPolicyItemLogServiceImpl extends ServiceImpl<TzcPolicyItemLogMapper,TzcPolicyItemLog> implements TzcPolicyItemLogService {
}
Loading…
Cancel
Save