Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

# Conflicts:
#	src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
v1.0
15989082884@163.com 2 years ago
parent
commit
7106972df2
  1. 40
      src/main/java/com/qs/serve/common/model/enums/MonthValues.java
  2. 1
      src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java
  3. 77
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierTarget.java
  4. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierTargetMapper.java
  5. 4
      src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java
  6. 15
      src/main/java/com/qs/serve/modules/seeyon/entity/dto/TodoVoQuery.java
  7. 6
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivitySlottingFeeController.java
  8. 21
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java
  9. 3
      src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java
  10. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java
  11. 340
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  12. 41
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  13. 7
      src/main/resources/mapper/bms/BmsChannelPointMapper.xml
  14. 401
      src/main/resources/mapper/seeyon/CommonCheckMapper.xml
  15. 5
      src/main/resources/mapper/tbs/TbsBudgetMapper.xml
  16. 2
      src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

40
src/main/java/com/qs/serve/common/model/enums/MonthValues.java

@ -0,0 +1,40 @@
package com.qs.serve.common.model.enums;
/**
* @author YenHex
* @since 2023/9/13
*/
public class MonthValues {
public static final int[] Q1 = {1,2,3};
public static final int[] Q2 = {4,5,6};
public static final int[] Q3 = {7,8,9};
public static final int[] Q4 = {10,11,12};
public static int[] getQArr(Integer val){
for (int i = 0; i < Q1.length; i++) {
if(val==Q1[i]){
return Q1;
}
}
for (int i = 0; i < Q2.length; i++) {
if(val==Q2[i]){
return Q2;
}
}
for (int i = 0; i < Q3.length; i++) {
if(val==Q3[i]){
return Q3;
}
}
for (int i = 0; i < Q4.length; i++) {
if(val==Q4[i]){
return Q4;
}
}
return null;
}
}

1
src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java

