Browse Source

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

v1.0
15989082884@163.com 2 years ago
parent
commit
2004be8864
  1. 5
      src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java
  2. 10
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java
  3. 2
      src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java
  4. 3
      src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitFlowServiceImpl.java
  5. 6
      src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java
  6. 4
      src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java
  7. 25
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java
  8. 14
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java
  9. 2
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  10. 4
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsSkuExportVo.java
  11. 11
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  12. 86
      src/main/java/com/qs/serve/modules/sys/entity/SysDeleteLog.java
  13. 14
      src/main/java/com/qs/serve/modules/sys/mapper/SysDeleteLogMapper.java
  14. 21
      src/main/java/com/qs/serve/modules/sys/service/SysDeleteLogService.java
  15. 117
      src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java
  16. 1
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  17. 2
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java
  18. 64
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java
  19. 215
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  20. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java
  21. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
  22. 1
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java
  23. 18
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActNotMatchAmtCenterGoods.java
  24. 20
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActivityAmtCheck.java
  25. 29
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostErrorBudgetDTO.java
  26. 23
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityAmtCheckMapper.java
  27. 26
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityCenterGoodsMapper.java
  28. 27
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplyMapper.java
  29. 106
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplyRemoveMapper.java
  30. 8
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterGoodsService.java
  31. 6
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityService.java
  32. 5
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterGoodsServiceImpl.java
  33. 79
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
  34. 20
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  35. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsDealErrorApplication.java
  36. 5
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  37. 2
      src/main/java/com/qs/serve/modules/vtb/common/VtbVerificationState.java
  38. 7
      src/main/resources/mapper/bir/BirBaseActivityMapper.xml
  39. 29
      src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

5
src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java

@ -38,6 +38,7 @@ public class UnifiedExceptionHandler {
@ResponseBody @ResponseBody
public R handleBindException(BusinessException e,HttpServletRequest request) { public R handleBindException(BusinessException e,HttpServletRequest request) {
log.warn("自定义异常触发【{},{}】,请求地址:{}",e.getCode(),e.getMessage(),request.getRequestURI()); log.warn("自定义异常触发【{},{}】,请求地址:{}",e.getCode(),e.getMessage(),request.getRequestURI());
e.printStackTrace();
return new R(e.getCode(),e.getMessage()); return new R(e.getCode(),e.getMessage());
} }
@ -46,6 +47,7 @@ public class UnifiedExceptionHandler {
public R handleBindException(NullPointerException e,HttpServletRequest request) { public R handleBindException(NullPointerException e,HttpServletRequest request) {
e.printStackTrace(); e.printStackTrace();
log.error("空指针【{}】,请求地址:{}",e.getMessage(),request.getRequestURI()); log.error("空指针【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
e.printStackTrace();
return R.error("数据不存在或被移除"); return R.error("数据不存在或被移除");
} }
@ -104,6 +106,7 @@ public class UnifiedExceptionHandler {
@ResponseBody @ResponseBody
public R handleDuplicateKeyException(DuplicateKeyException e,HttpServletRequest request) { public R handleDuplicateKeyException(DuplicateKeyException e,HttpServletRequest request) {
log.error("限制重复数据【{}】,请求地址:{}",e.getMessage(),request.getRequestURI()); log.error("限制重复数据【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
e.printStackTrace();
return R.error("限制重复数据,请联系管理员"); return R.error("限制重复数据,请联系管理员");
} }
@ -120,6 +123,7 @@ public class UnifiedExceptionHandler {
@ResponseBody @ResponseBody
public R handleSqlIntegrityException(Exception e,HttpServletRequest request) { public R handleSqlIntegrityException(Exception e,HttpServletRequest request) {
log.warn("数据库拦截【{}】,请求地址:{}",e.getMessage(),request.getRequestURI()); log.warn("数据库拦截【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
e.printStackTrace();
return new R(500,"数据库拦截,请联系管理员"); return new R(500,"数据库拦截,请联系管理员");
} }
@ -138,6 +142,7 @@ public class UnifiedExceptionHandler {
@ResponseBody @ResponseBody
public R handleException(Exception e,HttpServletRequest request) { public R handleException(Exception e,HttpServletRequest request) {
log.error("Servlet异常\n请求地址:{},异常类型:{}\n异常信息:{}\n异常体:",request.getRequestURI(),e.getClass().getSimpleName(),e.getMessage(),e); log.error("Servlet异常\n请求地址:{},异常类型:{}\n异常信息:{}\n异常体:",request.getRequestURI(),e.getClass().getSimpleName(),e.getMessage(),e);
e.printStackTrace();
if(DevEnvironmentConfig.isDev()){return R.error(e.getMessage());} if(DevEnvironmentConfig.isDev()){return R.error(e.getMessage());}
return R.error(); return R.error();
} }

10
src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java

@ -45,17 +45,15 @@ public class BazVisitInstanceController {
*/ */
@GetMapping("/page") @GetMapping("/page")
public R<PageVo<BazVisitInstance>> getPage(BazVisitInstanceSo param){ public R<PageVo<BazVisitInstance>> getPage(BazVisitInstanceSo param){
BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance()); BazVisitInstance query = CopierUtil.copy(param,new BazVisitInstance());
LambdaQueryWrapper<BazVisitInstance> lqw = new LambdaQueryWrapper<>(entity);
if(param.getQueryStartDate()!=null){ if(param.getQueryStartDate()!=null){
lqw.ge(BazVisitInstance::getCreateTime,param.getQueryStartDate()); query.setQueryEndDate(param.getQueryStartDate().atStartOfDay());
} }
if(param.getQueryEndDate()!=null){ if(param.getQueryEndDate()!=null){
lqw.le(BazVisitInstance::getCreateTime,param.getQueryEndDate().atTime(23,59,59)); query.setQueryEndDate(param.getQueryEndDate().atTime(23,59,59));
} }
PageUtil.startPage(); PageUtil.startPage();
lqw.orderByDesc(BazVisitInstance::getCreateTime); List<BazVisitInstance> list = bazVisitInstanceService.selectBazVisitInstanceList(query);
List<BazVisitInstance> list = bazVisitInstanceService.list(lqw);
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }

2
src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java

@ -60,6 +60,8 @@ public class BazVisitInstanceSo implements Serializable {
/** 遗失定位标识 */ /** 遗失定位标识 */
private Integer missLocalFlag; private Integer missLocalFlag;
private String summary;
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate queryStartDate; private LocalDate queryStartDate;

3
src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitFlowServiceImpl.java

@ -40,6 +40,9 @@ public class BazVisitFlowServiceImpl extends ServiceImpl<BazVisitFlowMapper,BazV
LambdaQueryWrapper<BazVisitFlow> lqwErrCount = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BazVisitFlow> lqwErrCount = new LambdaQueryWrapper<>();
lqwErrCount.eq(BazVisitFlow::getVisitId,bazVisit.getId()); lqwErrCount.eq(BazVisitFlow::getVisitId,bazVisit.getId());
lqwErrCount.eq(BazVisitFlow::getFlowBizType,param.getFlowBizType()); lqwErrCount.eq(BazVisitFlow::getFlowBizType,param.getFlowBizType());
if(id!=null){
lqwErrCount.ne(BazVisitFlow::getId,id);
}
if(this.count(lqwErrCount)>0){ if(this.count(lqwErrCount)>0){
Assert.throwEx("流程中业务类型不能重复"); Assert.throwEx("流程中业务类型不能重复");
} }

6
src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java

@ -17,5 +17,11 @@ public interface BirBaseActivityMapper extends BaseMapper<BirBaseActivity> {
List<TbsActivity> selectByBirActivity(@Param("startDate") LocalDate startDate, @Param("endDate")LocalDate endDate); List<TbsActivity> selectByBirActivity(@Param("startDate") LocalDate startDate, @Param("endDate")LocalDate endDate);
/**
* 作废的异常的
* @return
*/
void deleteErrorBir();
} }

4
src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java

@ -12,6 +12,7 @@ import com.qs.serve.modules.bir.entity.BirRemoveId;
import com.qs.serve.modules.bir.entity.dto.BirCenterGoodSplitDTO; import com.qs.serve.modules.bir.entity.dto.BirCenterGoodSplitDTO;
import com.qs.serve.modules.bir.entity.so.BirMonthCusCenterSo; import com.qs.serve.modules.bir.entity.so.BirMonthCusCenterSo;
import com.qs.serve.modules.bir.entity.vo.BirActivityCenterGoodsMonthVo; import com.qs.serve.modules.bir.entity.vo.BirActivityCenterGoodsMonthVo;
import com.qs.serve.modules.bir.mapper.BirBaseActivityMapper;
import com.qs.serve.modules.bir.mapper.BirRemoveIdMapper; import com.qs.serve.modules.bir.mapper.BirRemoveIdMapper;
import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.entity.BmsCostCenter;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
@ -73,6 +74,8 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
private final TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper; private final TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper;
private final BirBaseActivityMapper birBaseActivityMapper;
private final BmsSupplierMapper bmsSupplierMapper; private final BmsSupplierMapper bmsSupplierMapper;
private final BirRemoveIdMapper birRemoveIdMapper; private final BirRemoveIdMapper birRemoveIdMapper;
@ -87,6 +90,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(startDate,endDate,null); List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(startDate,endDate,null);
//异常状态的费用申请,导致的Bir //异常状态的费用申请,导致的Bir
birBaseActivityMapper.deleteErrorBir();
List<BirActivityCenterGoods> removeErrorBirList = this.baseMapper.selectErrorBir(); List<BirActivityCenterGoods> removeErrorBirList = this.baseMapper.selectErrorBir();
List<Long> errorActIds = removeErrorBirList.stream().map(BirActivityCenterGoods::getActivityId).distinct().collect(Collectors.toList()); List<Long> errorActIds = removeErrorBirList.stream().map(BirActivityCenterGoods::getActivityId).distinct().collect(Collectors.toList());
this.buildRemoveRecode(errorActIds); this.buildRemoveRecode(errorActIds);

25
src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java

@ -35,10 +35,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -89,7 +86,7 @@ public class BmsChannelPointController {
} }
if(param.getExportNum() != null && param.getExportNum()!= 0 if(param.getExportNum() != null && param.getExportNum()!= 0
&& param.getStartNum() != null && param.getStartNum()!= 0){ && param.getStartNum() != null ){
lqw.last(" limit "+param.getStartNum() + "," + param.getExportNum()); lqw.last(" limit "+param.getStartNum() + "," + param.getExportNum());
} }
@ -337,9 +334,9 @@ public class BmsChannelPointController {
} }
}); });
List<BmsChannelPoint4ExcelBo> saveList = param.stream().filter(a->a.getType().equals("1")).collect(Collectors.toList()); List<BmsChannelPoint4ExcelBo> saveList = param.stream().filter(a-> "1".equals(a.getType())).collect(Collectors.toList());
List<BmsChannelPoint4ExcelBo> updateList = param.stream().filter(a->a.getType().equals("2")).collect(Collectors.toList()); List<BmsChannelPoint4ExcelBo> updateList = param.stream().filter(a-> "2".equals(a.getType())).collect(Collectors.toList());
List<BmsChannelPoint4ExcelBo> deleteList = param.stream().filter(a->a.getType().equals("3")).collect(Collectors.toList()); List<BmsChannelPoint4ExcelBo> deleteList = param.stream().filter(a-> "3".equals(a.getType())).collect(Collectors.toList());
/** ------------------------------- 查渠道列表 ------------------------------------------------ */ /** ------------------------------- 查渠道列表 ------------------------------------------------ */
List<String> channelCodes = new ArrayList<>(); List<String> channelCodes = new ArrayList<>();
@ -363,12 +360,16 @@ public class BmsChannelPointController {
}); });
} }
} }
Map<String,BmsChannel> codeToChannaledId = channelList.stream().collect(Collectors.toMap(BmsChannel::getChannelCode, a->a)); //有重复的key这个方法会报错
//Map<String,BmsChannel> codeToChannaledId = channelList.stream().collect(Collectors.toMap(BmsChannel::getChannelCode, a->a));
Map<String,BmsChannel> codeToChannaledId = channelList.stream()
.filter(a->a.getChannelCode()!=null)
.collect(Collectors.toMap(BmsChannel::getChannelCode, p -> p, (o, n) -> n));
/** ----------------------------------------------------------------------------------- */ /** ----------------------------------------------------------------------------------- */
/** ------------------------------- 查行政区域列表 ------------------------------------------------ */ /** ------------------------------- 查行政区域列表 ------------------------------------------------ */
List<String> bizRegionCodes = new ArrayList<>(); List<String> bizRegionCodes = new ArrayList<>();
bizRegionCodes.addAll(saveList.stream().filter(a->a.getBizRegionCode()!=null).map(a->a.getBizRegionCode()).collect(Collectors.toList())); bizRegionCodes.addAll(saveList.stream().map(BmsChannelPoint4ExcelBo::getBizRegionCode).filter(Objects::nonNull).collect(Collectors.toList()));
bizRegionCodes.addAll(updateList.stream().filter(a->a.getBizRegionCode()!=null).map(a->a.getBizRegionCode()).collect(Collectors.toList())); bizRegionCodes.addAll(updateList.stream().map(BmsChannelPoint4ExcelBo::getBizRegionCode).filter(Objects::nonNull).collect(Collectors.toList()));
bizRegionCodes = bizRegionCodes.stream().distinct().collect(Collectors.toList()); bizRegionCodes = bizRegionCodes.stream().distinct().collect(Collectors.toList());
List<BmsRegion2> region2List = new ArrayList<>(); List<BmsRegion2> region2List = new ArrayList<>();
if(bizRegionCodes.size()>0){ if(bizRegionCodes.size()>0){
@ -463,7 +464,7 @@ public class BmsChannelPointController {
/** ----------------------------------------------------------------------------------- */ /** ----------------------------------------------------------------------------------- */
/** ------------------------------- 返回错误 ------------------------------------------- */ /** ------------------------------- 返回错误 ------------------------------------------- */
if(param.stream().filter(a->a.getErrorInfo().length()>0).count()>0) { if(param.stream().filter(a->a.getErrorInfo()!=null&&a.getErrorInfo().length()>0).count()>0) {
return R.ok(param, "导入失败,请打开EXCEL查询错误详情!"); return R.ok(param, "导入失败,请打开EXCEL查询错误详情!");
} }

14
src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java

@ -230,6 +230,7 @@ public class GoodsSkuController {
Map<String,List<GoodsSkuImportBo.SkuItem>> skuItemList = param.getSkuList().stream().collect(Collectors.groupingBy(GoodsSkuImportBo.SkuItem::getOpt)); Map<String,List<GoodsSkuImportBo.SkuItem>> skuItemList = param.getSkuList().stream().collect(Collectors.groupingBy(GoodsSkuImportBo.SkuItem::getOpt));
//处理删除 //处理删除
List<GoodsSkuImportBo.SkuItem> delList = skuItemList.get(DELETE); List<GoodsSkuImportBo.SkuItem> delList = skuItemList.get(DELETE);
if(delList!=null){
List<String> delSkuCodes = delList.stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).collect(Collectors.toList()); List<String> delSkuCodes = delList.stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).collect(Collectors.toList());
QueryWrapper lqw1 = new QueryWrapper<>(); QueryWrapper lqw1 = new QueryWrapper<>();
lqw1.eq("target_type", TbsGoodsType.sku.name()); lqw1.eq("target_type", TbsGoodsType.sku.name());
@ -269,6 +270,9 @@ public class GoodsSkuController {
delLqw.in(GoodsSku::getSkuCode,skuCodeToDelList); delLqw.in(GoodsSku::getSkuCode,skuCodeToDelList);
goodsSkuService.remove(delLqw); goodsSkuService.remove(delLqw);
} }
}
//处理更新和新增 //处理更新和新增
List<String> skuCodes = param.getSkuList().stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).distinct().collect(Collectors.toList()); List<String> skuCodes = param.getSkuList().stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).distinct().collect(Collectors.toList());
@ -337,20 +341,30 @@ public class GoodsSkuController {
} }
private GoodsSku selectSku( List<GoodsSku> skuList, String skuCode){ private GoodsSku selectSku( List<GoodsSku> skuList, String skuCode){
if(skuCode!=null){
for (GoodsSku goodsSku : skuList) { for (GoodsSku goodsSku : skuList) {
if(goodsSku.getSkuCode()==null){
continue;
}
if(goodsSku.getSkuCode().equals(skuCode)){ if(goodsSku.getSkuCode().equals(skuCode)){
return goodsSku; return goodsSku;
} }
} }
}
return null; return null;
} }
private GoodsSpu selectSpu( List<GoodsSpu> spuList, String skuCode){ private GoodsSpu selectSpu( List<GoodsSpu> spuList, String skuCode){
if(skuCode!=null){
for (GoodsSpu goodsSpu : spuList) { for (GoodsSpu goodsSpu : spuList) {
if(goodsSpu.getSkuCode()==null){
continue;
}
if(goodsSpu.getSkuCode().equals(skuCode)){ if(goodsSpu.getSkuCode().equals(skuCode)){
return goodsSpu; return goodsSpu;
} }
} }
}
return null; return null;
} }

2
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -416,7 +416,7 @@ public class GoodsSpuController {
} }
if(isError){ if(isError){
return R.error("数据异常",param); return R.ok(param);
} }
List<Long> rmIds = new ArrayList<>(); List<Long> rmIds = new ArrayList<>();

4
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsSkuExportVo.java