@ -62,6 +62,7 @@ public class BirCenterRateServiceImpl implements BirCenterRateService {
private TzcPolicyItemMapper tzcPolicyItemMapper; private TzcPolicyItemMapper tzcPolicyItemMapper;
private TbsBudgetLogMapper tbsBudgetLogMapper; private TbsBudgetLogMapper tbsBudgetLogMapper;
@Override
public List<TbsCostSubItem.CostCenterTranStr> findCostCenterDataByCostApplyId(Long costApplyId,Long policyId){ public List<TbsCostSubItem.CostCenterTranStr> findCostCenterDataByCostApplyId(Long costApplyId,Long policyId){
List<TbsCostSubItem.CostCenterTranStr> centerDataList = new ArrayList<>(); List<TbsCostSubItem.CostCenterTranStr> centerDataList = new ArrayList<>();
if(costApplyId!=null) { if(costApplyId!=null) {

77
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierTarget.java

@ -0,0 +1,77 @@
package com.qs.serve.modules.bms.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-09-13
*/
@Data
@TableName("bms_supplier_target")
public class BmsSupplierTarget implements Serializable {
private static final long serialVersionUID = 1L;
/** */
@TableId(type = IdType.AUTO)
private Long id;
/** */
private Long supplierId;
/** */
@Length(max = 255,message = "长度不能超过255字")
private String supplierCode;
/** */
@Length(max = 255,message = "长度不能超过255字")
private String supplierName;
/** 对应tbs_schedule的ID */
private Long scheduleId;
/** 对应tbs_schedule_item的ID */
private Long scheduleItemId;
/** */
@Length(max = 255,message = "长度不能超过255字")
private String scheduleItemName;
/** */
private BigDecimal targetDispatchAmount;
/** */
private BigDecimal targetCostAmount;
public static BmsSupplierTarget toNewObject(BmsSupplierTarget source){
BmsSupplierTarget supplierTarget = new BmsSupplierTarget();
supplierTarget.setId(source.getId());
supplierTarget.setSupplierId(source.getSupplierId());
supplierTarget.setSupplierCode(source.getSupplierCode());
supplierTarget.setSupplierName(source.getSupplierName());
supplierTarget.setScheduleId(source.getScheduleId());
supplierTarget.setScheduleItemId(source.getScheduleItemId());
supplierTarget.setScheduleItemName(source.getScheduleItemName());
supplierTarget.setTargetDispatchAmount(source.getTargetDispatchAmount());
supplierTarget.setTargetCostAmount(source.getTargetCostAmount());
return supplierTarget;
}
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierTargetMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsSupplierTarget;
/**
* Mapper
* @author YenHex
* @date 2023-09-13
*/
public interface BmsSupplierTargetMapper extends BaseMapper<BmsSupplierTarget> {
}

4
src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java

@ -75,8 +75,8 @@ public class SeeYonController {
* @return * @return
*/ */
@GetMapping("pageMyCallback") @GetMapping("pageMyCallback")
public R<PageVo<TodoVO>> pageCallbackList(){ public R<PageVo<TodoVO>> pageCallbackList(TodoVoQuery todoVoQuery){
return R.ok(commonCheckService.pageCallback(new TodoVoQuery())); return R.ok(commonCheckService.pageCallback(todoVoQuery));
} }
/** /**

15
src/main/java/com/qs/serve/modules/seeyon/entity/dto/TodoVoQuery.java

@ -1,6 +1,9 @@
package com.qs.serve.modules.seeyon.entity.dto; package com.qs.serve.modules.seeyon.entity.dto;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
/** /**
* @author YenHex * @author YenHex
@ -9,6 +12,18 @@ import lombok.Data;
@Data @Data
public class TodoVoQuery { public class TodoVoQuery {
private String title;
private String targetType;
private String targetCode;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate startDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;
private String userId; private String userId;
private Integer startRow; private Integer startRow;

6
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivitySlottingFeeController.java

@ -88,6 +88,12 @@ public class TbsActivitySlottingFeeController {
List<Long> channelIds = channelList.stream().map(TbsActivityChannel::getChannelId).distinct().collect(Collectors.toList()); List<Long> channelIds = channelList.stream().map(TbsActivityChannel::getChannelId).distinct().collect(Collectors.toList());
List<Long> pointIds = pointList.stream().map(TbsActivityChannelPoint::getPointId).distinct().collect(Collectors.toList()); List<Long> pointIds = pointList.stream().map(TbsActivityChannelPoint::getPointId).distinct().collect(Collectors.toList());
LambdaQueryWrapper<TbsActivitySlottingFee> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsActivitySlottingFee> lqw = new LambdaQueryWrapper<>();
lqw.like(StringUtils.hasText(param.getTargetName()),TbsActivitySlottingFee::getTargetName,param.getTargetName());
lqw.like(StringUtils.hasText(param.getTargetCode()),TbsActivitySlottingFee::getTargetCode,param.getTargetCode());
lqw.like(StringUtils.hasText(param.getChannelName()),TbsActivitySlottingFee::getChannelName,param.getChannelName());
lqw.like(StringUtils.hasText(param.getChannelCode()),TbsActivitySlottingFee::getChannelCode,param.getChannelCode());
lqw.like(StringUtils.hasText(param.getPointName()),TbsActivitySlottingFee::getPointName,param.getPointName());
lqw.like(StringUtils.hasText(param.getPointCode()),TbsActivitySlottingFee::getPointCode,param.getPointCode());
if (goodsIds.size() > 0) { if (goodsIds.size() > 0) {
lqw.in(TbsActivitySlottingFee::getTargetId, goodsIds); lqw.in(TbsActivitySlottingFee::getTargetId, goodsIds);
lqw.eq(TbsActivitySlottingFee::getTargetType, "spu"); lqw.eq(TbsActivitySlottingFee::getTargetType, "spu");

21
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java

@ -52,4 +52,25 @@ public class TbsContractCostSubItem {
} }
@Data
public static class CusCenterRate{
// 季度客户所属成本中心费用金额
private String qtdCusCenterCost;
// 季度客户所属成本中心发货金额
private String qtdCusCenterSend;
// 季度客户所属成本中心费用率
private String qtdCusCenterExpenseRate;
// 季度客户所属成本中心目标费用率
private String qtdCusCenterTargetExpenseRate;
// 年度客户所属成本中心费用金额
private String ytdCusCenterCost;
// 年度客户所属成本中心发货金额
private String ytdCusCenterSend;
// 年度客户所属成本中心费用率
private String ytdCusCenterExpenseRate;
// 年度客户所属成本中心目标费用率
private String ytdCusCenterTargetExpenseRate;
}
} }

3
src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java

@ -34,6 +34,9 @@ public class TbsBudgetSo implements Serializable {
/** 预算编码 */ /** 预算编码 */
private String budgetNumber; private String budgetNumber;
/** 审批流程状态 */
private Integer budgetCheckState;
/** 科目编码搜索值 */ /** 科目编码搜索值 */
private String subjectValue; private String subjectValue;

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java

@ -47,7 +47,7 @@ public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationServic
@Override @Override
public void doCommitBacked(String targetId) { public void doCommitBacked(String targetId) {
AsyncFactory.submitBudgetApply(targetId); AsyncManager.me().execute(AsyncFactory.submitBudgetApply(targetId));
} }
@Override @Override

340
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -10,22 +10,23 @@ import com.qs.serve.common.framework.manager.AsyncManager;
import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.MonthValues;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; import com.qs.serve.modules.bir.entity.BirActivityCenterGoods;
import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO; import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO;
import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo;
import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo; import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo;
import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper; import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper;
import com.qs.serve.modules.bir.mapper.BirBaseActivityMapper; import com.qs.serve.modules.bir.mapper.BirBaseActivityMapper;
import com.qs.serve.modules.bir.mapper.BirRoiRateMapper;
import com.qs.serve.modules.bir.service.BirCenterRateService; import com.qs.serve.modules.bir.service.BirCenterRateService;
import com.qs.serve.modules.bir.service.BirRoiRateService; import com.qs.serve.modules.bir.service.BirRoiRateService;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierTargetMapper;
import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo;
@ -112,6 +113,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
private BirCenterRateService centerRateService; private BirCenterRateService centerRateService;
private BirActivityCenterGoodsMapper birActivityCenterGoodsMapper; private BirActivityCenterGoodsMapper birActivityCenterGoodsMapper;
private BirBaseActivityMapper birBaseActivityMapper; private BirBaseActivityMapper birBaseActivityMapper;
private BirRoiRateMapper birRoiRateMapper;
private final ErpDispatchDataMapper dispatchDataMapper;
private TbsScheduleItemMapper tbsScheduleItemMapper;
private BmsSupplierTargetMapper bmsSupplierTargetMapper;
private TbsBudgetMatchApplication tbsBudgetMatchApplication; private TbsBudgetMatchApplication tbsBudgetMatchApplication;
@ -572,61 +578,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<TbsCostContract> contracts = costContractMapper.selectList(lqw); List<TbsCostContract> contracts = costContractMapper.selectList(lqw);
if(contracts.size()>0){ if(contracts.size()>0){
//活动的科目和成本中心 //构建合同DATA
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); buildContractSeeyonData(id, data, contracts);
String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(","));
String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(","));
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id));
List<Long> subjectIds = tbsActivitySubjects.stream().map(a->a.getSubjectId()).collect(Collectors.toList());
if(subjectIds.size()>0){
List<BmsSubject> subjectList = subjectService.listByIds(subjectIds);
String concatSubjectCodes = subjectList.stream().map(BmsSubject::getThirdCode).collect(Collectors.joining(","));
String concatSubjectNames = subjectList.stream().map(BmsSubject::getThirdName).collect(Collectors.joining(","));
data.put("financeAccountCode",concatSubjectCodes);
data.put("financeAccountName",concatSubjectNames);
data.put("accountCode",concatSubjectCodes);
data.put("accountName",concatSubjectNames);
}
TbsCostContract contract = contracts.get(0);
data.put("payee",contract.getPayee());
data.put("bankName",contract.getBankName());
data.put("bankAccount",contract.getBankAccount());
data.put("sealID",contract.getSealId());
data.put("sealName",contract.getSealName());
data.put("sealNum",contract.getSealNum());
data.put("fileNum",contract.getFileNum());
data.put("costCenterNo",concatCenterCodes);
data.put("costCenterName",concatCenterNames);
data.put("businessCompany",contract.getBusinessCompany());
data.put("businessCompanyId",contract.getDutyNumber());
data.put("contractName",contract.getContractName());
data.put("applyMoney",contract.getContractAmount());
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString());
data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString());
data.put("contractContent",contract.getContractCondition());
String urls = "";
final String ossPrefix = "https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/";
if (CollectionUtil.isNotEmpty(contract.getAttachIds())){
List<String> attachIds = Arrays.asList(contract.getAttachIds());
List<SysAttach> attachList = sysAttachService.listByIds(attachIds);
urls = attachList.stream().map(a->{
if(a.getPath()!=null){
try {
String tmp = URLEncoder.encode(a.getPath(), "UTF8").replace("%2F","/");
return ossPrefix+tmp;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return "";
}).collect(Collectors.joining(" , "));
}
data.put("contractFile",urls);
}else { }else {
Assert.throwEx("请补充合同信息"); Assert.throwEx("请补充合同信息");
} }
@ -635,33 +588,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<Object> subList = new ArrayList<>(); List<Object> subList = new ArrayList<>();
//活动明细 //活动明细
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>(); buildActivityCenterGoodsSeeyonData(id, tbsCostApply, activityList, subList);
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id);
List<TbsActivityCenterGoods> 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()==null?null:currActivity.getActStartDate().toString());
dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString());
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString());
dataActivity.setProductType(GoodsType.getName(centerGoods.getTargetType()));
dataActivity.setProduct(centerGoods.getTargetName());
dataActivity.setActivityAccountCode(centerGoods.getSubjectCode());
dataActivity.setActivityAccountName(centerGoods.getSubjectName());
dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode());
dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")");
dataActivity.setMoney(centerGoods.getCenterGoodsAmount());
subList.add(dataActivity);
}
// 付款条件 // 付款条件
for (TbsActivityPayCondition payCondition : payConditions) { for (TbsActivityPayCondition payCondition : payConditions) {
// TbsActivity currActivity = null; // TbsActivity currActivity = null;
@ -697,10 +624,240 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成"); toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成");
subList.add(toDoItem); subList.add(toDoItem);
} }
//构造客户维度的 年度、季度合计
try {
List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList = buildCusRateMain(supplier);
subList.addAll(cusCenterRateList);
} catch (Exception e) {
log.error("[构造客户维度的 年度、季度合计]异常:{}",e.getMessage());
}
//关联 //关联
data.put("sub", subList); data.put("sub", subList);
} }
private void buildActivityCenterGoodsSeeyonData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<Object> subList) {
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>();
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id);
List<TbsActivityCenterGoods> 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()==null?null:currActivity.getActStartDate().toString());
dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString());
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString());
dataActivity.setProductType(GoodsType.getName(centerGoods.getTargetType()));
dataActivity.setProduct(centerGoods.getTargetName());
dataActivity.setActivityAccountCode(centerGoods.getSubjectCode());
dataActivity.setActivityAccountName(centerGoods.getSubjectName());
dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode());
dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")");
dataActivity.setMoney(centerGoods.getCenterGoodsAmount());
subList.add(dataActivity);
}
}
private void buildContractSeeyonData(String id, Map<String, Object> data, List<TbsCostContract> contracts) {
//活动的科目和成本中心
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id));
String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(","));
String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(","));
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id));
List<Long> subjectIds = tbsActivitySubjects.stream().map(a->a.getSubjectId()).collect(Collectors.toList());
if(subjectIds.size()>0){
List<BmsSubject> subjectList = subjectService.listByIds(subjectIds);
String concatSubjectCodes = subjectList.stream().map(BmsSubject::getThirdCode).collect(Collectors.joining(","));
String concatSubjectNames = subjectList.stream().map(BmsSubject::getThirdName).collect(Collectors.joining(","));
data.put("financeAccountCode",concatSubjectCodes);
data.put("financeAccountName",concatSubjectNames);
data.put("accountCode",concatSubjectCodes);
data.put("accountName",concatSubjectNames);
}
TbsCostContract contract = contracts.get(0);
data.put("payee",contract.getPayee());
data.put("bankName",contract.getBankName());
data.put("bankAccount",contract.getBankAccount());
data.put("sealID",contract.getSealId());
data.put("sealName",contract.getSealName());
data.put("sealNum",contract.getSealNum());
data.put("fileNum",contract.getFileNum());
data.put("costCenterNo",concatCenterCodes);
data.put("costCenterName",concatCenterNames);
data.put("businessCompany",contract.getBusinessCompany());
data.put("businessCompanyId",contract.getDutyNumber());
data.put("contractName",contract.getContractName());
data.put("applyMoney",contract.getContractAmount());
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString());
data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString());
data.put("contractContent",contract.getContractCondition());
String urls = "";
final String ossPrefix = "https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/";
if (CollectionUtil.isNotEmpty(contract.getAttachIds())){
List<String> attachIds = Arrays.asList(contract.getAttachIds());
List<SysAttach> attachList = sysAttachService.listByIds(attachIds);
urls = attachList.stream().map(a->{
if(a.getPath()!=null){
try {
String tmp = URLEncoder.encode(a.getPath(), "UTF8").replace("%2F","/");
return ossPrefix+tmp;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return "";
}).collect(Collectors.joining(" , "));
}
data.put("contractFile",urls);
}
@NotNull
private List<TbsContractCostSubItem.CusCenterRate> buildCusRateMain(BmsSupplier supplier) {
List<BmsSupplierTarget> supplierTargetList = bmsSupplierTargetMapper.selectList(
new LambdaQueryWrapper<BmsSupplierTarget>()
.eq(BmsSupplierTarget::getSupplierId, supplier.getId())
);
List<Long> scheduleItemIds = supplierTargetList.stream().map(BmsSupplierTarget::getScheduleItemId).collect(Collectors.toList());
List<Long> scheduleIds = supplierTargetList.stream().map(BmsSupplierTarget::getScheduleId).collect(Collectors.toList());
List<TbsScheduleItem> scheduleItems = null;
if(scheduleItemIds.size()>0&&scheduleIds.size()>0){
LambdaQueryWrapper<TbsScheduleItem> scheduleItemsLqw = new LambdaQueryWrapper<>();
scheduleItemsLqw.in(TbsScheduleItem::getId,scheduleItemIds);
scheduleItemsLqw.in(TbsScheduleItem::getScheduleId,scheduleIds);
scheduleItems = tbsScheduleItemMapper.selectList(scheduleItemsLqw);
}
//最近12个月
LocalDate currMonth = LocalDate.now();
int currMonthNum = currMonth.getYear()*100 + currMonth.getMonthValue();
LocalDate startMonth = currMonth.plusMonths(-12);
int startMonthNum = startMonth.getYear()*100 + startMonth.getMonthValue();
//发货金额
List<ErpDispatchSumVo> dispatchSumVos = dispatchDataMapper.querySumCost(startMonthNum,currMonthNum,Arrays.asList(supplier.getCode()));
//客户核销金额
BirRoiCostDTO costDTO = new BirRoiCostDTO();
costDTO.setStartMonthNum(startMonthNum);
costDTO.setEndMonthNum(currMonthNum);
costDTO.setSupplierId(supplier.getId());
List<BirRoiCostItemVo> costItemVoList = birRoiRateMapper.queryRoiCostItems(costDTO);
//用户季度费率
List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList =
this.buildCusCenterRate(supplierTargetList, scheduleItems, currMonth, startMonth, dispatchSumVos, costItemVoList);
//用户年费率
this.buildCusCenterYearRate(supplierTargetList, dispatchSumVos, costItemVoList, cusCenterRateList);
return cusCenterRateList;
}
/**
* 用户年费率
* @param supplierTargetList
* @param dispatchSumVos
* @param costItemVoList
* @param cusCenterRateList
*/
private void buildCusCenterYearRate(List<BmsSupplierTarget> supplierTargetList, List<ErpDispatchSumVo> dispatchSumVos, List<BirRoiCostItemVo> costItemVoList, List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList) {
BigDecimal dispatchAmt = BigDecimal.ZERO;
BigDecimal totalCost = BigDecimal.ZERO;
BigDecimal cusDispatch = BigDecimal.ZERO;
BigDecimal cusCost = BigDecimal.ZERO;
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) {
dispatchAmt = dispatchAmt.add(dispatchSumVo.getDispatchSumCost());
}
for (BirRoiCostItemVo itemVo : costItemVoList) {
totalCost = totalCost.add(itemVo.getCostRealAmt());
}
for (BmsSupplierTarget supplierTarget : supplierTargetList) {
cusDispatch = cusDispatch.add(supplierTarget.getTargetCostAmount());
cusCost = cusCost.add(supplierTarget.getTargetCostAmount());
}
for (TbsContractCostSubItem.CusCenterRate centerRate : cusCenterRateList) {
centerRate.setYtdCusCenterCost(totalCost.toString());
centerRate.setYtdCusCenterSend(dispatchAmt.toString());
centerRate.setYtdCusCenterExpenseRate(totalCost.divide(dispatchAmt, RoundingMode.DOWN).toString());
if(cusCost.compareTo(BigDecimal.ZERO)!=0&&cusDispatch.compareTo(BigDecimal.ZERO)!=0){
centerRate.setYtdCusCenterTargetExpenseRate(cusCost.divide(cusDispatch,RoundingMode.DOWN).toString());
}
}
}
/**
* 创建客户维度的季度费率
* @param supplierTargetList
* @param scheduleItems
* @param currMonth
* @param startMonth
* @param dispatchSumVos
* @param costItemVoList
*/
private List<TbsContractCostSubItem.CusCenterRate> buildCusCenterRate(List<BmsSupplierTarget> supplierTargetList,
List<TbsScheduleItem> scheduleItems,
LocalDate currMonth, LocalDate startMonth,
List<ErpDispatchSumVo> dispatchSumVos,
List<BirRoiCostItemVo> costItemVoList) {
List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList = new ArrayList<>();
int[] currQ = MonthValues.getQArr(startMonth.getMonthValue());
if(currQ!=null){
BigDecimal dispatchAmt = BigDecimal.ZERO;
BigDecimal totalCost = BigDecimal.ZERO;
BigDecimal cusDispatch = BigDecimal.ZERO;
BigDecimal cusCost = BigDecimal.ZERO;
for (int monthVal : currQ) {
int monthNum = currMonth.getYear()*100 + monthVal;
if(dispatchSumVos !=null){
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) {
if(dispatchSumVo.getYearMonth().equals(monthNum)){
dispatchAmt = dispatchAmt.add(dispatchSumVo.getDispatchSumCost());
break;
}
}
}
for (BirRoiCostItemVo itemVo : costItemVoList) {
if(itemVo.getYearMonth().equals(monthNum)){
totalCost = totalCost.add(itemVo.getCostRealAmt());
}
}
if(scheduleItems !=null){
for (BmsSupplierTarget supplierTarget : supplierTargetList) {
for (TbsScheduleItem item : scheduleItems) {
//匹配条件
if(supplierTarget.getScheduleItemId().equals(item.getId())){
//匹配时间
int itemMonth = item.getStartDate().getMonthValue();
if(itemMonth==monthVal){
cusDispatch = cusDispatch.add(supplierTarget.getTargetCostAmount());
cusCost = cusCost.add(supplierTarget.getTargetCostAmount());
break;
}
}
}
}
}
}
TbsContractCostSubItem.CusCenterRate centerRate = new TbsContractCostSubItem.CusCenterRate();
centerRate.setQtdCusCenterCost(totalCost.toString());
centerRate.setQtdCusCenterSend(dispatchAmt.toString());
centerRate.setQtdCusCenterExpenseRate(totalCost.divide(dispatchAmt, RoundingMode.DOWN).toString());
if(cusCost.compareTo(BigDecimal.ZERO)!=0&&cusDispatch.compareTo(BigDecimal.ZERO)!=0){
centerRate.setQtdCusCenterTargetExpenseRate(cusCost.divide(cusDispatch,RoundingMode.DOWN).toString());
}
cusCenterRateList.add(centerRate);
}
return cusCenterRateList;
}
private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, BmsSupplier supplier ,SysUser sysUser, Map<String, Object> data) { private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, BmsSupplier supplier ,SysUser sysUser, Map<String, Object> data) {
String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; "));
data.put("costApplyCode", tbsCostApply.getCode()); data.put("costApplyCode", tbsCostApply.getCode());
@ -753,7 +910,14 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
try { try {
this.buildSubList(tbsActivityCenters, subjectNames, subList); this.buildSubList(tbsActivityCenters, subjectNames, subList);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("【费用申请,创建子表数据】:{}",e.getMessage());
}
//构造客户维度的 年度、季度合计
try {
List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList = buildCusRateMain(supplier);
subList.addAll(cusCenterRateList);
} catch (Exception e) {
log.error("【费用申请,创建客户维度费率数据】:{}",e.getMessage());
} }
//创建商品抬头列表 //创建商品抬头列表
List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id));
@ -827,7 +991,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
//成本中心去重 //成本中心去重
Map<String,List<TbsActivityCenter>> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a->a.getCenterType()+"-"+a.getCenterId())); Map<String,List<TbsActivityCenter>> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a->a.getCenterType()+"-"+a.getCenterId()));
List<TbsActivityCenter> centerList = centerMapList.values().stream().map(a->a.get(0)).collect(Collectors.toList()); List<TbsActivityCenter> centerList = centerMapList.values().stream().map(a->a.get(0)).collect(Collectors.toList());
// TODO 有异常
for(TbsActivityCenter center : centerList){ for(TbsActivityCenter center : centerList){
TbsCostSubItem.CostCenterTranStr costCenter = centerRateService.buildCostCenter(center.getCenterType(),center.getCenterId(),center.getCenterName()); TbsCostSubItem.CostCenterTranStr costCenter = centerRateService.buildCostCenter(center.getCenterType(),center.getCenterId(),center.getCenterName());
subList.add(costCenter); subList.add(costCenter);

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

@ -5,8 +5,10 @@ import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.ResultFlag; import com.qs.serve.common.model.consts.ResultFlag;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsCostCenter;
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.BmsCostCenterService;
import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.GoodsCategory;
@ -77,6 +79,7 @@ public class PortalOfCostApplication {
private BmsSupplierService supplierService; private BmsSupplierService supplierService;
private BmsSubjectService subjectService; private BmsSubjectService subjectService;
private BmsCostCenterService costCenterService;
private SysUserService userService; private SysUserService userService;
@ -140,7 +143,6 @@ public class PortalOfCostApplication {
//保存核销申请 //保存核销申请
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
verification.setVerificationCode("HX"+ IdUtil.timeStampId()); verification.setVerificationCode("HX"+ IdUtil.timeStampId());
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setFinishedTime(nowTime); verification.setFinishedTime(nowTime);
verification.setVerificationState(VtbVerificationState.Finished.getCode()); verification.setVerificationState(VtbVerificationState.Finished.getCode());
verification.setPolicyItemId(policyItem.getId()); verification.setPolicyItemId(policyItem.getId());
@ -417,7 +419,6 @@ public class PortalOfCostApplication {
//保存核销申请 //保存核销申请
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
verification.setVerificationCode("HX"+ IdUtil.timeStampId()); verification.setVerificationCode("HX"+ IdUtil.timeStampId());
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setFinishedTime(nowTime); verification.setFinishedTime(nowTime);
verification.setVerificationState(VtbVerificationState.Finished.getCode()); verification.setVerificationState(VtbVerificationState.Finished.getCode());
verification.setActivityId(activity.getId()); verification.setActivityId(activity.getId());
@ -540,6 +541,8 @@ public class PortalOfCostApplication {
if(supplier==null){Assert.throwEx("客户不存在,请重新编辑");} if(supplier==null){Assert.throwEx("客户不存在,请重新编辑");}
BmsSubject subject = subjectService.getByCode(createBo.getSubjectCode()); BmsSubject subject = subjectService.getByCode(createBo.getSubjectCode());
if(subject==null){Assert.throwEx("科目不存在,请重新编辑");} if(subject==null){Assert.throwEx("科目不存在,请重新编辑");}
BmsCostCenter costCenter = costCenterService.getByCode(createBo.getCenterCode());
if(costCenter==null){Assert.throwEx("成本中心不存在,请重新编辑");}
//发票号 //发票号
String billNumber = createBo.getBillNumber(); String billNumber = createBo.getBillNumber();
String disNumber = createBo.getErpCode(); String disNumber = createBo.getErpCode();
@ -567,7 +570,7 @@ public class PortalOfCostApplication {
List<GoodsSku> skuList = this.initSkuListOfProcess(invCodeList); List<GoodsSku> skuList = this.initSkuListOfProcess(invCodeList);
//常用参数 //常用参数
final String GOODS_TYPE = "sku"; final String GOODS_TYPE = "sku";
final String CENTER_TYPE = "customer"; final String CENTER_TYPE = "center";
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();
@ -579,6 +582,10 @@ public class PortalOfCostApplication {
String activityCode = costCode; String activityCode = costCode;
if(StringUtils.hasText(activityCode)){
activityCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.Activity);
}
String activityTitle = createBo.getActivityTitle(); String activityTitle = createBo.getActivityTitle();
if(!StringUtils.hasText(activityTitle)){ if(!StringUtils.hasText(activityTitle)){
activityTitle = "由核销API生成的活动"; activityTitle = "由核销API生成的活动";
@ -586,6 +593,7 @@ public class PortalOfCostApplication {
//构建费用申请 //构建费用申请
TbsCostApply costApply = new TbsCostApply(); TbsCostApply costApply = new TbsCostApply();
costApply.setCode(costCode); costApply.setCode(costCode);
costApply.setMatchType(1);
costApply.setChargeTheme(costTheme); costApply.setChargeTheme(costTheme);
costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode()); costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode());
costApply.setSupplierId(supplierId); costApply.setSupplierId(supplierId);
@ -632,9 +640,9 @@ public class PortalOfCostApplication {
activityCenter.setCenterAmount(totalAmount); activityCenter.setCenterAmount(totalAmount);
activityCenter.setCenterRate(OneHundred); activityCenter.setCenterRate(OneHundred);
activityCenter.setCenterType(CENTER_TYPE); activityCenter.setCenterType(CENTER_TYPE);
activityCenter.setCenterId(supplier.getId()); activityCenter.setCenterId(costCenter.getId()+"");
activityCenter.setCenterName(supplier.getName()); activityCenter.setCenterName(costCenter.getName());
activityCenter.setCenterCode(supplier.getCode()); activityCenter.setCenterCode(costCenter.getCode());
activityCenter.setUsedAmount(totalAmount); activityCenter.setUsedAmount(totalAmount);
//活动-商品 //活动-商品
@ -665,9 +673,9 @@ public class PortalOfCostApplication {
centerGoods.setSupplierName(supplier.getName()); centerGoods.setSupplierName(supplier.getName());
//设置成本中心 //设置成本中心
centerGoods.setCenterType(CENTER_TYPE); centerGoods.setCenterType(CENTER_TYPE);
centerGoods.setCenterId(supplier.getId()); centerGoods.setCenterId(costCenter.getId()+"");
centerGoods.setCenterCode(supplier.getCode()); centerGoods.setCenterCode(costCenter.getCode());
centerGoods.setCenterName(supplier.getName()); centerGoods.setCenterName(costCenter.getName());
centerGoods.setCenterRate(OneHundred); centerGoods.setCenterRate(OneHundred);
centerGoods.setCenterAmount(totalAmount); centerGoods.setCenterAmount(totalAmount);
//设置科目 //设置科目
@ -727,7 +735,7 @@ public class PortalOfCostApplication {
Arrays.asList(activity), Arrays.asList(activity),
Arrays.asList(activitySubject), Arrays.asList(activitySubject),
activityCenterGoodsList, activityCenterGoodsList,
Arrays.asList(activityCenter),true,false,false); Arrays.asList(activityCenter),false,false,false);
//不匹配的商品,保存到无预算表 //不匹配的商品,保存到无预算表
List<TbsBudgetCostItem> unMatchBudgetItem = budgetCostResult.getBudgetUnMatchList(); List<TbsBudgetCostItem> unMatchBudgetItem = budgetCostResult.getBudgetUnMatchList();
@ -763,8 +771,7 @@ public class PortalOfCostApplication {
//保存核销申请 //保存核销申请
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
verification.setVerificationCode("HX"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification)); verification.setVerificationCode("MHX"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification));
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setCostApplyId(costApply.getId()); verification.setCostApplyId(costApply.getId());
verification.setFinishedTime(nowTime); verification.setFinishedTime(nowTime);
verification.setVerificationState(VtbVerificationState.Finished.getCode()); verification.setVerificationState(VtbVerificationState.Finished.getCode());
@ -804,7 +811,7 @@ public class PortalOfCostApplication {
ThirtyVerification tv = new ThirtyVerification(); ThirtyVerification tv = new ThirtyVerification();
tv.setId(IdUtil.getSnowFlakeId()+""); tv.setId(IdUtil.getSnowFlakeId()+"");
tv.setVerificationCode(verification.getVerificationMainCode()); tv.setVerificationCode(verificationSubject.getVerificationSubCode());
tv.setActivityTitle(activityTitle); tv.setActivityTitle(activityTitle);
//tv.setActivityCode(activityCode); //tv.setActivityCode(activityCode);
tv.setCreateDate(timeString); tv.setCreateDate(timeString);
@ -815,17 +822,17 @@ public class PortalOfCostApplication {
tv.setMoney(totalAmount); tv.setMoney(totalAmount);
//tv.setCreateUser(); //tv.setCreateUser();
tv.setCreateTime(timeString); tv.setCreateTime(timeString);
tv.setCheckUser(user.getName()); //tv.setCheckUser(user.getName());
tv.setCheckTime(timeString); tv.setCheckTime(timeString);
tv.setCusCode(supplier.getCode()); tv.setCusCode(supplier.getCode());
tv.setCusName(supplier.getName()); tv.setCusName(supplier.getName());
tv.setRecId(verificationSubject.getVerificationMainCode()); tv.setRecId(verificationSubject.getVerificationSubCode());
String COST_TO_PAY_API = projectApisProperties.getCostToPay(); String COST_TO_PAY_API = projectApisProperties.getCostToPay();
String json = JsonUtil.objectToJson(tv); String json = JsonUtil.objectToJson(tv);
log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}",verification.getVerificationMainCode(),json); log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}",verificationSubject.getVerificationSubCode(),json);
String rs = HttpUtil.doPost(COST_TO_PAY_API,json,null); String rs = HttpUtil.doPost(COST_TO_PAY_API,json,null);
if(rs==null||!rs.contains("200")){ if(rs==null||!rs.contains("200")){
log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}",json,verification.getVerificationMainCode(),rs); log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}",json,verificationSubject.getVerificationSubCode(),rs);
//核销调度接口事务补偿 //核销调度接口事务补偿
costApplyService.removeById(costApply.getId()); costApplyService.removeById(costApply.getId());
activityService.removeById(activity.getId()); activityService.removeById(activity.getId());

7
src/main/resources/mapper/bms/BmsChannelPointMapper.xml

@ -66,11 +66,14 @@
bms_channel_point.`update_by` </sql> bms_channel_point.`update_by` </sql>
<select id="selectChannelPointList" parameterType="com.qs.serve.modules.bms.entity.BmsChannelPoint" resultMap="bmsChannelPointMap"> <select id="selectChannelPointList" parameterType="com.qs.serve.modules.bms.entity.BmsChannelPoint" resultMap="bmsChannelPointMap">
SELECT <include refid="bmsChannelPointSql"/> SELECT
<include refid="bmsChannelPointSql"/>,
bms_channel.channel_type
FROM `bms_channel_point` `bms_channel_point` FROM `bms_channel_point` `bms_channel_point`
<if test="query.supplierId!=null and query.supplierId!=''"> <if test="query.supplierId!=null and query.supplierId!=''">
LEFT JOIN bms_supplier_channel ON bms_supplier_channel.`channel_id` = `bms_channel_point`.`channel_id` LEFT JOIN bms_supplier_channel ON bms_supplier_channel.`channel_id` = `bms_channel_point`.`channel_id`
</if> </if>
LEFT JOIN bms_channel ON bms_channel.`id` = `bms_channel_point`.`channel_id`
<where> <where>
and `bms_channel_point`.`del_flag` = 0 and `bms_channel_point`.`del_flag` = 0
<if test="query.supplierId!=null and query.supplierId!=''"> <if test="query.supplierId!=null and query.supplierId!=''">
@ -84,7 +87,9 @@
</if> </if>
<if test="query.id != null"> and `bms_channel_point`.`id` = #{query.id}</if> <if test="query.id != null"> and `bms_channel_point`.`id` = #{query.id}</if>
<if test="query.channelId != null"> and `bms_channel_point`.`channel_id` = #{query.channelId}</if> <if test="query.channelId != null"> and `bms_channel_point`.`channel_id` = #{query.channelId}</if>
<if test="query.channelType != null and query.channelType != ''"> and `bms_channel`.`channel_type` like concat('%',#{query.channelType},'%') </if>
<if test="query.channelName != null and query.channelName != ''"> and `bms_channel_point`.`channel_name` like concat('%',#{query.channelName},'%') </if> <if test="query.channelName != null and query.channelName != ''"> and `bms_channel_point`.`channel_name` like concat('%',#{query.channelName},'%') </if>
<if test="query.channelCode != null and query.channelCode != ''"> and `bms_channel_point`.`channel_code` like concat('%',#{query.channelCode},'%') </if>
<if test="query.pointCode != null and query.pointCode != ''"> and `bms_channel_point`.`point_code` like concat('%',#{query.pointCode},'%') </if> <if test="query.pointCode != null and query.pointCode != ''"> and `bms_channel_point`.`point_code` like concat('%',#{query.pointCode},'%') </if>
<if test="query.pointName != null and query.pointName != ''"> and `bms_channel_point`.`point_name` like concat('%',#{query.pointName},'%') </if> <if test="query.pointName != null and query.pointName != ''"> and `bms_channel_point`.`point_name` like concat('%',#{query.pointName},'%') </if>
<if test="query.shopArea != null and query.shopArea != ''"> and `bms_channel_point`.`shop_area` = #{query.shopArea}</if> <if test="query.shopArea != null and query.shopArea != ''"> and `bms_channel_point`.`shop_area` = #{query.shopArea}</if>

401
src/main/resources/mapper/seeyon/CommonCheckMapper.xml

@ -5,82 +5,381 @@
<mapper namespace="com.qs.serve.modules.seeyon.mapper.CommonCheckMapper"> <mapper namespace="com.qs.serve.modules.seeyon.mapper.CommonCheckMapper">
<select id="pageCallbackList" resultType="com.qs.serve.modules.seeyon.entity.vo.TodoVO"> <select id="pageCallbackList" resultType="com.qs.serve.modules.seeyon.entity.vo.TodoVO">
select <if test="query.targetType == 'CostBill'">
select
'CostBill' as target_type, 'CostBill' as target_type,
cost.id as target_id, cost.id as target_id,
cost.`code` as target_code, cost.`code` as target_code,
cost.charge_theme as title, cost.charge_theme as title,
cost.submit_time cost.submit_time as `time`
from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0 from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0
UNION <if test="query.title !=null and query.title != ''">
select and cost.charge_theme like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and cost.code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and cost.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and cost.submit_time &lt;= #{query.endDate}
</if>
</if>
<if test="query.targetType == 'ReleasePolicy'">
select
'ReleasePolicy' as target_type, 'ReleasePolicy' as target_type,
policy.id as target_id, policy.id as target_id,
policy.policy_code as target_code, policy.policy_code as target_code,
policy.title, policy.title,
policy.submit_time policy.submit_time as `time`
from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0 from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0
UNION <if test="query.title !=null and query.title != ''">
select and policy.title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and policy.policy_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and policy.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and policy.submit_time &lt;= #{query.endDate}
</if>
</if>
<if test="query.targetType == 'CheckCost'">
select
'CheckCost' as target_type, 'CheckCost' as target_type,
vtb.id as target_id, vtb.id as target_id,
vtb.`verification_code` as target_code, vtb.`verification_code` as target_code,
act.act_title as title, act.act_title as title,
vtb.create_time as submit_time vtb.create_time as `time`
from vtb_verification vtb from vtb_verification vtb
left join tbs_activity act on vtb.activity_id = act.id left join tbs_activity act on vtb.activity_id = act.id
where vtb.verification_state = 3 and vtb.user_id = #{query.userId} and act.del_flag = 0 and vtb.del_flag = 0 where vtb.verification_state = 3 and vtb.user_id = #{query.userId} and act.del_flag = 0 and vtb.del_flag = 0
UNION <if test="query.title !=null and query.title != ''">
select and act.act_title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and vtb.`verification_code` like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and vtb.create_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and vtb.create_time &lt;= #{query.endDate}
</if>
</if>
<if test="query.targetType == 'budgetAdjust'">
select
'budgetAdjust' as target_type, 'budgetAdjust' as target_type,
budget.id as target_id, budget.id as target_id,
budget.budget_number as target_code, budget.budget_number as target_code,
budget.budget_code as title, budget.budget_code as title,
budget.submit_time budget.submit_time as `time`
from tbs_budget budget from tbs_budget budget
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0 where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0
UNION <if test="query.title !=null and query.title != ''">
select and budget.budget_code like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and budget.budget_number like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and budget.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and budget.submit_time &lt;= #{query.endDate}
</if>
</if>
<if test="query.targetType == 'budgetAdjust2'">
select
'budgetAdjust2' as target_type, 'budgetAdjust2' as target_type,
budget_change.id as target_id, budget_change.id as target_id,
budget_change.change_code as target_code, budget_change.change_code as target_code,
budget_change.budget_title as title, budget_change.budget_title as title,
budget_change.submit_time budget_change.submit_time as `time`
from tbs_budget_change budget_change from tbs_budget_change budget_change
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0 where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0
<if test="query.title !=null and query.title != ''">
and budget_change.budget_title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and budget_change.change_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and budget_change.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and budget_change.submit_time &lt;= #{query.endDate}
</if>
</if>
<if test="query.targetType == null ">
select
'CostBill' as target_type,
cost.id as target_id,
cost.`code` as target_code,
cost.charge_theme as title,
cost.submit_time as `time`
from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0
<if test="query.title !=null and query.title != ''">
and cost.charge_theme like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and cost.code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and cost.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and cost.submit_time &lt;= #{query.endDate}
</if>
UNION
select
'ReleasePolicy' as target_type,
policy.id as target_id,
policy.policy_code as target_code,
policy.title,
policy.submit_time
from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0
<if test="query.title !=null and query.title != ''">
and policy.title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and policy.policy_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and policy.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and policy.submit_time &lt;= #{query.endDate}
</if>
UNION
select
'CheckCost' as target_type,
vtb.id as target_id,
vtb.`verification_code` as target_code,
act.act_title as title,
vtb.create_time as `time`
from vtb_verification vtb
left join tbs_activity act on vtb.activity_id = act.id
where vtb.verification_state = 3 and vtb.user_id = #{query.userId} and act.del_flag = 0 and vtb.del_flag = 0
<if test="query.title !=null and query.title != ''">
and act.act_title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and vtb.`verification_code` like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and vtb.create_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and vtb.create_time &lt;= #{query.endDate}
</if>
UNION
select
'budgetAdjust' as target_type,
budget.id as target_id,
budget.budget_number as target_code,
budget.budget_code as title,
budget.submit_time as `time`
from tbs_budget budget
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0
<if test="query.title !=null and query.title != ''">
and budget.budget_code like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and budget.budget_number like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and budget.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and budget.submit_time &lt;= #{query.endDate}
</if>
UNION
select
'budgetAdjust2' as target_type,
budget_change.id as target_id,
budget_change.change_code as target_code,
budget_change.budget_title as title,
budget_change.submit_time as `time`
from tbs_budget_change budget_change
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0
<if test="query.title !=null and query.title != ''">
and budget_change.budget_title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and budget_change.change_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and budget_change.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and budget_change.submit_time &lt;= #{query.endDate}
</if>
</if>
limit #{query.startRow},#{query.pageSize} limit #{query.startRow},#{query.pageSize}
</select> </select>
<select id="countCallback" resultType="java.lang.Long"> <select id="countCallback" resultType="java.lang.Long">
select count(0) from ( select count(0) from (
select <if test="query.targetType == 'CostBill'">
'CostBill' as target_type, select
cost.id as target_id 'CostBill' as target_type,
from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0 cost.id as target_id
UNION from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0
select <if test="query.title !=null and query.title != ''">
'ReleasePolicy' as target_type, and cost.charge_theme like concat('%',#{query.title},'%')
policy.id as target_id </if>
from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0 <if test="query.targetCode !=null and query.targetCode != ''">
UNION and cost.code like concat('%',#{query.targetCode},'%')
select </if>
'CheckCost' as target_type, <if test="query.startDate !=null">
vtb.id as target_id and cost.submit_time &gt;= #{query.startDate}
from vtb_verification vtb </if>
left join tbs_activity act on vtb.activity_id = act.id <if test="query.endDate !=null">
where vtb.verification_state = 3 and vtb.user_id = #{query.userId} and vtb.del_flag = 0 and cost.submit_time &lt;= #{query.endDate}
UNION </if>
select </if>
'budgetAdjust' as target_type, <if test="query.targetType == 'ReleasePolicy'">
budget.id as target_id select
from tbs_budget budget 'ReleasePolicy' as target_type,
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0 policy.id as target_id
UNION from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0
select <if test="query.title !=null and query.title != ''">
'budgetAdjust2' as target_type, and policy.title like concat('%',#{query.title},'%')
budget_change.id as target_id </if>
from tbs_budget_change budget_change <if test="query.targetCode !=null and query.targetCode != ''">
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0 and policy.policy_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and policy.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and policy.submit_time &lt;= #{query.endDate}
</if>
</if>
<if test="query.targetType == 'CheckCost'">
select
'CheckCost' as target_type,
vtb.id as target_id
from vtb_verification vtb
left join tbs_activity act on vtb.activity_id = act.id
where vtb.verification_state = 3 and vtb.user_id = #{query.userId} and vtb.del_flag = 0
</if>
<if test="query.targetType == 'budgetAdjust'">
select
'budgetAdjust' as target_type,
budget.id as target_id
from tbs_budget budget
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0
</if>
<if test="query.targetType == 'budgetAdjust2'">
select
'budgetAdjust2' as target_type,
budget_change.id as target_id
from tbs_budget_change budget_change
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0
</if>
<if test="query.targetType == null ">
select
'CostBill' as target_type,
cost.id as target_id
from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0
<if test="query.title !=null and query.title != ''">
and cost.charge_theme like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and cost.code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and cost.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and cost.submit_time &lt;= #{query.endDate}
</if>
union
select
'ReleasePolicy' as target_type,
policy.id as target_id
from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0
<if test="query.title !=null and query.title != ''">
and policy.title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and policy.policy_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and policy.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and policy.submit_time &lt;= #{query.endDate}
</if>
union
select
'CheckCost' as target_type,
vtb.id as target_id
from vtb_verification vtb
left join tbs_activity act on vtb.activity_id = act.id
where vtb.verification_state = 3 and vtb.user_id = #{query.userId} and vtb.del_flag = 0
<if test="query.title !=null and query.title != ''">
and act.act_title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and vtb.`verification_code` like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and vtb.create_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and vtb.create_time &lt;= #{query.endDate}
</if>
union
select
'budgetAdjust' as target_type,
budget.id as target_id
from tbs_budget budget
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0
<if test="query.title !=null and query.title != ''">
and budget.budget_code like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and budget.budget_number like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and budget.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and budget.submit_time &lt;= #{query.endDate}
</if>
union
select
'budgetAdjust2' as target_type,
budget_change.id as target_id
from tbs_budget_change budget_change
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0
<if test="query.title !=null and query.title != ''">
and budget_change.budget_title like concat('%',#{query.title},'%')
</if>
<if test="query.targetCode !=null and query.targetCode != ''">
and budget_change.change_code like concat('%',#{query.targetCode},'%')
</if>
<if test="query.startDate !=null">
and budget_change.submit_time &gt;= #{query.startDate}
</if>
<if test="query.endDate !=null">
and budget_change.submit_time &lt;= #{query.endDate}
</if>
</if>
) tmp_tb ) tmp_tb
</select> </select>

5
src/main/resources/mapper/tbs/TbsBudgetMapper.xml

@ -79,8 +79,9 @@
#{selectId} #{selectId}
</foreach> </foreach>
</if> </if>
<if test="query.budgetNumber !=null "> and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%')</if> <if test="query.budgetNumber !=null and query.budgetNumber !='' "> and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%')</if>
<if test="query.budgetState !=null "> and `tbs_budget`.`budget_state` = #{query.budgetState}</if> <if test="query.budgetState !=null "> and `tbs_budget`.`budget_state` = #{query.budgetState}</if>
<if test="query.budgetCheckState !=null "> and `tbs_budget`.`budget_check_state` = #{query.budgetCheckState}</if>
<if test="query.budgetCode != null and query.budgetCode != ''"> and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')</if> <if test="query.budgetCode != null and query.budgetCode != ''"> and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')</if>
<if test="query.subjectValue != null and query.subjectValue != ''"> <if test="query.subjectValue != null and query.subjectValue != ''">
and ( and (
@ -98,7 +99,7 @@
</if> </if>
<if test="query.scheduleId != null"> and `tbs_budget`.`schedule_id` = #{query.scheduleId}</if> <if test="query.scheduleId != null"> and `tbs_budget`.`schedule_id` = #{query.scheduleId}</if>
<if test="query.scheduleCode != null and query.scheduleCode != ''"> and `tbs_budget`.`schedule_code` = #{query.scheduleCode}</if> <if test="query.scheduleCode != null and query.scheduleCode != ''"> and `tbs_budget`.`schedule_code` = #{query.scheduleCode}</if>
<if test="query.scheduleName != null and query.scheduleName != ''"> and `tbs_budget`.`schedule_name` = #{query.scheduleName}</if> <if test="query.scheduleName != null and query.scheduleName != ''"> and `tbs_budget`.`schedule_name` like concat('%',#{query.scheduleName},'%') </if>
<if test="query.brandValue != null and query.brandValue != ''"> <if test="query.brandValue != null and query.brandValue != ''">
and ( and (
`tbs_budget_condition`.`target_type` = 'brand' `tbs_budget_condition`.`target_type` = 'brand'

2
src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

@ -51,6 +51,7 @@
tbs_cost_apply.`supplier_biz_region_second_name`, tbs_cost_apply.`supplier_biz_region_second_name`,
tbs_cost_apply.`supplier_biz_region_third_name`, tbs_cost_apply.`supplier_biz_region_third_name`,
tbs_cost_apply.`charge_state`, tbs_cost_apply.`charge_state`,
tbs_cost_apply.`check_state`,
tbs_cost_apply.`submit_time`, tbs_cost_apply.`submit_time`,
tbs_cost_apply.`pass_time`, tbs_cost_apply.`pass_time`,
tbs_cost_apply.`remark`, tbs_cost_apply.`remark`,
@ -142,6 +143,7 @@
<sql id="baseWhere4CostApply"> <sql id="baseWhere4CostApply">
<if test="query.checkState != null"> and `tbs_cost_apply`.`check_state` = #{query.checkState}</if>
<if test="query.id != null"> and `tbs_cost_apply`.`id` = #{query.id}</if> <if test="query.id != null"> and `tbs_cost_apply`.`id` = #{query.id}</if>
<if test="query.code != null and query.code != ''"> and `tbs_cost_apply`.`code` like concat('%', #{query.code},'%')</if> <if test="query.code != null and query.code != ''"> and `tbs_cost_apply`.`code` like concat('%', #{query.code},'%')</if>
<if test="query.chargeTheme != null and query.chargeTheme != ''"> and `tbs_cost_apply`.`charge_theme` like concat('%', #{query.chargeTheme},'%')</if> <if test="query.chargeTheme != null and query.chargeTheme != ''"> and `tbs_cost_apply`.`charge_theme` like concat('%', #{query.chargeTheme},'%')</if>

Loading…
Cancel
Save