@ -36,8 +36,10 @@ public class GoodsSkuExportVo implements Serializable {
private String skuName; private String skuName;
private String name;
/** spu编码 */ /** spu编码 */
private Long spuCode; private String spuCode;
/** 销售价格 */ /** 销售价格 */
private BigDecimal salesPrice; private BigDecimal salesPrice;

11
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -416,6 +416,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setSpecValues(shoppingCart.getSpecInfo()); orderItem.setSpecValues(shoppingCart.getSpecInfo());
orderItem.setSpuCode(shoppingCart.getSpuCode()); orderItem.setSpuCode(shoppingCart.getSpuCode());
if(goodsSku!=null){ if(goodsSku!=null){
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
orderItem.setSpuTitle(goodsSpu.getName());
orderItem.setSkuTitle(goodsSpu.getSkuName());
log.warn("shoppingCart json =>"+JsonUtil.objectToJson(shoppingCart)); log.warn("shoppingCart json =>"+JsonUtil.objectToJson(shoppingCart));
orderItem.setSkuTitle(goodsSku.getSkuName()); orderItem.setSkuTitle(goodsSku.getSkuName());
orderItem.setMarketPrice(goodsSku.getMarketPrice()); orderItem.setMarketPrice(goodsSku.getMarketPrice());
@ -525,9 +529,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
OmsOrder omsOrder = super.getById(id); OmsOrder omsOrder = super.getById(id);
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId); SysUser sysUser = sysUserService.getById(userId);
if(omsOrder==null || !omsOrder.getUserId().equals(userId)){ if(omsOrder==null){
Assert.throwEx("订单不存在或被移除"); Assert.throwEx("订单不存在或被移除");
} }
if(!omsOrder.getUserId().equals(userId)){
Assert.throwEx("非制单人无法下单");
}
this.checkMsOrderStatus(omsOrder); this.checkMsOrderStatus(omsOrder);
if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){ if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){
Assert.throwEx("订单状态不支持下单"); Assert.throwEx("订单状态不支持下单");
@ -626,6 +633,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
seeYonRequestBaseService.postBase(ERP_ORDER_CREATE,xltOrderDTO,"创建订单:"+xltOrder.getDingDanHao()); seeYonRequestBaseService.postBase(ERP_ORDER_CREATE,xltOrderDTO,"创建订单:"+xltOrder.getDingDanHao());
//更新订单 //更新订单
omsOrder.setStatus(1); omsOrder.setStatus(1);
omsOrder.setCheckTime(LocalDateTime.now());
omsOrder.setCheckUserId(AuthContextUtils.getSysUserId());
this.updateById(omsOrder); this.updateById(omsOrder);
} }

86
src/main/java/com/qs/serve/modules/sys/entity/SysDeleteLog.java

@ -0,0 +1,86 @@
package com.qs.serve.modules.sys.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-12-08
*/
@Data
@TableName("sys_delete_log")
public class SysDeleteLog implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 删除批次 */
private String batchCode;
/** 选项类型 */
@Length(max = 50,message = "选项类型长度不能超过50字")
private String targetTable;
/** 目标id */
@Length(max = 100,message = "目标id长度不能超过100字")
private String targetId;
/** 目标编码 */
@Length(max = 100,message = "目标编码长度不能超过100字")
private String targetCode;
/** 备注 */
@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;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@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;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

14
src/main/java/com/qs/serve/modules/sys/mapper/SysDeleteLogMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.sys.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.sys.entity.SysDeleteLog;
/**
* 删除日志 Mapper
* @author YenHex
* @date 2023-12-08
*/
public interface SysDeleteLogMapper extends BaseMapper<SysDeleteLog> {
}

21
src/main/java/com/qs/serve/modules/sys/service/SysDeleteLogService.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.sys.entity.SysDeleteLog;
/**
* 删除日志 服务接口
* @author YenHex
* @date 2023-12-08
*/
public interface SysDeleteLogService extends IService<SysDeleteLog> {
/**
* 删除费用申请相关所有数据
* @param costApplyId
* @param remark
*/
void deleteCostApply(Long costApplyId,String remark);
}

117
src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java

@ -0,0 +1,117 @@
package com.qs.serve.modules.sys.service.impl;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.IdUtil;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.TbsCostTodo;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyRemoveMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostTodoMapper;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.sys.entity.SysDeleteLog;
import com.qs.serve.modules.sys.service.SysDeleteLogService;
import com.qs.serve.modules.sys.mapper.SysDeleteLogMapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* 删除日志 服务实现类
* @author YenHex
* @since 2023-12-08
*/
@Slf4j
@Service
@AllArgsConstructor
public class SysDeleteLogServiceImpl extends ServiceImpl<SysDeleteLogMapper,SysDeleteLog> implements SysDeleteLogService {
private final TbsCostApplyRemoveMapper tbsCostApplyRemoveMapper;
private final TbsCostApplyMapper tbsCostApplyMapper;
private final VtbVerificationMapper verificationMapper;
private final TbsCostTodoMapper tbsCostTodoMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteCostApply(Long costApplyId,String remark) {
TbsCostApply costApply = tbsCostApplyMapper.selectById(costApplyId);
String batchCode = System.currentTimeMillis()+"";
List<SysDeleteLog> deleteLogList = new ArrayList<>();
if(costApply!=null){
SysDeleteLog deleteLog = new SysDeleteLog();
deleteLog.setBatchCode(batchCode);
deleteLog.setTargetTable("tbs_cost_apply");
deleteLog.setTargetId(costApply.getId()+"");
deleteLog.setTargetCode(costApply.getCode());
deleteLog.setRemark(remark);
deleteLogList.add(deleteLog);
}
tbsCostApplyRemoveMapper.tbs_cost_apply(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_center(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_center_goods(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_goods(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_channel(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_channel_point(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_pay_condition(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_slotting_fee(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_subject(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity_subject_yarn(costApplyId);
//记录进行中的核销
LambdaQueryWrapper<VtbVerification> verificationLqw = new LambdaQueryWrapper<>();
verificationLqw.eq(VtbVerification::getCostApplyId,costApplyId);
List<VtbVerification> vtbVerificationList = verificationMapper.selectList(verificationLqw);
for (VtbVerification verification : vtbVerificationList) {
SysDeleteLog deleteLog = new SysDeleteLog();
deleteLog.setBatchCode(batchCode);
deleteLog.setTargetTable("vtb_verification");
deleteLog.setTargetId(verification.getId()+"");
deleteLog.setTargetCode(verification.getVerificationCode());
deleteLog.setRemark(remark);
deleteLogList.add(deleteLog);
}
tbsCostApplyRemoveMapper.vtb_verification(costApplyId);
tbsCostApplyRemoveMapper.pay_payment(costApplyId);
tbsCostApplyRemoveMapper.pay_payment_item(costApplyId);
tbsCostApplyRemoveMapper.tbs_budget_log(costApplyId);
tbsCostApplyRemoveMapper.tbs_budget_cost_item(costApplyId);
tbsCostApplyRemoveMapper.tbs_budget_cost_item_split(costApplyId);
tbsCostApplyRemoveMapper.vtb_fund_flow(costApplyId);
tbsCostApplyRemoveMapper.bir_activity_center_goods(costApplyId);
tbsCostApplyRemoveMapper.bir_base_activity(costApplyId);
tbsCostApplyRemoveMapper.bir_payment_item(costApplyId);
tbsCostApplyRemoveMapper.vtb_verification_subject(costApplyId);
tbsCostApplyRemoveMapper.vtb_verification_yard_item(costApplyId);
tbsCostApplyRemoveMapper.vtb_verification_yard_center_item(costApplyId);
tbsCostApplyRemoveMapper.vtb_verification_subject_center(costApplyId);
tbsCostApplyRemoveMapper.vtb_verification_channel_point(costApplyId);
tbsCostApplyRemoveMapper.vtb_verification_channel(costApplyId);
tbsCostApplyRemoveMapper.tbs_cost_contract(costApplyId);
tbsCostApplyRemoveMapper.tbs_cost_percent(costApplyId);
//记录进行中的协议条款
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>();
todoLqw.eq(TbsCostTodo::getCostApplyId,costApplyId);
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw);
for (TbsCostTodo costTodo : costTodoList) {
SysDeleteLog deleteLog = new SysDeleteLog();
deleteLog.setBatchCode(batchCode);
deleteLog.setTargetTable("tbs_cost_todo");
deleteLog.setTargetId(costTodo.getId()+"");
deleteLog.setTargetCode(costTodo.getTodoCode());
deleteLog.setRemark(remark);
deleteLogList.add(deleteLog);
}
tbsCostApplyRemoveMapper.tbs_cost_todo(costApplyId);
this.saveBatch(deleteLogList);
}
}

1
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java

@ -542,5 +542,6 @@ public class TbsActivityController {
} }
} }

2
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java

@ -146,7 +146,7 @@ public class TbsActivityTemplateController {
@PostMapping("/save") @PostMapping("/save")
@SysLog(module = SystemModule.Budget, title = "活动模板", biz = BizType.INSERT) @SysLog(module = SystemModule.Budget, title = "活动模板", biz = BizType.INSERT)
@PreAuthorize("hasRole('tbs:activityTemplate:insert')") @PreAuthorize("hasRole('tbs:activityTemplate:insert')")
public R<?> save(@RequestBody @Valid TbsActivityTemplateBo param){ public R<?> save(@RequestBody TbsActivityTemplateBo param){
if(param.getId()!=null){ if(param.getId()!=null){
return R.error("id is not null"); return R.error("id is not null");
} }

64
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java

@ -21,6 +21,7 @@ import com.qs.serve.modules.tbs.service.TbsBudgetService;
import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.tbs.entity.so.TbsBudgetLogSo; import com.qs.serve.modules.tbs.entity.so.TbsBudgetLogSo;
@ -117,16 +118,57 @@ public class TbsBudgetLogController {
lqw.eq(TbsScheduleItemBudget::getBudgetId,budgetId); lqw.eq(TbsScheduleItemBudget::getBudgetId,budgetId);
lqw.eq(TbsScheduleItemBudget::getScheduleItemId,itemId); lqw.eq(TbsScheduleItemBudget::getScheduleItemId,itemId);
List<TbsScheduleItemBudget> tbsScheduleItemBudgetList = tbsScheduleItemBudgetService.list(lqw); List<TbsScheduleItemBudget> tbsScheduleItemBudgetList = tbsScheduleItemBudgetService.list(lqw);
TbsScheduleItemBudget rs = this.getItemBudget(budgetId, tbsScheduleItemBudgetList);
return R.ok(rs);
}
/**
* 获取统计金额返回预算列表
* @param budgetId
* @return
*/
@GetMapping("/getItemListAmount")
public R<List<TbsScheduleItemBudget>> getItemListAmount(Long budgetId){
LambdaQueryWrapper<TbsScheduleItemBudget> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsScheduleItemBudget::getBudgetId,budgetId);
List<TbsScheduleItemBudget> tbsScheduleItemBudgetList = tbsScheduleItemBudgetService.list(lqw);
Map<Long,List<TbsScheduleItemBudget>> tbsScheduleItemBudgetListMap = tbsScheduleItemBudgetList.stream()
.collect(Collectors.groupingBy(TbsScheduleItemBudget::getScheduleItemId));
List<TbsScheduleItemBudget> resultList = new ArrayList<>();
for (Long schItemId : tbsScheduleItemBudgetListMap.keySet()) {
tbsScheduleItemBudgetList = tbsScheduleItemBudgetListMap.get(schItemId);
TbsScheduleItemBudget rs = this.getItemBudget(budgetId, tbsScheduleItemBudgetList);
resultList.add(rs);
}
return R.ok(resultList);
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Budget, title = "预算日志", biz = BizType.QUERY)
public R<TbsBudgetLog> getById(@PathVariable("id") String id){
TbsBudgetLog tbsBudgetLog = tbsBudgetLogService.getById(id);
return R.ok(tbsBudgetLog);
}
@Nullable
private TbsScheduleItemBudget getItemBudget(Long budgetId, List<TbsScheduleItemBudget> tbsScheduleItemBudgetList) {
Optional<TbsScheduleItemBudget> optional = tbsScheduleItemBudgetList.stream().findFirst(); Optional<TbsScheduleItemBudget> optional = tbsScheduleItemBudgetList.stream().findFirst();
TbsScheduleItemBudget rs = null;
if(optional.isPresent()){ if(optional.isPresent()){
TbsScheduleItemBudget a = optional.get(); TbsScheduleItemBudget a = optional.get();
LambdaQueryWrapper<TbsBudgetLog> lqwLog = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsBudgetLog> lqwLog = new LambdaQueryWrapper<>();
lqwLog.eq(TbsBudgetLog::getScheduleItemBudgetId,a.getId()); lqwLog.eq(TbsBudgetLog::getScheduleItemBudgetId,a.getId());
lqwLog.eq(TbsBudgetLog::getBudgetId,budgetId); lqwLog.eq(TbsBudgetLog::getBudgetId, budgetId);
List<TbsBudgetLog> tbsBudgetLogList = budgetLogService.list(lqwLog); List<TbsBudgetLog> tbsBudgetLogList = budgetLogService.list(lqwLog);
// a.setBudgetLogList(tbsBudgetLogList);
BigDecimal finalBudgetAmount = tbsBudgetLogList.stream().filter(b-> BudgetLogOptFlag.getFinalBudgetOptFlag().contains(b.getOptType())).map(TbsBudgetLog::getAmount) BigDecimal finalBudgetAmount = tbsBudgetLogList.stream().filter(b-> BudgetLogOptFlag.getFinalBudgetOptFlag().contains(b.getOptType())).map(TbsBudgetLog::getAmount)
.reduce(BigDecimal.ZERO,BigDecimal::add); .reduce(BigDecimal.ZERO,BigDecimal::add);
@ -139,21 +181,9 @@ public class TbsBudgetLogController {
a.setFinalBudgetAmount(finalBudgetAmount); a.setFinalBudgetAmount(finalBudgetAmount);
a.setUnUsedBudgetAmount(unUsedBudgetAmount); a.setUnUsedBudgetAmount(unUsedBudgetAmount);
a.setUsedBudgetAmount(usedBudgetAmount); a.setUsedBudgetAmount(usedBudgetAmount);
return R.ok(a); rs = a;
} }
return R.ok(); return rs;
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Budget, title = "预算日志", biz = BizType.QUERY)
public R<TbsBudgetLog> getById(@PathVariable("id") String id){
TbsBudgetLog tbsBudgetLog = tbsBudgetLogService.getById(id);
return R.ok(tbsBudgetLog);
} }
} }

215
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -20,6 +20,7 @@ import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysDeleteLogService;
import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsCostApplyState;
@ -28,12 +29,12 @@ import com.qs.serve.modules.tbs.common.dto.CompensateDTO;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.*; import com.qs.serve.modules.tbs.entity.bo.*;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.entity.dto.*;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetScheduleWithAmount;
import com.qs.serve.modules.tbs.entity.dto.TbsCostBudgetRelateInfo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo; import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl; import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -64,6 +65,7 @@ public class TbsCostApplyController {
private TbsCostApplyService tbsCostApplyService; private TbsCostApplyService tbsCostApplyService;
private TbsActivityService tbsActivityService; private TbsActivityService tbsActivityService;
private TbsActivityTemplateService tbsActivityTemplateService; private TbsActivityTemplateService tbsActivityTemplateService;
private TbsActivityCenterGoodsService tbsActivityCenterGoodsService;
private final TbsActivityGoodsService activityGoodsService; private final TbsActivityGoodsService activityGoodsService;
private final TbsActivitySubjectService activitySubjectService; private final TbsActivitySubjectService activitySubjectService;
private final TbsActivityCenterService activityCenterService; private final TbsActivityCenterService activityCenterService;
@ -71,6 +73,7 @@ public class TbsCostApplyController {
private final TbsActivityChannelService activityChannelService; private final TbsActivityChannelService activityChannelService;
private final TbsActivityChannelPointService activityChannelPointService; private final TbsActivityChannelPointService activityChannelPointService;
private BmsSupplierService bmsSupplierService; private BmsSupplierService bmsSupplierService;
private final TbsBudgetLogMapper tbsBudgetLogMapper;
private BmsRegion2Service region2Service; private BmsRegion2Service region2Service;
private SysUserService sysUserService; private SysUserService sysUserService;
private TbsBudgetApplicationService budgetApplicationService; private TbsBudgetApplicationService budgetApplicationService;
@ -81,6 +84,8 @@ public class TbsCostApplyController {
private TbsBudgetCostItemService tbsBudgetCostItemService; private TbsBudgetCostItemService tbsBudgetCostItemService;
private TbsBudgetLogService tbsBudgetLogService; private TbsBudgetLogService tbsBudgetLogService;
private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; private TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private SysDeleteLogService deleteLogService;
private TbsCostApplyMapper tbsCostApplyMapper;
/** /**
@ -509,5 +514,209 @@ public class TbsCostApplyController {
return R.ok(resultInfoList); return R.ok(resultInfoList);
} }
/**
* 移除费用申请
* @param costApplyId
* @param remark
* @return
*/
@GetMapping("removeByAdmin")
public R<?> removeByAdmin(Long costApplyId,String remark){
deleteLogService.deleteCostApply(costApplyId,remark);
return R.ok();
}
@GetMapping("rebuildBudgetLog")
public R dealCostBudget(Long costApplyId){
if(costApplyId!=null){
rebuildBudgetLog(costApplyId);
return R.ok();
}
List<TbsCostErrorBudgetDTO> costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO();
for (TbsCostErrorBudgetDTO budgetDTO : costErrorBudgetDTOList) {
Long costApplyId2 = budgetDTO.getId();
rebuildBudgetLog(costApplyId2);
}
return R.ok();
}
@GetMapping("rebuildBudgetLog3")
public void dealCostBudget3(){
List<TbsCostErrorBudgetDTO> costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO();
for (TbsCostErrorBudgetDTO budgetDTO : costErrorBudgetDTOList) {
Long costApplyId = budgetDTO.getId();
centerGoodsAmtToBudgetLog(costApplyId);
}
}
@GetMapping("flushActivityCenterGoodsAmount")
public void flushActivityCenterGoodsAmount(){
//List<TbsCostErrorBudgetDTO> costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO();
//过滤大额错误订单
// costErrorBudgetDTOList = costErrorBudgetDTOList.stream().filter(a->a.getTotalActivityAmount()
// .subtract(a.getSumBudget())
// .abs()
// .compareTo(BigDecimal.ONE)<1).collect(Collectors.toList());
//List<Long> costApplyIds = costErrorBudgetDTOList.stream().map(TbsCostErrorBudgetDTO::getId).distinct().collect(Collectors.toList());
List<Long> costApplyIds = new ArrayList<>();
costApplyIds.add(263925L);
costApplyIds.add(263930L);
costApplyIds.add(270102L);
List<TbsActNotMatchAmtCenterGoods> notMatchAmtCenterGoodsList = activityCenterGoodsService.listNotMatchAmtCenterGoods(costApplyIds);
List<Long> activityIds = notMatchAmtCenterGoodsList.stream().map(a->a.getActivityId()).collect(Collectors.toList());
for (Long activityId : activityIds) {
List<TbsActivityCenterGoods> activityCenterGoodsList = activityCenterGoodsService.listByActivityId(activityId);
Map<String,List<TbsActivityCenterGoods>> stringListMap = activityCenterGoodsList.stream()
.collect(Collectors.groupingBy(a->a.getSubjectId()+"_"+a.getCenterType()+"_"+a.getCenterId()));
for (String key : stringListMap.keySet()) {
List<TbsActivityCenterGoods> list = stringListMap.get(key);
BigDecimal totalAmountOfCenter = list.get(0).getCenterAmount();
BigDecimal totalCenterGoods = BigDecimal.ZERO;
for (TbsActivityCenterGoods centerGoods : list) {
totalCenterGoods = totalCenterGoods.add(centerGoods.getCenterGoodsAmount());
}
BigDecimal diff = totalAmountOfCenter.subtract(totalCenterGoods);
if(diff.compareTo(BigDecimal.ZERO)!=0&&diff.compareTo(BigDecimal.ONE)<0){
TbsActivityCenterGoods centerGoods = list.get(0);
centerGoods.setCenterGoodsAmount(centerGoods.getCenterGoodsAmount().add(diff));
activityCenterGoodsService.updateById(centerGoods);
}
}
}
}
private void centerGoodsAmtToBudgetLog(Long costApplyId) {
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId, costApplyId);
logLqw.lt(TbsBudgetLog::getOptType,7);
List<TbsBudgetLog> budgetLogList = tbsBudgetLogMapper.selectList(logLqw);
List<TbsActivityCenterGoods> activityCenterGoodsList = activityCenterGoodsService.listByCostApplyId(costApplyId);
if(budgetLogList.size()==activityCenterGoodsList.size()){
List<TbsBudgetLog> updBudgetLogList = new ArrayList<>();
for (TbsBudgetLog budgetLog : budgetLogList) {
TbsBudgetLog tmpObject = null;
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
if(budgetLog.getActivityId().equals(centerGoods.getActivityId())
&&budgetLog.getSubjectId().equals(centerGoods.getSubjectId())
&&budgetLog.getCenterType().equals(centerGoods.getCenterType())
&&budgetLog.getCenterId().equals(centerGoods.getCenterId())
&&budgetLog.getTargetId().equals(centerGoods.getTargetId())
//&&budgetLog.getScheduleItemBudgetId().equals(centerGoods.getScheduleItemBudgetId())
){
budgetLog.setAmount(centerGoods.getCenterGoodsAmount().negate());
tmpObject = budgetLog;
//tbsBudgetLogMapper.updateById(budgetLog);
}
}
if(tmpObject==null){
break;
}
updBudgetLogList.add(tmpObject);
}
if(updBudgetLogList.size()== budgetLogList.size()){
for (TbsBudgetLog budgetLog : updBudgetLogList) {
tbsBudgetLogMapper.updateById(budgetLog);
}
}
}
}
/**
* 方法不可行
*/
@Deprecated
//@GetMapping("rebuildBudgetLog2")
public void dealCostBudget2(){
List<TbsCostErrorBudgetDTO> costErrorBudgetDTOList = new ArrayList<>();
costErrorBudgetDTOList.add(new TbsCostErrorBudgetDTO());
//List<TbsCostErrorBudgetDTO> costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO();
for (TbsCostErrorBudgetDTO budgetDTO : costErrorBudgetDTOList) {
//Long costApplyId = budgetDTO.getId();
Long costApplyId = 115356L;
//BigDecimal diff = budgetDTO.getTotalActivityAmount().subtract(budgetDTO.getSumBudget());
// if(diff.abs().compareTo(BigDecimal.ONE)<0){
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId);
logLqw.lt(TbsBudgetLog::getOptType,7);
List<TbsBudgetLog> budgetLogList = tbsBudgetLogMapper.selectList(logLqw);
List<TbsBudgetCostItem> budgetCostItemList = tbsBudgetCostItemService.listByCostApplyId(costApplyId);
if(budgetCostItemList.size()==budgetLogList.size()){
for (TbsBudgetLog budgetLog : budgetLogList) {
for (TbsBudgetCostItem costItem : budgetCostItemList) {
if(budgetLog.getActivityId().equals(costItem.getActivityId())
&&budgetLog.getSubjectId().equals(costItem.getSubjectId())
&&budgetLog.getCenterType().equals(costItem.getCenterType())
&&budgetLog.getCenterId().equals(costItem.getCenterId())
&&budgetLog.getTargetId().equals(costItem.getTargetId())
&&budgetLog.getScheduleItemBudgetId().equals(costItem.getScheduleItemBudgetId())
){
budgetLog.setAmount(costItem.getCenterGoodsAmount().negate());
tbsBudgetLogMapper.updateById(budgetLog);
}
}
}
// }
}
return;
}
}
public void rebuildBudgetLog(Long costApplyId) {
TbsCostApply costApply = tbsCostApplyMapper.selectById(costApplyId);
//调整center_goods和budget_log之间的占用
BigDecimal centerGoodsTotal = tbsCostApplyMapper.sumCostCenterGoodsAmount(costApplyId);
BigDecimal costAmt = costApply.getTotalActivityAmount();
//判断合计金额与预算是否有差距过大
boolean diffCostCenterGoods = costAmt.subtract(centerGoodsTotal).intValue()!=0;
if(diffCostCenterGoods){
log.error("{}金额错误",costApply.getId());
return;
}
//BigDecimal costAmountBudget = tbsCostApplyMapper.sumCostAmountBudget(costApplyId);
//判断是否有释放,没有直接清理(后续可修改为全部清理)
LambdaQueryWrapper<TbsBudgetLog> budgetLogLqw = new LambdaQueryWrapper<>();
budgetLogLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
budgetLogLqw.eq(TbsBudgetLog::getOptType,1);
List<TbsBudgetLog> budgetLogList = tbsBudgetLogMapper.selectList(budgetLogLqw);
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId);
List<Long> updateLogIdsList = new ArrayList<>();
updateLogIdsList.add(0L);
if(activityCenterGoodsList.size()==budgetLogList.size()){
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
for (TbsBudgetLog budgetLog : budgetLogList) {
if( budgetLog.getActivityId().equals(centerGoods.getActivityId())
&&budgetLog.getSubjectId().equals(centerGoods.getSubjectId())
&& budgetLog.getCenterType().equals(centerGoods.getCenterType())
&& budgetLog.getCenterId().equals(centerGoods.getCenterId())
&& budgetLog.getTargetId().equals(centerGoods.getTargetId())
){
budgetLog.setAmount(centerGoods.getCenterGoodsAmount().negate());
tbsBudgetLogMapper.updateById(budgetLog);
updateLogIdsList.add(budgetLog.getId());
break;
}
}
}
LambdaQueryWrapper<TbsBudgetLog> delBudgetLogLqw = new LambdaQueryWrapper<>();
delBudgetLogLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
delBudgetLogLqw.notIn(TbsBudgetLog::getId,updateLogIdsList);
tbsBudgetLogMapper.delete(delBudgetLogLqw);
}
}
} }

2
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java

@ -34,7 +34,7 @@ public class TbsActivityTemplate implements Serializable {
/** 模板名称 */ /** 模板名称 */
@NotBlank(message = "模板名称不能为空") @NotBlank(message = "模板名称不能为空")
@Length(max = 30,message = "模板名称长度不能超过30字") @Length(max = 60,message = "模板名称长度不能超过60字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String templateName; private String templateName;

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

@ -178,6 +178,9 @@ public class TbsCostApply implements Serializable {
/** 统计所有活动使用的金额 */ /** 统计所有活动使用的金额 */
private BigDecimal totalActivityUsedAmount; private BigDecimal totalActivityUsedAmount;
/** 政策项ID */
private Long policyItemId;
/** 模板id */ /** 模板id */
private Long templateId; private Long templateId;

1
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java

@ -33,7 +33,6 @@ public class TbsActivityTemplateBo implements Serializable {
/** 模板名称 */ /** 模板名称 */
@NotBlank(message = "模板名称不能为空") @NotBlank(message = "模板名称不能为空")
@Length(max = 30,message = "模板名称长度不能超过30字")
private String templateName; private String templateName;
/** 模板状态 */ /** 模板状态 */

18
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActNotMatchAmtCenterGoods.java

@ -0,0 +1,18 @@
package com.qs.serve.modules.tbs.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/12/12
*/
@Data
public class TbsActNotMatchAmtCenterGoods {
private Long activityId;
private BigDecimal totalAmount;
private BigDecimal sumGoodsAmt;
}

20
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActivityAmtCheck.java

@ -0,0 +1,20 @@
package com.qs.serve.modules.tbs.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/12/11
*/
@Data
public class TbsActivityAmtCheck {
private Long activityId;
private BigDecimal totalAmount;
private BigDecimal sumCenterGoods;
private BigDecimal diffAmount;
}

29
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsCostErrorBudgetDTO.java

@ -0,0 +1,29 @@
package com.qs.serve.modules.tbs.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/12/10
*/
@Data
public class TbsCostErrorBudgetDTO {
Long id;
String code;
BigDecimal totalActivityAmount;
BigDecimal totalActivityUsedAmount;
BigDecimal releaseBudget;
/**
* 统计budgetLog
*/
BigDecimal sumBudget;
}

23
src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityAmtCheckMapper.java

@ -0,0 +1,23 @@
package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.qs.serve.modules.tbs.entity.dto.TbsActivityAmtCheck;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author YenHex
* @since 2023/12/11
*/
public interface TbsActivityAmtCheckMapper {
@Select("")
@InterceptorIgnore(tenantLine = "true")
List<TbsActivityAmtCheck> listByCostApplyId(Long costApplyId);
@Select("")
@InterceptorIgnore(tenantLine = "true")
List<TbsActivityAmtCheck> listByActivityId(Long activityId);
}

26
src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityCenterGoodsMapper.java

@ -1,7 +1,13 @@
package com.qs.serve.modules.tbs.mapper; package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
import com.qs.serve.modules.tbs.entity.dto.TbsActNotMatchAmtCenterGoods;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/** /**
* 活动成本中心配比项 Mapper * 活动成本中心配比项 Mapper
@ -10,5 +16,25 @@ import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
*/ */
public interface TbsActivityCenterGoodsMapper extends BaseMapper<TbsActivityCenterGoods> { public interface TbsActivityCenterGoodsMapper extends BaseMapper<TbsActivityCenterGoods> {
@Select("<script>"+
"select activity_id,tbs_activity.total_amount,tmp.sum_goods_amt from tbs_activity " +
" left join (SELECT activity_id, sum(center_goods_amount) AS sum_goods_amt,sum(center_amount) as sum_center_amt " +
" FROM `tbs_activity_center_goods` where tbs_activity_center_goods.del_flag = 0 and tbs_activity_center_goods.cost_apply_id in " +
" <foreach collection='costApplyIds' item='id' open='(' separator=',' close=')'>"+
" #{id} "+
" </foreach> "+
" GROUP BY activity_id) as tmp " +
" on tmp.activity_id = tbs_activity.id " +
" where tbs_activity.del_flag = 0 " +
" and tbs_activity.total_amount != tmp.sum_goods_amt" +
" and tbs_activity.cost_apply_id in "+
" <foreach collection='costApplyIds' item='id' open='(' separator=',' close=')'>"+
" #{id} "+
" </foreach> "+
"</script>"
)
@InterceptorIgnore(tenantLine = "1")
List<TbsActNotMatchAmtCenterGoods> listNotMatchAmtCenterGoods(@Param("costApplyIds") List<Long> costIds);
} }

27
src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplyMapper.java

@ -1,11 +1,13 @@
package com.qs.serve.modules.tbs.mapper; package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.dto.TbsCostErrorBudgetDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
@ -68,5 +70,30 @@ public interface TbsCostApplyMapper extends BaseMapper<TbsCostApply> {
*/ */
IPage<TbsCostApply> selectCostApplyList(IPage<TbsCostApply> page,@Param("query")TbsCostApply param); IPage<TbsCostApply> selectCostApplyList(IPage<TbsCostApply> page,@Param("query")TbsCostApply param);
/**
* 查找
* @return
*/
@InterceptorIgnore(tenantLine = "1")
List<TbsCostErrorBudgetDTO> selectCostErrorBudgetDTO();
/**
* 统计cost的budgetLog占用
* @param costApplyId
* @return
*/
@InterceptorIgnore(tenantLine = "1")
@Select("SELECT sum(- amount ) AS sum_budget FROM `tbs_budget_log`" +
" where tbs_budget_log.del_flag = 0" +
" and cost_apply_id = #{costApplyId}")
BigDecimal sumCostAmountBudget(@Param("costApplyId") Long costApplyId);
@Select("select sum(center_goods_amount)" +
" from tbs_activity_center_goods" +
" where cost_apply_id = #{costApplyId} and del_flag = 0")
BigDecimal sumCostCenterGoodsAmount(@Param("costApplyId") Long costApplyId);
} }

106
src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplyRemoveMapper.java

@ -0,0 +1,106 @@
package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* @author YenHex
* @since 2023/12/8
*/
public interface TbsCostApplyRemoveMapper {
@Update("update tbs_cost_apply set del_flag = 1 where id = #{costApplyId}")
int tbs_cost_apply(@Param("costApplyId") Long costId);
@Update("update tbs_activity set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity(@Param("costApplyId") Long costId);
@Update("update tbs_activity_center set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_center(@Param("costApplyId") Long costId);
@Update("update tbs_activity_center_goods set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_center_goods(@Param("costApplyId") Long costId);
@Update("update tbs_activity_goods set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_goods(@Param("costApplyId") Long costId);
@Update("update tbs_activity_channel set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_channel(@Param("costApplyId") Long costId);
@Update("update tbs_activity_channel_point set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_channel_point(@Param("costApplyId") Long costId);
@Update("update tbs_activity_pay_condition set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_pay_condition(@Param("costApplyId") Long costId);
@Update("update tbs_activity_slotting_fee set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_slotting_fee(@Param("costApplyId") Long costId);
@Update("update tbs_activity_subject set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_subject(@Param("costApplyId") Long costId);
@Update("update tbs_activity_subject_yarn set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_activity_subject_yarn(@Param("costApplyId") Long costId);
@Update("update vtb_verification set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification(@Param("costApplyId") Long costId);
@Update("update pay_payment set del_flag = 1 where cost_apply_id = #{costApplyId}")
int pay_payment(@Param("costApplyId") Long costId);
@Update("update pay_payment_item set del_flag = 1 where cost_apply_id = #{costApplyId}")
int pay_payment_item(@Param("costApplyId") Long costId);
@Update("update tbs_budget_log set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_budget_log(@Param("costApplyId") Long costId);
@Update("update tbs_budget_cost_item set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_budget_cost_item(@Param("costApplyId") Long costId);
@Update("update tbs_budget_cost_item_split set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_budget_cost_item_split(@Param("costApplyId") Long costId);
@Update("update vtb_fund_flow set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_fund_flow(@Param("costApplyId") Long costId);
@InterceptorIgnore(tenantLine = "true")
@Delete("delete from bir_activity_center_goods where cost_apply_id = #{costApplyId}")
int bir_activity_center_goods(@Param("costApplyId") Long costId);
@InterceptorIgnore(tenantLine = "true")
@Delete("delete from bir_base_activity where cost_apply_id = #{costApplyId}")
int bir_base_activity(@Param("costApplyId") Long costId);
@InterceptorIgnore(tenantLine = "true")
@Delete("delete from bir_payment_item where cost_apply_id = #{costApplyId}")
int bir_payment_item(@Param("costApplyId") Long costId);
@Update("update vtb_verification_subject set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification_subject(@Param("costApplyId") Long costId);
@Update("update vtb_verification_yard_item set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification_yard_item(@Param("costApplyId") Long costId);
@Update("update vtb_verification_yard_center_item set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification_yard_center_item(@Param("costApplyId") Long costId);
@Update("update vtb_verification_subject_center set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification_subject_center(@Param("costApplyId") Long costId);
@Update("update vtb_verification_channel_point set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification_channel_point(@Param("costApplyId") Long costId);
@Update("update vtb_verification_channel set del_flag = 1 where cost_apply_id = #{costApplyId}")
int vtb_verification_channel(@Param("costApplyId") Long costId);
@Update("update tbs_cost_contract set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_cost_contract(@Param("costApplyId") Long costId);
@Update("update tbs_cost_percent set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_cost_percent(@Param("costApplyId") Long costId);
@Update("update tbs_cost_todo set del_flag = 1 where cost_apply_id = #{costApplyId}")
int tbs_cost_todo(@Param("costApplyId") Long costId);
}

8
src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterGoodsService.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
import com.qs.serve.modules.tbs.entity.TbsActivitySubject; import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.entity.dto.TbsActNotMatchAmtCenterGoods;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -21,5 +22,12 @@ public interface TbsActivityCenterGoodsService extends IService<TbsActivityCente
Map<Long,List<TbsActivityCenterGoods>> listByActivityMap(List<Long> activityIds); Map<Long,List<TbsActivityCenterGoods>> listByActivityMap(List<Long> activityIds);
/**
* 加载center_goods与activity不匹配的
* @param costIds
* @return
*/
List<TbsActNotMatchAmtCenterGoods> listNotMatchAmtCenterGoods(List<Long> costIds);
} }

6
src/main/java/com/qs/serve/modules/tbs/service/TbsActivityService.java

@ -26,5 +26,11 @@ public interface TbsActivityService extends IService<TbsActivity> {
*/ */
void modify(TbsActivityBo activityBo); void modify(TbsActivityBo activityBo);
/**
* 修复精确度
* @param updateBudgetLog 新建活动为false修复数据时为true
*/
void checkCenterGoods(boolean updateBudgetLog);
} }

5
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterGoodsServiceImpl.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.modules.tbs.entity.TbsActivitySubject; import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.entity.dto.TbsActNotMatchAmtCenterGoods;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -46,5 +47,9 @@ public class TbsActivityCenterGoodsServiceImpl extends ServiceImpl<TbsActivityCe
return activityCenterList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId)); return activityCenterList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId));
} }
@Override
public List<TbsActNotMatchAmtCenterGoods> listNotMatchAmtCenterGoods(List<Long> costIds) {
return baseMapper.listNotMatchAmtCenterGoods(costIds);
}
} }

79
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -26,17 +26,17 @@ import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.*; import com.qs.serve.modules.tbs.entity.bo.*;
import com.qs.serve.modules.tbs.mapper.TbsActivityTemplateMapper; import com.qs.serve.modules.tbs.entity.dto.TbsActivityAmtCheck;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper; import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.One; import org.apache.ibatis.annotations.One;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@ -62,6 +62,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
private final TbsCostApplyMapper costApplyMapper; private final TbsCostApplyMapper costApplyMapper;
private final TbsActivitySlottingFeeService activitySlottingFeeService; private final TbsActivitySlottingFeeService activitySlottingFeeService;
private final TbsCenterDtoService tbsCenterDtoService; private final TbsCenterDtoService tbsCenterDtoService;
private final TbsBudgetLogMapper tbsBudgetLogMapper;
private final BmsSubjectFormMapper subjectFormMapper; private final BmsSubjectFormMapper subjectFormMapper;
private final BmsSupplierService supplierService; private final BmsSupplierService supplierService;
@ -75,8 +76,26 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
private final SysConfigService configService; private final SysConfigService configService;
private final TbsActivityAmtCheckMapper activityAmtCheckMapper;
@Override
public void checkCenterGoods(boolean updateBudgetLog) {
List<TbsActivityAmtCheck> activityAmtCheckList = activityAmtCheckMapper.listByCostApplyId(274022L);
for (TbsActivityAmtCheck amtCheck : activityAmtCheckList) {
LambdaQueryWrapper<TbsActivityCenterGoods> centerGoodsLqw = new LambdaQueryWrapper<>();
centerGoodsLqw.eq(TbsActivityCenterGoods::getActivityId,amtCheck.getActivityId());
centerGoodsLqw.apply(" limit 1");
TbsActivityCenterGoods centerGoods = activityCenterGoodsService.getOne(centerGoodsLqw);
centerGoods.setCenterGoodsAmount(centerGoods.getCenterGoodsAmount().add(amtCheck.getDiffAmount()));
activityCenterGoodsService.updateById(centerGoods);
}
}
@Override @Override
public List<TbsActivity> listByCostApplyId(Long id) { public List<TbsActivity> listByCostApplyId(Long id) {
LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>();
@ -198,9 +217,8 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
Map<String,TbsCenterDto> centerDtoMap = new HashMap<>(); Map<String,TbsCenterDto> centerDtoMap = new HashMap<>();
this.initSubjectAndCenter(activityBo,subjectMap,centerDtoMap,activitySubjects,activityCenterList,costApply.getId(),activity.getId()); this.initSubjectAndCenter(activityBo,subjectMap,centerDtoMap,activitySubjects,activityCenterList,costApply.getId(),activity.getId());
//产品成本配占比 //产品成本配占比
Map<String,BigDecimal> checkAmountMap = new HashMap<>();
List<TbsActivityCenterGoods> activityCenterGoodsList = new ArrayList<>(); List<TbsActivityCenterGoods> activityCenterGoodsList = new ArrayList<>();
this.initCenterGoods(activityBo,subjectMap,centerDtoMap,checkAmountMap,activityGoodsList,activityCenterGoodsList,costApply.getId(),activity,supplier); this.initCenterGoods(activityBo,subjectMap,centerDtoMap,activityGoodsList,activityCenterGoodsList,costApply.getId(),activity,supplier);
//校验金额和比率 //校验金额和比率
Map<Long,List<TbsActivityCenterGoods>> actCenterGoodsMap = activityCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getSubjectId)); Map<Long,List<TbsActivityCenterGoods>> actCenterGoodsMap = activityCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getSubjectId));
for (Long subjectId : actCenterGoodsMap.keySet()) { for (Long subjectId : actCenterGoodsMap.keySet()) {
@ -214,13 +232,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
Assert.throwEx("成本中心与商品分配比例有误"); Assert.throwEx("成本中心与商品分配比例有误");
} }
} }
for (TbsActivityCenter activityCenter : activityCenterList) {
String key = activityCenter.getSubjectId()+":"+activityCenter.getCenterType()+":"+activityCenter.getCenterId();
BigDecimal amount = checkAmountMap.get(key);
if(amount==null||amount.compareTo(activityCenter.getCenterAmount())!=0){
Assert.throwEx("成本中心与商品分配的金额有误");
}
}
//客户详情 //客户详情
List<TbsActivityChannelPoint> activityChannelPointList = new ArrayList<>(); List<TbsActivityChannelPoint> activityChannelPointList = new ArrayList<>();
List<TbsActivityChannel> activityChannelList = new ArrayList<>(); List<TbsActivityChannel> activityChannelList = new ArrayList<>();
@ -389,7 +400,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
* @param activityBo * @param activityBo
* @param subjectMap * @param subjectMap
* @param centerDtoMap * @param centerDtoMap
* @param checkAmountMap
* @param activityGoodsList * @param activityGoodsList
* @param activityCenterGoodsList * @param activityCenterGoodsList
* @param costApplyId * @param costApplyId
@ -398,7 +408,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
public void initCenterGoods(TbsActivityBo activityBo, public void initCenterGoods(TbsActivityBo activityBo,
Map<Long,BmsSubject> subjectMap, Map<Long,BmsSubject> subjectMap,
Map<String,TbsCenterDto> centerDtoMap, Map<String,TbsCenterDto> centerDtoMap,
Map<String,BigDecimal> checkAmountMap,
List<TbsActivityGoods> activityGoodsList, List<TbsActivityGoods> activityGoodsList,
List<TbsActivityCenterGoods> activityCenterGoodsList, List<TbsActivityCenterGoods> activityCenterGoodsList,
Long costApplyId,TbsActivity activity,BmsSupplier supplier){ Long costApplyId,TbsActivity activity,BmsSupplier supplier){
@ -424,8 +433,17 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
} }
centerGoods.setCenterCode(tbsCenterDto.getCenterCode()); centerGoods.setCenterCode(tbsCenterDto.getCenterCode());
centerGoods.setCenterName(tbsCenterDto.getCenterName()); centerGoods.setCenterName(tbsCenterDto.getCenterName());
centerGoods.setCenterRate(tbsCenterDto.getCenterRate()); for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) {
centerGoods.setCenterAmount(tbsCenterDto.getCenterAmount()); if(subject.getId().equals(subjectBo.getSubjectId())){
for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) {
if(centerBo.getCenterType().equals(tbsCenterDto.getCenterType())&&centerBo.getCenterId().equals(tbsCenterDto.getId())){
centerGoods.setCenterRate(centerBo.getCenterRate());
centerGoods.setCenterAmount(centerBo.getCenterAmount());
break;
}
}
}
}
//设置科目 //设置科目
centerGoods.setCostApplyId(costApplyId); centerGoods.setCostApplyId(costApplyId);
centerGoods.setActivityId(activity.getId()); centerGoods.setActivityId(activity.getId());
@ -440,14 +458,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
centerGoods.setPreEndDate(activity.getPreEndDate()); centerGoods.setPreEndDate(activity.getPreEndDate());
centerGoods.setPreStartDate(activity.getPreStartDate()); centerGoods.setPreStartDate(activity.getPreStartDate());
centerGoods.setPreCheckDate(activity.getPreCheckDate()); centerGoods.setPreCheckDate(activity.getPreCheckDate());
//统计
String key4Count = subject.getId()+":"+key;
BigDecimal checkAmount = checkAmountMap.get(key4Count);
if(checkAmount==null){
checkAmount = BigDecimal.ZERO;
}
checkAmount = checkAmount.add(centerGoods.getCenterGoodsAmount());
checkAmountMap.put(key4Count,checkAmount);
//设置商品 //设置商品
Long cenTarId = centerGoodsBo.getTargetId(); Long cenTarId = centerGoodsBo.getTargetId();
@ -488,6 +498,9 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
List<TbsActivitySubject> activitySubjects, List<TbsActivitySubject> activitySubjects,
List<TbsActivityCenter> activityCenterList, List<TbsActivityCenter> activityCenterList,
Long costApplyId,Long activityId){ Long costApplyId,Long activityId){
List<String> existKeyList = new ArrayList<>();
for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) {
BmsSubject subject = subjectService.getById(subjectBo.getSubjectId()); BmsSubject subject = subjectService.getById(subjectBo.getSubjectId());
if(subject==null){ if(subject==null){
@ -513,9 +526,18 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
activitySubjects.add(activitySubject); activitySubjects.add(activitySubject);
BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal totalRate = BigDecimal.ZERO; BigDecimal totalRate = BigDecimal.ZERO;
for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) {
TbsActivityCenter activityCenter = new TbsActivityCenter();
activityCenter.setCostApplyId(costApplyId);
activityCenter.setActivityId(activityId);
activityCenter.setSubjectId(subjectBo.getSubjectId());
activityCenter.setCenterRate(centerBo.getCenterRate());
activityCenter.setCenterAmount(centerBo.getCenterAmount());
activityCenter.setCenterType(centerBo.getCenterType());
totalAmount = totalAmount.add(centerBo.getCenterAmount()); totalAmount = totalAmount.add(centerBo.getCenterAmount());
totalRate = totalRate.add(centerBo.getCenterRate()); totalRate = totalRate.add(centerBo.getCenterRate());
activityCenter.setCenterId(centerBo.getCenterId());
String centerType = centerBo.getCenterType(); String centerType = centerBo.getCenterType();
String centerId = centerBo.getCenterId(); String centerId = centerBo.getCenterId();
String key = centerType+":"+centerId; String key = centerType+":"+centerId;
@ -529,21 +551,12 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
tbsCenterDto.setCenterAmount(centerBo.getCenterAmount()); tbsCenterDto.setCenterAmount(centerBo.getCenterAmount());
centerDtoMap.put(key,tbsCenterDto); centerDtoMap.put(key,tbsCenterDto);
} }
TbsActivityCenter activityCenter = new TbsActivityCenter();
activityCenter.setCostApplyId(costApplyId);
activityCenter.setActivityId(activityId);
activityCenter.setSubjectId(subjectBo.getSubjectId());
activityCenter.setCenterRate(centerBo.getCenterRate());
activityCenter.setCenterAmount(centerBo.getCenterAmount());
activityCenter.setCenterType(centerBo.getCenterType());
activityCenter.setCenterId(centerBo.getCenterId());
activityCenter.setCenterName(tbsCenterDto.getCenterName()); activityCenter.setCenterName(tbsCenterDto.getCenterName());
activityCenter.setCenterCode(tbsCenterDto.getCenterCode()); activityCenter.setCenterCode(tbsCenterDto.getCenterCode());
activityCenter.setTmpUk(centerBo.getTmpUk()); activityCenter.setTmpUk(centerBo.getTmpUk());
activityCenterList.add(activityCenter); activityCenterList.add(activityCenter);
} }
if(activitySubject.getAmount().compareTo(totalAmount)!=0){ if(activitySubject.getAmount().compareTo(totalAmount)!=0){
//log.error("成本中心费用入参有误--amount:{},activitySubject:{}",totalAmount,JsonUtil.objectToJson(activitySubject));
Assert.throwEx("成本中心费用入参有误"); Assert.throwEx("成本中心费用入参有误");
} }
if(totalRate.compareTo(new BigDecimal(100))!=0){ if(totalRate.compareTo(new BigDecimal(100))!=0){

20
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -18,10 +18,12 @@ import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysPostUser; import com.qs.serve.modules.sys.entity.SysPostUser;
import com.qs.serve.modules.sys.entity.SysSyncLog;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysAttachMapper; import com.qs.serve.modules.sys.mapper.SysAttachMapper;
import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysSyncLogService;
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;
import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsCostApplyState;
@ -70,6 +72,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
private final TbsActivityCenterMapper activityCenterMapper; private final TbsActivityCenterMapper activityCenterMapper;
private final TbsActivityCenterGoodsMapper activityCenterGoodsMapper; private final TbsActivityCenterGoodsMapper activityCenterGoodsMapper;
private final DataAffairCommitMapper dataAffairCommitMapper; private final DataAffairCommitMapper dataAffairCommitMapper;
private final SysSyncLogService sysSyncLogService;
@Override @Override
@ -287,10 +290,24 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
// 更新金额 // 更新金额
TbsCostApply apply = new TbsCostApply(); TbsCostApply apply = new TbsCostApply();
BigDecimal totalApply = null; BigDecimal totalApply = null;
boolean returnFlag = false;
try { try {
totalApply = checkToChangeAmount(param); totalApply = checkToChangeAmount(param);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
SysSyncLog syncLog = new SysSyncLog();
syncLog.setFromPlat("CostApply.doFinished");
syncLog.setUrl("");
syncLog.setEntityClass(TbsAffairCommitBo.class.getName());
syncLog.setRequestJson(JsonUtil.objectToJson(param));
syncLog.setFailReason(e.getMessage());
syncLog.setSuccessStatus(0);
syncLog.setTodoState(1);
sysSyncLogService.save(syncLog);
returnFlag = true;
}
if(returnFlag){
return null;
} }
apply.setId(targetId); apply.setId(targetId);
if(totalApply!=null){ if(totalApply!=null){
@ -345,7 +362,8 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
List<TbsBudgetLog> budgetLogList = tbsBudgetLogMapper.selectList(budgetLogLqw); List<TbsBudgetLog> budgetLogList = tbsBudgetLogMapper.selectList(budgetLogLqw);
for (TbsBudgetLog budgetLog : budgetLogList) { for (TbsBudgetLog budgetLog : budgetLogList) {
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
if( budgetLog.getSubjectId().equals(centerGoods.getSubjectId()) if( budgetLog.getActivityId().equals(centerGoods.getActivityId())
&&budgetLog.getSubjectId().equals(centerGoods.getSubjectId())
&& budgetLog.getCenterType().equals(centerGoods.getCenterType()) && budgetLog.getCenterType().equals(centerGoods.getCenterType())
&& budgetLog.getCenterId().equals(centerGoods.getCenterId()) && budgetLog.getCenterId().equals(centerGoods.getCenterId())
){ ){

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

@ -101,8 +101,6 @@ public class TbsDealErrorApplication {
} }
} }
} }
} }

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

@ -257,16 +257,12 @@ public class PortalOfCostApplication {
List<GoodsSku> skuList = this.initSkuListOfProcess(invCodes); List<GoodsSku> skuList = this.initSkuListOfProcess(invCodes);
//常用参数 //常用参数
final String GOODS_TYPE = "sku"; final String GOODS_TYPE = "sku";
final String CENTER_TYPE = "customer";
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();
Long supplierId = Long.parseLong(supplier.getId()); Long supplierId = Long.parseLong(supplier.getId());
BigDecimal totalAmount = createBo.getTotalAmount(); BigDecimal totalAmount = createBo.getTotalAmount();
String costTheme = createBo.getCostTheme(); String costTheme = createBo.getCostTheme();
String random = String.format("%03d",new Random().nextInt(999));
String costApplyCode = "CA"+CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply); String costApplyCode = "CA"+CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply);
String activityCode = costApplyCode + "_1"; String activityCode = costApplyCode + "_1";
String activityTitle = "由政策"+policyItem.getPolicyItemCode()+"核销一站式API生成的活动"; String activityTitle = "由政策"+policyItem.getPolicyItemCode()+"核销一站式API生成的活动";
@ -284,6 +280,7 @@ public class PortalOfCostApplication {
costApply.setTotalActivity(1); costApply.setTotalActivity(1);
costApply.setTotalActivityAmount(totalAmount); costApply.setTotalActivityAmount(totalAmount);
costApply.setTotalActivityUsedAmount(totalAmount); costApply.setTotalActivityUsedAmount(totalAmount);
costApply.setPolicyItemId(policyItem.getId());
//构建活动 //构建活动
TbsActivity activity = new TbsActivity(); TbsActivity activity = new TbsActivity();
activity.setActivityCode(activityCode); activity.setActivityCode(activityCode);

2
src/main/java/com/qs/serve/modules/vtb/common/VtbVerificationState.java

@ -21,4 +21,6 @@ public enum VtbVerificationState {
private Integer code; private Integer code;
} }

7
src/main/resources/mapper/bir/BirBaseActivityMapper.xml

@ -109,5 +109,12 @@
) )
</select> </select>
<select id="deleteErrorBir" >
update bir_base_activity
left join tbs_cost_apply
on tbs_cost_apply.id = bir_base_activity.cost_apply_id
set bir_base_activity.del_flag = '1'
where charge_state not in (2,3)
</select>
</mapper> </mapper>

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

@ -163,6 +163,35 @@
and `tbs_cost_apply`.`user_id` = #{userId} and `tbs_cost_apply`.`user_id` = #{userId}
</select> </select>
<select id="selectCostErrorBudgetDTO"
resultType="com.qs.serve.modules.tbs.entity.dto.TbsCostErrorBudgetDTO">
SELECT
tbs_cost_apply.id,
tbs_cost_apply.`code`,
tbs_cost_apply.charge_state,
tbs_cost_apply.total_activity_amount,
tbs_cost_apply.total_activity_used_amount,
release_budget,
sum_budget
FROM
tbs_cost_apply
LEFT JOIN ( SELECT cost_apply_id, sum(- amount ) AS sum_budget FROM `tbs_budget_log` where tbs_budget_log.del_flag = 0 GROUP BY cost_apply_id ) AS tmp ON tbs_cost_apply.id = tmp.cost_apply_id
LEFT JOIN ( SELECT cost_apply_id, sum( used_amount ) AS release_budget FROM `vtb_fund_flow` where vtb_fund_flow.del_flag = 0 and fund_type = 'release' GROUP BY cost_apply_id ) AS tmp2 ON tbs_cost_apply.id = tmp2.cost_apply_id
WHERE
xlt_sync IS NULL
and tbs_cost_apply.del_flag = 0
and tbs_cost_apply.cancel_flag = 0
AND tbs_cost_apply.charge_state in (1,2,3,7)
and
(
(tbs_cost_apply.total_activity_amount - sum_budget != 0 and release_budget is null )
or (tbs_cost_apply.total_activity_amount-release_budget-sum_budget!=0 and release_budget is not null)
)
and tbs_cost_apply.total_activity_amount - sum_budget !=0
</select>
<sql id="baseWhere4CostApply"> <sql id="baseWhere4CostApply">
<if test="query.checkState != null"> and `tbs_cost_apply`.`check_state` = #{query.checkState}</if> <if test="query.checkState != null"> and `tbs_cost_apply`.`check_state` = #{query.checkState}</if>

Loading…
Cancel
Save