Browse Source

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

v1.0
15989082884@163.com 2 years ago
parent
commit
f272d470bf
  1. 3
      src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java
  2. 58
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  3. 3
      src/main/java/com/qs/serve/common/model/dto/RowParam.java
  4. 4
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  5. 64
      src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java
  6. 15
      src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java
  7. 4
      src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java
  8. 4
      src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java
  9. 2
      src/main/java/com/qs/serve/modules/goods/common/GoodsConst.java
  10. 3
      src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryRuleController.java
  11. 27
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  12. 3
      src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java
  13. 2
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  14. 3
      src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java
  15. 22
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  16. 41
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  17. 9
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java
  18. 1
      src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrder.java
  19. 2
      src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrderItem.java
  20. 10
      src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java
  21. 23
      src/main/java/com/qs/serve/modules/oms/entity/dto/XltOrderDTO.java
  22. 14
      src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderItemMapper.java
  23. 14
      src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderMapper.java
  24. 2
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  25. 133
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  26. 4
      src/main/java/com/qs/serve/modules/sale/entity/SalePlan.java
  27. 13
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  28. 2
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  29. 13
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  30. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  31. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
  32. 5
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java
  33. 24
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetTempBo.java
  34. 2
      src/main/java/com/qs/serve/modules/tbs/entity/so/TbsActivityTemplateSo.java
  35. 5
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java
  36. 65
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java
  37. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java
  38. 39
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  39. 53
      src/main/java/com/qs/serve/modules/third/PortalGoodsController.java
  40. 13
      src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java
  41. 5
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  42. 36
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java
  43. 16
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

3
src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java

@ -21,4 +21,7 @@ public class ProjectApisProperties {
/** 调度系统-发货单 */ /** 调度系统-发货单 */
private String diaoduPlanOrder; private String diaoduPlanOrder;
/** 嘉士利接口,spu转换sku */
private String spuToSku;
} }

58
src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java

@ -70,31 +70,45 @@ public class AsyncFactory {
return new TimerTask() { return new TimerTask() {
@Override @Override
public void run() { public void run() {
String lockKey = "customer_price_lock:"+userId+":"+supplierCode; getCumSurplusPrice(userId, supplierCode);
String priceDataKey = "customer_price_data:"+userId;
RedisService redisService = SpringUtils.getBean(RedisService.class);
redisService.set(lockKey,1,30,TimeUnit.SECONDS);
log.debug("获取客户金额,cusCode:{}",supplierCode);
//请求获取金额
SeeYonRequestBaseService seeYonRequestService = SpringUtils.getBean(SeeYonRequestBaseService.class);
R<String> reqResult = seeYonRequestService.getBase(ERP_CUS_AMOUNT+"?supplierCode="+supplierCode,"获取客户["+supplierCode+"]金额");
if(reqResult==null || !reqResult.getStatus().equals(200)){
//有错误退出
log.warn("获取客户金额失败,cusCode:{}",supplierCode);
redisService.set(lockKey,0);
return;
}
String amount = reqResult.getData()==null?"0":reqResult.getData();
//数据格式:supplierCode_&_amount 如 A235654_&_612.00
String value = supplierCode+"_&_"+amount;
//缓存15分钟
log.debug("获取客户金额成功,cusCode:{},缓存15分钟",supplierCode);
redisService.set(priceDataKey,value,15, TimeUnit.MINUTES);
redisService.set(lockKey,0);
} }
}; };
} }
/**
* 获取客户帐余
* @param userId
* @param supplierCode
* @return
*/
public static String getCumSurplusPrice(String userId, String supplierCode) {
String lockKey = "customer_price_lock:"+userId+":"+supplierCode;
String priceDataKey = "customer_price_data:"+userId;
RedisService redisService = SpringUtils.getBean(RedisService.class);
redisService.set(lockKey,1,30,TimeUnit.SECONDS);
log.debug("获取客户金额,cusCode:{}",supplierCode);
//请求获取金额
SeeYonRequestBaseService seeYonRequestService = SpringUtils.getBean(SeeYonRequestBaseService.class);
R<String> reqResult = seeYonRequestService.getBase(ERP_CUS_AMOUNT+"?supplierCode="+supplierCode,"获取客户["+supplierCode+"]金额");
if(reqResult==null || !reqResult.getStatus().equals(200)){
//有错误退出
log.warn("获取客户金额失败,cusCode:{}",supplierCode);
redisService.set(lockKey,0);
return "-1";
}
String amount = reqResult.getData()==null?"0":reqResult.getData();
//数据格式:supplierCode_&_amount 如 A235654_&_612.00
String value = supplierCode+"_&_"+amount;
//缓存15分钟
log.debug("获取客户金额成功,cusCode:{},缓存15分钟",supplierCode);
redisService.set(priceDataKey,value,15, TimeUnit.MINUTES);
redisService.set(lockKey,0);
//
return amount;
}
/** /**
* 异步保存政策状态 * 异步保存政策状态
* @param policyId * @param policyId
@ -283,13 +297,13 @@ public class AsyncFactory {
* @return * @return
*/ */
public static TimerTask saveVtbSubmit(Long verificationId, BigDecimal totalAmount,Integer state,boolean realaseFlag) { public static TimerTask saveVtbSubmit(Long verificationId, BigDecimal totalAmount,Integer state,boolean realaseFlag) {
log.warn("费用释放---verificationId:{} totalAmount:{} state:{} realaseFlag:{}",verificationId,totalAmount,state,realaseFlag);
return new TimerTask() { return new TimerTask() {
@Override @Override
public void run() { public void run() {
try { try {
AuthContextUtils.setTenant("001"); AuthContextUtils.setTenant("001");
Thread.sleep(20*1000); Thread.sleep(20*1000);
log.debug("saveVtbSubmit");
VtbVerificationService vtbVerificationService = SpringUtils.getBean(VtbVerificationService.class); VtbVerificationService vtbVerificationService = SpringUtils.getBean(VtbVerificationService.class);
VtbVerification verification = vtbVerificationService.getById(verificationId); VtbVerification verification = vtbVerificationService.getById(verificationId);
if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){ if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){

3
src/main/java/com/qs/serve/common/model/dto/RowParam.java

@ -14,7 +14,8 @@ public class RowParam {
private Integer size; private Integer size;
public RowParam(Integer startIndex, Integer size) { public RowParam(Integer startIndex, Integer size) {
this.startIndex = startIndex;
this.size = size;
} }
public RowParam(boolean pageable) { public RowParam(boolean pageable) {

4
src/main/java/com/qs/serve/common/util/CodeGenUtil.java

@ -70,7 +70,7 @@ public class CodeGenUtil {
return value; return value;
} }
public static String generate(SourceKey sourceKey){ public synchronized static String generate(SourceKey sourceKey){
try { try {
LocalDate localDateTime = LocalDate.now(); LocalDate localDateTime = LocalDate.now();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd"); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");
@ -102,7 +102,7 @@ public class CodeGenUtil {
return digitsNum + appendZeros + appendStr+subflex; return digitsNum + appendZeros + appendStr+subflex;
} }
public static String getDataCode(SourceDataKey dataKey){ public synchronized static String getDataCode(SourceDataKey dataKey){
String key = "code_data_index:"+dataKey.getCode(); String key = "code_data_index:"+dataKey.getCode();
String commonVal = getCommonValue(key); String commonVal = getCommonValue(key);
return dataKey.getPrefix() + commonVal; return dataKey.getPrefix() + commonVal;

64
src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java

@ -21,6 +21,7 @@ import com.qs.serve.modules.bms.entity.vo.BmsUserPoint4VisitVo;
import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper;
import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.his.service.HisUserSupplierService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserSalesService; import com.qs.serve.modules.sys.service.SysUserSalesService;
@ -57,6 +58,7 @@ public class BmsChannelPointMyController {
private TbsActivityChannelPointService activityChannelPointService; private TbsActivityChannelPointService activityChannelPointService;
private BmsChannelPointMapper channelPointMapper; private BmsChannelPointMapper channelPointMapper;
private HisUserChannelPointService hisUserChannelPointService; private HisUserChannelPointService hisUserChannelPointService;
private HisUserSupplierService hisUserSupplierService;
private SysUserService sysUserService; private SysUserService sysUserService;
private BmsRegionUserService bmsRegionUserService; private BmsRegionUserService bmsRegionUserService;
private SysPostUserService postUserService; private SysPostUserService postUserService;
@ -85,37 +87,41 @@ public class BmsChannelPointMyController {
if(CollectionUtil.isNotEmpty(param.getSelectIds())){ if(CollectionUtil.isNotEmpty(param.getSelectIds())){
lqw.in(BmsChannelPoint::getId, param.getSelectIds()); lqw.in(BmsChannelPoint::getId, param.getSelectIds());
} }
RowParam rowParam = new RowParam(param.getStartNum(),param.getExportNum());
List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId()),rowParam);
//过滤为当前负责人
LambdaQueryWrapper<BmsMasterUser> masterLqw = new LambdaQueryWrapper<>();
masterLqw.in(BmsMasterUser::getType,MasterUserType.Channel,MasterUserType.Point);
masterLqw.eq(BmsMasterUser::getUserId,AuthContextUtils.getSysUserId());
List<BmsMasterUser> masterUsers = bmsMasterUserService.list(masterLqw);
Map<String,List<BmsMasterUser>> masterUsersMap = masterUsers.stream().collect(Collectors.groupingBy(BmsMasterUser::getType));
List<BmsMasterUser> channelMasterList = masterUsersMap.get(MasterUserType.Channel);
List<BmsMasterUser> pointMasterList = masterUsersMap.get(MasterUserType.Point);
List<String> channelIds = new ArrayList<>();
List<String> pointIds = new ArrayList<>();
channelIds.add("#");
pointIds.add("#");
if(CollectionUtil.isNotEmpty(channelMasterList)){
List<String> channelMasterIdsTmp = channelMasterList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList());
channelIds.addAll(channelMasterIdsTmp);
}
if(CollectionUtil.isNotEmpty(pointMasterList)){
List<String> pointMasterIdsTmp = pointMasterList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList());
pointIds.addAll(pointMasterIdsTmp);
}
lqw.and(qw->{
qw.in(BmsChannelPoint::getChannelId,channelIds).or().in(BmsChannelPoint::getId,pointIds);
});
if(param.getExportNum() != null && param.getExportNum()!= 0 //取消,当下逻辑只加载直属负责人的数据
&& param.getStartNum() != null && param.getStartNum()!= 0){ //过滤为当前负责人
lqw.last(" limit "+param.getStartNum() + "," + param.getExportNum()); // LambdaQueryWrapper<BmsMasterUser> masterLqw = new LambdaQueryWrapper<>();
} // masterLqw.in(BmsMasterUser::getType,MasterUserType.Channel,MasterUserType.Point);
// masterLqw.eq(BmsMasterUser::getUserId,AuthContextUtils.getSysUserId());
List<BmsChannelPoint> list = bmsChannelPointService.list(lqw); // List<BmsMasterUser> masterUsers = bmsMasterUserService.list(masterLqw);
// Map<String,List<BmsMasterUser>> masterUsersMap = masterUsers.stream().collect(Collectors.groupingBy(BmsMasterUser::getType));
// List<BmsMasterUser> channelMasterList = masterUsersMap.get(MasterUserType.Channel);
// List<BmsMasterUser> pointMasterList = masterUsersMap.get(MasterUserType.Point);
// List<String> channelIds = new ArrayList<>();
// List<String> pointIds = new ArrayList<>();
// channelIds.add("#");
// pointIds.add("#");
// if(CollectionUtil.isNotEmpty(channelMasterList)){
// List<String> channelMasterIdsTmp = channelMasterList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList());
// channelIds.addAll(channelMasterIdsTmp);
// }
// if(CollectionUtil.isNotEmpty(pointMasterList)){
// List<String> pointMasterIdsTmp = pointMasterList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList());
// pointIds.addAll(pointMasterIdsTmp);
// }
// lqw.and(qw->{
// qw.in(BmsChannelPoint::getChannelId,channelIds).or().in(BmsChannelPoint::getId,pointIds);
// });
//
// if(param.getExportNum() != null && param.getExportNum()!= 0
// && param.getStartNum() != null && param.getStartNum()!= 0){
// lqw.last(" limit "+param.getStartNum() + "," + param.getExportNum());
// }
//
// List<BmsChannelPoint> list = bmsChannelPointService.list(lqw);
List<String> bizRegionIds = new ArrayList<>(); List<String> bizRegionIds = new ArrayList<>();
bizRegionIds.addAll(list.stream().filter(a->a.getBizRegionId()!=null).map(a->a.getBizRegionId()).collect(Collectors.toList())); bizRegionIds.addAll(list.stream().filter(a->a.getBizRegionId()!=null).map(a->a.getBizRegionId()).collect(Collectors.toList()));
bizRegionIds = bizRegionIds.stream().distinct().collect(Collectors.toList()); bizRegionIds = bizRegionIds.stream().distinct().collect(Collectors.toList());

15
src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java

@ -1,8 +1,10 @@
package com.qs.serve.modules.erp.controller; package com.qs.serve.modules.erp.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.manager.AsyncFactory;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
@ -54,6 +56,19 @@ public class ErpCustomerController {
return R.error(); return R.error();
} }
/**
* 获取客户帐余(同步)
* @param code
* @return
*/
@GetMapping("/getAmountSync/{code}")
public R<ErpCustomerAmountResult> getAmountSync(@PathVariable String code){
ErpCustomerAmountResult amountResult = new ErpCustomerAmountResult();
String amount = AsyncFactory.getCumSurplusPrice(AuthContextUtils.getSysUserId(),code);
amountResult.setAmount(new BigDecimal(amount));
return R.ok(amountResult);
}
/** /**
* 初始化客户帐余 * 初始化客户帐余
* @param code * @param code

4
src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java

@ -38,5 +38,7 @@ public class ExlTableBo {
private List<ExlColumnConf> columnList; private List<ExlColumnConf> columnList;
/** 管理员配置 */ /** 管理员配置 */
private ExlTableUserBo adminParam; private ExlTableUserBo administratorParam;
private List<String> userIds;
} }

4
src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java

@ -58,7 +58,7 @@ public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlT
a.setId(null); a.setId(null);
}); });
columnConfService.saveBatch(columnList); columnConfService.saveBatch(columnList);
ExlTableUserBo tableUserBo = param.getAdminParam(); ExlTableUserBo tableUserBo = param.getAdministratorParam();
if(tableUserBo!=null){ if(tableUserBo!=null){
tableUserBo.setTableConfId(tableConf.getId()); tableUserBo.setTableConfId(tableConf.getId());
tableUserService.confAdmins(tableUserBo); tableUserService.confAdmins(tableUserBo);
@ -93,7 +93,7 @@ public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlT
}); });
columnConfService.saveBatch(columnList); columnConfService.saveBatch(columnList);
} }
ExlTableUserBo tableUserBo = param.getAdminParam(); ExlTableUserBo tableUserBo = param.getAdministratorParam();
if(tableUserBo!=null){ if(tableUserBo!=null){
tableUserBo.setTableConfId(tableConf.getId()); tableUserBo.setTableConfId(tableConf.getId());
tableUserService.confAdmins(tableUserBo); tableUserService.confAdmins(tableUserBo);

2
src/main/java/com/qs/serve/modules/goods/common/GoodsConst.java

@ -11,5 +11,7 @@ public class GoodsConst {
*/ */
public static final Integer SPEC_COUNT = 3; public static final Integer SPEC_COUNT = 3;
public static final Integer CATE_MAX_LEVEL = 3; public static final Integer CATE_MAX_LEVEL = 3;
//默认账套,开平
public static String DEFAULT_BOOK = "001";
} }

3
src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryRuleController.java

@ -58,6 +58,9 @@ public class GoodsCategoryRuleController {
@GetMapping("/page") @GetMapping("/page")
public R<PageVo<GoodsCategoryRule>> getPage(GoodsCategoryRule param){ public R<PageVo<GoodsCategoryRule>> getPage(GoodsCategoryRule param){
LambdaQueryWrapper<GoodsCategoryRule> lqw = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<GoodsCategoryRule> lqw = new LambdaQueryWrapper<>(param);
if(StringUtils.hasText(param.getBrandName())){
lqw.like(GoodsCategoryRule::getBrandNames,param.getBrandName());
}
PageUtil.startPage(); PageUtil.startPage();
List<GoodsCategoryRule> list = goodsCategoryRuleService.list(lqw); List<GoodsCategoryRule> list = goodsCategoryRuleService.list(lqw);
return R.byPageHelperList(list); return R.byPageHelperList(list);

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

@ -11,6 +11,7 @@ import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.ValidateTools; import com.qs.serve.common.util.ValidateTools;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBo;
@ -18,6 +19,7 @@ import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import com.qs.serve.modules.goods.service.*; import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.TbsActivityGoods; import com.qs.serve.modules.tbs.entity.TbsActivityGoods;
import com.qs.serve.modules.tbs.service.TbsActivityGoodsService; import com.qs.serve.modules.tbs.service.TbsActivityGoodsService;
@ -31,6 +33,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.stream.Collectors;
/** /**
* 商品 spu * 商品 spu
@ -74,6 +77,30 @@ public class GoodsSpuController {
return this.getPage(param); return this.getPage(param);
} }
/**
* 翻页搜索(组件接口),拓展SKU数据
* @param param
* @return
*/
@GetMapping("/shelfPageToSku")
public R<PageVo<GoodsSpu>> shelfPageToSku(GoodsSpu param){
PageVo<GoodsSpu> result = this.getShelfPage(param).getData();
List<GoodsSpu> goodsSpuList = result.getList();
List<String> spuCodes = goodsSpuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> toSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodes);
for (GoodsSpu spu : goodsSpuList) {
for (OmsSpuToSkuKey skuKey : toSkuKeys) {
if(spu.getSpuCode().equals(skuKey.getSkuCode())){
GoodsSku goodsSku = goodsSkuService.getByCode(skuKey.getInvCode());
spu.setSkuPrice(goodsSku.getSalesPrice());
break;
}
}
}
result.setList(goodsSpuList);
return R.ok(result);
}
/** /**
* 翻页搜索(组件接口) * 翻页搜索(组件接口)
* @apiNote 用于加载模板选中的商品 * @apiNote 用于加载模板选中的商品

3
src/main/java/com/qs/serve/modules/goods/entity/GoodsCategoryRule.java

@ -34,6 +34,7 @@ public class GoodsCategoryRule implements Serializable {
/** 标题 */ /** 标题 */
@NotBlank(message = "标题不能为空") @NotBlank(message = "标题不能为空")
@Length(max = 255,message = "标题长度不能超过255字") @Length(max = 255,message = "标题长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String label; private String label;
/** 品牌id */ /** 品牌id */
@ -84,6 +85,8 @@ public class GoodsCategoryRule implements Serializable {
@TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.UPDATE)
private String updateBy; private String updateBy;
@TableField(exist = false)
private String brandName;
public static GoodsCategoryRule toNewObject(GoodsCategoryRule source){ public static GoodsCategoryRule toNewObject(GoodsCategoryRule source){
GoodsCategoryRule categoryRule = new GoodsCategoryRule(); GoodsCategoryRule categoryRule = new GoodsCategoryRule();

2
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -144,5 +144,7 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<Long> selectCateIds; private List<Long> selectCateIds;
@TableField(exist = false)
private BigDecimal skuPrice;
} }

3
src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java

@ -8,6 +8,7 @@ import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo;
import com.qs.serve.modules.goods.entity.vo.GoodSkuBatchResult; import com.qs.serve.modules.goods.entity.vo.GoodSkuBatchResult;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -35,5 +36,7 @@ public interface GoodsSpuService extends IService<GoodsSpu> {
GoodSkuBatchResult editTasteBo(GoodsSpuTasteBo tasteProduct); GoodSkuBatchResult editTasteBo(GoodsSpuTasteBo tasteProduct);
List<OmsSpuToSkuKey> getSpuToSkuInfo(String book, List<String> skuCodes);
} }

22
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -2,7 +2,10 @@ package com.qs.serve.modules.goods.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.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.HttpUtil;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsFactory; import com.qs.serve.modules.bms.entity.BmsFactory;
import com.qs.serve.modules.bms.service.BmsFactoryService; import com.qs.serve.modules.bms.service.BmsFactoryService;
@ -13,6 +16,7 @@ import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo;
import com.qs.serve.modules.goods.entity.vo.*; import com.qs.serve.modules.goods.entity.vo.*;
import com.qs.serve.modules.goods.service.*; import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
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;
@ -20,7 +24,9 @@ import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* spu 服务实现类 * spu 服务实现类
@ -39,6 +45,7 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
private GoodsSkuSpecValueService goodsSkuSpecValueService; private GoodsSkuSpecValueService goodsSkuSpecValueService;
private GoodsCategoryService goodsCategoryService; private GoodsCategoryService goodsCategoryService;
private BmsFactoryService bmsFactoryService; private BmsFactoryService bmsFactoryService;
private ProjectApisProperties projectApisProperties;
@Override @Override
public List<GoodsSpu> selectSpuList(GoodsSpu goodsSpu) { public List<GoodsSpu> selectSpuList(GoodsSpu goodsSpu) {
@ -246,6 +253,21 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
return skuBatchResult; return skuBatchResult;
} }
/**
* 根据账套获取spu对应的sku
* @param book 账套
* @param skuCodes 嘉士利的SKU-CODE
* @return 嘉士利的invCode
*/
@Override
public List<OmsSpuToSkuKey> getSpuToSkuInfo(String book, List<String> skuCodes){
Map<String,Object> params = new HashMap<>();
params.put("book",book);
params.put("skuCode",skuCodes);
String apiUrl = projectApisProperties.getSpuToSku();
String response = HttpUtil.doPost(apiUrl, JsonUtil.objectToJson(params),null);
return JsonUtil.jsonToList(response,OmsSpuToSkuKey.class);
}
/** /**
* 关联上下级 * 关联上下级
* @param spu * @param spu

41
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -25,6 +25,7 @@ import com.qs.serve.modules.oms.entity.bo.OmsOrderSkuBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -34,6 +35,8 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_STATUS;
/** /**
* API订单模块 订单 * API订单模块 订单
* @author YenHex * @author YenHex
@ -52,6 +55,7 @@ public class OmsOrderApi {
private GoodsCategoryRuleService goodsCategoryRuleService; private GoodsCategoryRuleService goodsCategoryRuleService;
private GoodsSpuService goodsSpuService; private GoodsSpuService goodsSpuService;
private GoodsCategoryService goodsCategoryService; private GoodsCategoryService goodsCategoryService;
private SeeYonRequestBaseService seeYonRequestBaseService;
/** /**
* 确认订单 * 确认订单
@ -103,11 +107,19 @@ public class OmsOrderApi {
@PostMapping("/cancelOrder") @PostMapping("/cancelOrder")
public R<?> cancelOrder(@RequestBody @Valid OmsCancelOrder omsOrderBo){ public R<?> cancelOrder(@RequestBody @Valid OmsCancelOrder omsOrderBo){
OmsOrder omsOrder = omsOrderService.getById(omsOrderBo.getOrderId()); OmsOrder omsOrder = omsOrderService.getById(omsOrderBo.getOrderId());
if(omsOrder.getStatus().equals(0)&&omsOrder.getCheckState().equals(0)){ if(omsOrder.getStatus().equals(1)){
omsOrder.setStatus(2); //检索是否能取消
return R.ok(); String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS+"/"+omsOrder.getOrderSn()
,null
,"获取订单状态"
).getData();
if(!status.equals("0")){
omsOrder.setStatus(6);
omsOrderService.updateById(omsOrder);
return R.ok();
}
} }
return R.ok(omsOrderBo); return R.error("取消失败");
} }
/** /**
@ -198,13 +210,28 @@ public class OmsOrderApi {
* @param id * @param id
* @return * @return
*/ */
@PostMapping("/buildPriceOrder/{id}") @PostMapping("/buildPriceOrder/{id}/{amount}")
@SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE) @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE)
public R<?> buildPriceOrder(@PathVariable("id") String id){ public R<?> buildPriceOrder(@PathVariable("id") String id,@PathVariable("amount") String amount){
omsOrderService.buildPriceOrder(id); omsOrderService.buildPriceOrder(id,amount);
return R.ok(); return R.ok();
} }
/**
* 删除
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE)
public R<?> deleteById(@PathVariable("id") Long id){
OmsOrder dbOmsOrder = omsOrderService.getById(id);
if(dbOmsOrder.getStatus().equals(0)&&dbOmsOrder.getCheckState().equals(0)){
boolean result = omsOrderService.removeById(id);
return R.isTrue(result);
}
return R.error("当前状态无法删除");
}
} }

9
src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java

@ -48,11 +48,13 @@ public class OmsOrder implements Serializable {
/** 供应商编码 */ /** 供应商编码 */
@NotBlank(message = "供应商编码不能为空") @NotBlank(message = "供应商编码不能为空")
@Length(max = 20,message = "供应商编码长度不能超过20字") @Length(max = 20,message = "供应商编码长度不能超过20字")
@TableField(condition = SqlCondition.LIKE)
private String supplierCode; private String supplierCode;
/** 供应商名称 */ /** 供应商名称 */
@NotBlank(message = "供应商名称不能为空") @NotBlank(message = "供应商名称不能为空")
@Length(max = 30,message = "供应商名称长度不能超过30字") @Length(max = 30,message = "供应商名称长度不能超过30字")
@TableField(condition = SqlCondition.LIKE)
private String supplierName; private String supplierName;
/** 供应商收货地址id */ /** 供应商收货地址id */
@ -99,7 +101,12 @@ public class OmsOrder implements Serializable {
/** 是否加急 */ /** 是否加急 */
private Integer urgentFlag; private Integer urgentFlag;
/** 订单状态 0->草稿;1->下单;2->已确认 */ /** 订单状态
* 0->草稿
* 1->下单(同步到调度系统)
* 2->已确认(已生成报价单);
* 6->已取消
**/
private Integer status; private Integer status;
/** 备注 */ /** 备注 */

1
src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrder.java

@ -22,7 +22,6 @@ import javax.validation.constraints.NotBlank;
* @since 2023-10-09 * @since 2023-10-09
*/ */
@Data @Data
@TableName("oms_xlt_order")
public class OmsXltOrder implements Serializable { public class OmsXltOrder implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

2
src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrderItem.java

@ -37,6 +37,8 @@ public class OmsXltOrderItem implements Serializable {
@TableField("dingDanID") @TableField("dingDanID")
private String dingDanID; private String dingDanID;
private String spuCode;
/** 产品编号 */ /** 产品编号 */
@Length(max = 100,message = "产品编号长度不能超过100字") @Length(max = 100,message = "产品编号长度不能超过100字")
@TableField("chanPinBianHao") @TableField("chanPinBianHao")

10
src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java

@ -9,8 +9,14 @@ import lombok.Data;
@Data @Data
public class OmsSpuToSkuKey { public class OmsSpuToSkuKey {
private Long spuId; /**
* 实质为spuCode
*/
private String skuCode;
private Long skuId; /**
* 实质为skuCode
*/
private String invCode;
} }

23
src/main/java/com/qs/serve/modules/oms/entity/dto/XltOrderDTO.java

@ -0,0 +1,23 @@
package com.qs.serve.modules.oms.entity.dto;
import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.OmsXltOrder;
import com.qs.serve.modules.oms.entity.OmsXltOrderItem;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/10/17
*/
@Data
@AllArgsConstructor
public class XltOrderDTO {
OmsXltOrder xltOrder;
List<OmsXltOrderItem> xltOrderItemList;
}

14
src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderItemMapper.java

@ -1,14 +0,0 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsXltOrderItem;
/**
* 销路通订单明细 Mapper
* @author YenHex
* @date 2023-10-09
*/
public interface OmsXltOrderItemMapper extends BaseMapper<OmsXltOrderItem> {
}

14
src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderMapper.java

@ -1,14 +0,0 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsXltOrder;
/**
* 销路通订单 Mapper
* @author YenHex
* @date 2023-10-09
*/
public interface OmsXltOrderMapper extends BaseMapper<OmsXltOrder> {
}

2
src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java

@ -65,7 +65,7 @@ public interface OmsOrderService extends IService<OmsOrder> {
* 对接调度系统生成ERP的报价单 * 对接调度系统生成ERP的报价单
* @param id * @param id
*/ */
void buildPriceOrder(String id); void buildPriceOrder(String id,String amount);
} }

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

@ -2,6 +2,7 @@ package com.qs.serve.modules.oms.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.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
@ -9,6 +10,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule; import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.GoodsSpu;
@ -18,20 +20,16 @@ import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.*; import com.qs.serve.modules.oms.entity.*;
import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.dto.ErpOfferOrderParam; import com.qs.serve.modules.oms.entity.dto.*;
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsXltOrderItemMapper;
import com.qs.serve.modules.oms.mapper.OmsXltOrderMapper;
import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsShoppingCartService; import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import com.qs.serve.modules.sale.entity.SalePlan; import com.qs.serve.modules.sale.entity.SalePlan;
import com.qs.serve.modules.sale.entity.SalePlanGoods; import com.qs.serve.modules.sale.entity.SalePlanGoods;
import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper; import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper;
import com.qs.serve.modules.sale.mapper.SalePlanMapper; import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysDept; import com.qs.serve.modules.sys.entity.SysDept;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysDeptService; import com.qs.serve.modules.sys.service.SysDeptService;
@ -49,6 +47,8 @@ import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_CREATE;
/** /**
* 订单 服务实现类 * 订单 服务实现类
* @author YenHex * @author YenHex
@ -73,9 +73,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
private SalePlanGoodsMapper salePlanGoodsMapper; private SalePlanGoodsMapper salePlanGoodsMapper;
private OmsOrderItemService omsOrderItemService; private OmsOrderItemService omsOrderItemService;
private OmsXltOrderMapper omsXltOrderMapper;
private OmsXltOrderItemMapper omsXltOrderItemMapper;
private OmsShoppingCartService omsShoppingCartService; private OmsShoppingCartService omsShoppingCartService;
private SeeYonRequestBaseService seeYonRequestBaseService;
@Override @Override
@ -135,6 +134,17 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
.map(OmsOrderSkuBo.SpuParam::getSpuId).collect(Collectors.toList()); .map(OmsOrderSkuBo.SpuParam::getSpuId).collect(Collectors.toList());
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds); List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平(001)的sku
Map<Long,GoodsSpu> goodsSpuMap = new HashMap<>(spuList.size());
for (GoodsSpu goodsSpu : spuList) {
goodsSpuMap.put(goodsSpu.getId(),goodsSpu);
}
List<String> spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodeList);
Map<String,String> spuGetSkuMap = new HashMap<>(spuToSkuKeys.size());
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) {
spuGetSkuMap.put(toSkuKey.getSkuCode(),toSkuKey.getInvCode());
}
//构建临时购物车列表 //构建临时购物车列表
List<OmsShoppingCart> shoppingCartList = new ArrayList<>(); List<OmsShoppingCart> shoppingCartList = new ArrayList<>();
@ -145,14 +155,16 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
qty = spuParam.getQty(); qty = spuParam.getQty();
} }
} }
String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode());
GoodsSku goodsSku = goodsSkuService.getByCode(skuCode);
OmsShoppingCart shoppingCart = new OmsShoppingCart(); OmsShoppingCart shoppingCart = new OmsShoppingCart();
shoppingCart.setSpuId(goodsSpu.getId()); shoppingCart.setSpuId(goodsSpu.getId());
shoppingCart.setSpuCode(goodsSpu.getSpuCode()); shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setQuantity(qty); shoppingCart.setQuantity(qty);
shoppingCart.setSkuId(0L); shoppingCart.setSkuId(goodsSku.getId());
shoppingCart.setSkuCode(""); shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setSpecInfo(goodsSpu.getName()); shoppingCart.setSpecInfo(goodsSku.getSpecInfos());
shoppingCart.setAddPrice(BigDecimal.ZERO); shoppingCart.setAddPrice(goodsSku.getSalesPrice());
shoppingCartList.add(shoppingCart); shoppingCartList.add(shoppingCart);
} }
@ -209,6 +221,20 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setUrgentFlag(param.getUrgentFlag()); order.setUrgentFlag(param.getUrgentFlag());
order.setRemark(param.getRemark()); order.setRemark(param.getRemark());
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平(001)的sku
List<Long> spuIds = param.getOrderItems().stream().map(OmsOrderModifyParam.OmsOrderItemModifyBo::getSpuId).collect(Collectors.toList());
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
Map<Long,GoodsSpu> goodsSpuMap = new HashMap<>(spuList.size());
for (GoodsSpu goodsSpu : spuList) {
goodsSpuMap.put(goodsSpu.getId(),goodsSpu);
}
List<String> spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodeList);
Map<String,String> spuGetSkuMap = new HashMap<>(spuToSkuKeys.size());
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) {
spuGetSkuMap.put(toSkuKey.getSkuCode(),toSkuKey.getInvCode());
}
//构建新的item //构建新的item
List<OmsOrderItem> newOrderItemList = new ArrayList<>(); List<OmsOrderItem> newOrderItemList = new ArrayList<>();
List<OmsOrderModifyParam.OmsOrderItemModifyBo> orderModifyItems = param.getOrderItems(); List<OmsOrderModifyParam.OmsOrderItemModifyBo> orderModifyItems = param.getOrderItems();
@ -221,7 +247,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
}else { }else {
//PC下单 //PC下单
goodsSpu = goodsSpuService.getById(modifyItem.getSpuId()); //goodsSpu = goodsSpuService.getById(modifyItem.getSpuId());
goodsSpu = goodsSpuMap.get(modifyItem.getSpuId());
String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode());
goodsSku = goodsSkuService.getByCode(skuCode);
} }
OmsOrderItem orderItem = new OmsOrderItem(); OmsOrderItem orderItem = new OmsOrderItem();
orderItem.setOrderId(order.getId()); orderItem.setOrderId(order.getId());
@ -390,7 +419,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
} }
@Override @Override
public void buildPriceOrder(String id) { public void buildPriceOrder(String id,String amount) {
OmsOrder omsOrder = super.getById(id); OmsOrder omsOrder = super.getById(id);
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
// if(omsOrder==null || !omsOrder.getUserId().equals(userId)){ // if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
@ -401,36 +430,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw); List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw);
List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); //List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平的sku
List<OmsSpuToSkuKey> spuToSkuKeys = this.getSpuToSkuInfo("001",spuIds);
for (OmsOrderItem orderItem : orderItemList) {
if( orderItem.getSkuId()!=null && !orderItem.getSkuId().equals(0L) ){
continue;
}
//设置订单的sku信息
GoodsSku goodsSku = null;
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) {
if(orderItem.getSpuId().equals(toSkuKey.getSpuId())){
goodsSku = goodsSkuService.getById(toSkuKey.getSkuId());
break;
}
}
if(goodsSku==null){
Assert.throwEx("未能匹配当前账号的产品信息:"+orderItem.getSpuCode());
}else {
orderItem.setSkuId(goodsSku.getId());
orderItem.setSkuCode(goodsSku.getSkuCode());
orderItem.setSpecValues(goodsSku.getSpecInfos());
orderItem.setSalesPrice(goodsSku.getSalesPrice());
orderItem.setSalesPrice(goodsSku.getSalesPrice());
orderItem.setMarketPrice(goodsSku.getSalesPrice());
}
}
//更新设置sku后的信息 //更新设置sku后的信息
omsOrderItemService.updateBatchById(orderItemList); //omsOrderItemService.updateBatchById(orderItemList);
//直接调用U8接口生成 //直接调用U8接口生成
//SysUser sysUser = sysUserService.getById(userId); //SysUser sysUser = sysUserService.getById(userId);
@ -478,11 +482,14 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
} }
xltOrder.setDealerArea(bmsRegion.getPathNames()); xltOrder.setDealerArea(bmsRegion.getPathNames());
omsXltOrderMapper.insert(xltOrder);
//保存到临时表-明细表 //保存到临时表-明细表
for (OmsOrderItem orderItem : orderItemList) { List<OmsXltOrderItem> xltOrderItemList = new ArrayList<>();
for (int i = 0; i < orderItemList.size(); i++) {
OmsOrderItem orderItem = orderItemList.get(i);
OmsXltOrderItem xltOrderItem = new OmsXltOrderItem(); OmsXltOrderItem xltOrderItem = new OmsXltOrderItem();
xltOrderItem.setId(xltOrder.getId()+"_"+(i+1));
xltOrderItem.setDingDanID(xltOrder.getId()); xltOrderItem.setDingDanID(xltOrder.getId());
xltOrderItem.setSpuCode(orderItem.getSpuCode());
xltOrderItem.setChanPinBianHao(orderItem.getSkuCode()); xltOrderItem.setChanPinBianHao(orderItem.getSkuCode());
xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit()); xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit());
xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity()); xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity());
@ -494,9 +501,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
xltOrderItem.setRowCreateDate(nowTime); xltOrderItem.setRowCreateDate(nowTime);
xltOrderItem.setBeiZhu(null); xltOrderItem.setBeiZhu(null);
xltOrderItem.setZhuangTai(0); xltOrderItem.setZhuangTai(0);
omsXltOrderItemMapper.insert(xltOrderItem); xltOrderItemList.add(xltOrderItem);
} }
XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder,xltOrderItemList);
//请求到中间服务保存
seeYonRequestBaseService.postBase(ERP_ORDER_CREATE,xltOrderDTO,"创建订单:"+xltOrder.getDingDanHao());
//更新订单 //更新订单
omsOrder.setStatus(1); omsOrder.setStatus(1);
this.updateById(omsOrder); this.updateById(omsOrder);
@ -538,39 +547,5 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
offerOrder.setMakerName(sysUser.getName()); offerOrder.setMakerName(sysUser.getName());
} }
/**
* TODO: 根据账套获取spuId对应的skuId
* @param book 账套
* @param spuIds 嘉士利的SKU-CODE
* @return 嘉士利的invCode
*/
public List<OmsSpuToSkuKey> getSpuToSkuInfo(String book, List<Long> spuIds){
//TODO 测试数据
List<OmsSpuToSkuKey> rs = new ArrayList<>();
Long[] skuIds = {2315912284L,
2315912286L,
2315912287L,
2315912288L,
2315912289L,
2315912290L,
2315912291L,
2315912292L,
2315912293L,
2315912294L,
2315912295L,
2315912296L,
2315912297L,
2315912298L,
2315912300L,};
for (int i = 0; i < spuIds.size(); i++) {
OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey();
skuKey.setSpuId(spuIds.get(i));
skuKey.setSkuId(skuIds[i]);
rs.add(skuKey);
}
return rs;
}
} }

4
src/main/java/com/qs/serve/modules/sale/entity/SalePlan.java

@ -43,11 +43,13 @@ public class SalePlan implements Serializable {
/** 编码 */ /** 编码 */
@NotBlank(message = "编码不能为空") @NotBlank(message = "编码不能为空")
@Length(max = 50,message = "编码长度不能超过50字") @Length(max = 50,message = "编码长度不能超过50字")
@TableField(condition = SqlCondition.LIKE)
private String planCode; private String planCode;
/** 标题 */ /** 标题 */
@NotBlank(message = "标题不能为空") @NotBlank(message = "标题不能为空")
@Length(max = 255,message = "标题长度不能超过255字") @Length(max = 255,message = "标题长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String planTitle; private String planTitle;
/** 状态 */ /** 状态 */
@ -72,10 +74,12 @@ public class SalePlan implements Serializable {
/** 客户编码 */ /** 客户编码 */
@Length(max = 255,message = "客户编码长度不能超过255字") @Length(max = 255,message = "客户编码长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String supplierCode; private String supplierCode;
/** 客户名称 */ /** 客户名称 */
@Length(max = 255,message = "客户名称长度不能超过255字") @Length(max = 255,message = "客户名称长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String supplierName; private String supplierName;
/** 创建时间 */ /** 创建时间 */

13
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java

@ -282,7 +282,14 @@ public interface SeeYonOperationService extends SeeYonBaseService{
boolean isBackCommit = affairCommit.getState()==2; boolean isBackCommit = affairCommit.getState()==2;
if(result.getStatus()==200){ if(result.getStatus()==200){
// 判断是否含有下个节点 // 判断是否含有下个节点
String flag = result.getData(); //String flag = result.getData();
//取消异步防止导致各种异常
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String flag = checkAffairSummery(affairCommit.getTargetId());
//保存记录 //保存记录
try { try {
// 判断是否含有下个节点 // 判断是否含有下个节点
@ -307,10 +314,10 @@ public interface SeeYonOperationService extends SeeYonBaseService{
} }
//审批中(next)、完成(finish)、拒绝(refused) //审批中(next)、完成(finish)、拒绝(refused)
if("finish".equals(flag)){ if("finished".equals(flag)){
this.doFinished(affairCommit); this.doFinished(affairCommit);
return R.ok(); return R.ok();
}else if ("stop".equals(flag)){ }else if ("refuse".equals(flag)||"backed".equals(flag)){
if(isBackCommit){ if(isBackCommit){
this.doBacked(affairCommit); this.doBacked(affairCommit);
return R.ok(); return R.ok();

2
src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -83,6 +83,8 @@ public interface TbsSeeYonConst {
/** 客户账单余额 */ /** 客户账单余额 */
String ERP_CUS_AMOUNT = "/erp/customer/amount"; String ERP_CUS_AMOUNT = "/erp/customer/amount";
String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices"; String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices";
String ERP_ORDER_CREATE = "/erp/order/create";
String ERP_ORDER_STATUS = "/erp/order/getStatus";
String XLT_SAVE_CHECK = "/xlt/saveCheck"; String XLT_SAVE_CHECK = "/xlt/saveCheck";
String XLT_SAVE_PAYMENT = "/xlt/savePayment"; String XLT_SAVE_PAYMENT = "/xlt/savePayment";

13
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java

@ -209,6 +209,19 @@ public class TbsBudgetController {
return R.ok(); return R.ok();
} }
/**
* 更新预算指定模板
* @param param
* @return
*/
@PostMapping("/updateTemplates")
@SysLog(module = SystemModule.Budget, title = "更新预算指定模板", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:budget:update')")
public R<?> updateById(@RequestBody @Valid TbsBudgetTempBo param){
tbsBudgetService.updateTemplates(param);
return R.ok();
}
/** /**
* 修改周期金额 * 修改周期金额
* @param param * @param param

6
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java

@ -156,10 +156,16 @@ public class TbsBudget implements Serializable {
@JsonProperty @JsonProperty
private String delFlag; private String delFlag;
/** 是否指定模板类型的预算 */
private Integer templateFlag;
/** 附件id */ /** 附件id */
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] attachIds; private String[] attachIds;
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] templateIds;
/** 预算条件 */ /** 预算条件 */
@TableField(exist = false) @TableField(exist = false)
private List<TbsBudgetCondition> budgetConditionList; private List<TbsBudgetCondition> budgetConditionList;

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

@ -75,7 +75,7 @@ public class TbsCostApply implements Serializable {
private Integer chargeState; private Integer chargeState;
/** /**
* 核销状态 * 不参与业务流程核销状态
* 有这四个状态 * 有这四个状态
* 0-未核销代表这案子里面的所有活动都还未开始核销 * 0-未核销代表这案子里面的所有活动都还未开始核销
* 1-已通过代表这个案子的所有活动都已经核销完成 * 1-已通过代表这个案子的所有活动都已经核销完成

5
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java

@ -76,6 +76,11 @@ public class TbsBudgetBo implements Serializable {
private String[] attachIds; private String[] attachIds;
private String[] templateIds;
/** 是否指定模板类型的预算 */
private Integer templateFlag;
@Data @Data
public static class ScheduleItem{ public static class ScheduleItem{

24
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetTempBo.java

@ -0,0 +1,24 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/11/16
*/
@Data
public class TbsBudgetTempBo {
/** id */
@NotNull
private Long id;
private String[] templateIds;
/** 是否指定模板类型的预算 */
private Integer templateFlag;
}

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

@ -34,6 +34,8 @@ public class TbsActivityTemplateSo implements Serializable {
/** 模板状态 */ /** 模板状态 */
private Integer templateState; private Integer templateState;
private Integer contractFlag;
/** 备注 */ /** 备注 */
private String remark; private String remark;
} }

5
src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java

@ -174,5 +174,10 @@ public class TbsBudgetVo implements Serializable {
/** 变更列表 */ /** 变更列表 */
private List<?> changeList; private List<?> changeList;
/** 是否指定模板类型的预算 */
private Integer templateFlag;
/** 模板列表 */
private List<?> templateList;
} }

65
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.tbs.service; package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.AmountDTO; import com.qs.serve.common.model.AmountDTO;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
@ -7,10 +8,12 @@ import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil; import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil;
import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodsGroupDTO; import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodsGroupDTO;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableResultVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableResultVo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMatchMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMatchMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -34,13 +37,23 @@ public class TbsBudgetMatchApplication {
private final TbsActivityCenterGoodsService tbsActivityCenterGoodsService; private final TbsActivityCenterGoodsService tbsActivityCenterGoodsService;
private final TbsActivityService activityService; private final TbsActivityService activityService;
private final TbsBudgetMatchMapper budgetMatchMapper; private final TbsBudgetMatchMapper budgetMatchMapper;
private final TbsBudgetMapper budgetMapper;
public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable){ public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable){
List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId); List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId);
//list转map,减少循环代码
Map<Long,TbsActivity> activityMap = new HashMap<>(activityList.size()); Map<Long,TbsActivity> activityMap = new HashMap<>(activityList.size());
//模板过滤-活动指定预算
Map<Long,List<Long>> activityBudgetIdsMap = new HashMap<>(activityList.size());
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
activityMap.put(activity.getId(),activity); activityMap.put(activity.getId(),activity);
if(StringUtils.hasText(activity.getTemplateBudgetIds())){
List<Long> budgetIdsList = Arrays.stream(activity.getTemplateBudgetIds().split(",")).map(Long::parseLong)
.collect(Collectors.toList());
activityBudgetIdsMap.put(activity.getId(),budgetIdsList);
}
} }
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId); List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId);
// 记录使用金额 // 记录使用金额
@ -48,6 +61,8 @@ public class TbsBudgetMatchApplication {
// 提取命中的预算 // 提取命中的预算
Map<Long,TbsScheduleItemBudget> matchItemBudgetsMap = new HashMap<>(); Map<Long,TbsScheduleItemBudget> matchItemBudgetsMap = new HashMap<>();
Set<Long> scheduleItemBudgetIds = new HashSet<>(); Set<Long> scheduleItemBudgetIds = new HashSet<>();
//所有的预算
Set<Long> allBudgetIds = new HashSet<>();
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
// 通过TbsActivityCenterGoods获取匹配条件的预算 // 通过TbsActivityCenterGoods获取匹配条件的预算
List<TbsScheduleItemBudget> scheduleItemBudgetList = this.centerGoodsMatchTbsScheduleItemBudget(centerGoods); List<TbsScheduleItemBudget> scheduleItemBudgetList = this.centerGoodsMatchTbsScheduleItemBudget(centerGoods);
@ -56,17 +71,67 @@ public class TbsBudgetMatchApplication {
if(scheduleItemBudgetList.size()>0){ if(scheduleItemBudgetList.size()>0){
List<Long> sids = scheduleItemBudgetList.stream().map(TbsScheduleItemBudget::getId).collect(Collectors.toList()); List<Long> sids = scheduleItemBudgetList.stream().map(TbsScheduleItemBudget::getId).collect(Collectors.toList());
scheduleItemBudgetIds.addAll(sids); scheduleItemBudgetIds.addAll(sids);
List<Long> budgetIds = scheduleItemBudgetList.stream().map(TbsScheduleItemBudget::getBudgetId).collect(Collectors.toList());
allBudgetIds.addAll(budgetIds);
} }
centerGoods.setMatch2ScheduleItemBudgetList(scheduleItemBudgetList); centerGoods.setMatch2ScheduleItemBudgetList(scheduleItemBudgetList);
} }
//加载金额统计 //加载金额统计
this.batchInitScheduleAmount(activityCenterGoodsList, scheduleItemBudgetIds,costApplyId); this.batchInitScheduleAmount(activityCenterGoodsList, scheduleItemBudgetIds,costApplyId);
//加载所有预算
allBudgetIds.add(0L);
List<TbsBudget> allBudgetList = budgetMapper.selectBatchIds(allBudgetIds);
Map<Long,TbsBudget> allBudgetMap = new HashMap<>(allBudgetList.size());
for (TbsBudget budget : allBudgetList) {
allBudgetMap.put(budget.getId(),budget);
}
// 金额匹配 // 金额匹配
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
// 通过TbsActivityCenterGoods获取匹配条件的预算 // 通过TbsActivityCenterGoods获取匹配条件的预算
List<TbsScheduleItemBudget> scheduleItemBudgetList = centerGoods.getMatch2ScheduleItemBudgetList(); List<TbsScheduleItemBudget> scheduleItemBudgetList = centerGoods.getMatch2ScheduleItemBudgetList();
// 判断金额是否够扣 // 判断金额是否够扣
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) { for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) {
//跳过活动模板指定的预算
List<Long> matchActBudgetIds = activityBudgetIdsMap.get(centerGoods.getActivityId());
boolean notMatch = false;
if(CollectionUtil.isNotEmpty(matchActBudgetIds)){
notMatch = true;
for (Long budgetId : matchActBudgetIds) {
if(itemBudget.getBudgetId().equals(budgetId)){
notMatch = false;
break;
}
}
}
if(notMatch){
continue;
}
//跳过预算指定的模板
TbsActivity activity = activityMap.get(centerGoods.getActivityId());
String templateId = activity.getTemplateId()==null?null:activity.getTemplateId().toString();
TbsBudget budget = allBudgetMap.get(itemBudget.getBudgetId());
if (budget.getTemplateFlag().equals(1)) {
if(templateId==null||budget.getTemplateIds()==null||budget.getTemplateIds().length<1){
continue;
}
boolean matchTemId = false;
for (String budgetTemplateId : budget.getTemplateIds()) {
if(templateId.equals(budgetTemplateId)){
matchTemId = true;
break;
}
}
if(!matchTemId){
continue;
}
}
//开始匹配主要逻辑
Long scheduleItemBudgetId = itemBudget.getId(); Long scheduleItemBudgetId = itemBudget.getId();
BigDecimal usableAmt = usableAmountMap.get(scheduleItemBudgetId); BigDecimal usableAmt = usableAmountMap.get(scheduleItemBudgetId);
if(usableAmt==null){ if(usableAmt==null){

3
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java

@ -33,6 +33,9 @@ public interface TbsBudgetService extends IService<TbsBudget> {
void startBudget(Long id); void startBudget(Long id);
/** 更新模板 */
void updateTemplates(TbsBudgetTempBo tempBo);
// void modifyByExcel(TbsBudgetExcelBo budgetBo); // void modifyByExcel(TbsBudgetExcelBo budgetBo);
//void modifyByExcelBatch(TbsBudgetExcelBatchDto budgetBo); //void modifyByExcelBatch(TbsBudgetExcelBatchDto budgetBo);

39
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -33,11 +33,9 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.consts.ConditionMapEnum; import com.qs.serve.modules.tbs.common.consts.ConditionMapEnum;
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.TbsBudgetBo; import com.qs.serve.modules.tbs.entity.bo.*;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetMoveAmountBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo;
import com.qs.serve.modules.tbs.mapper.TbsActivityTemplateMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
@ -86,6 +84,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
private final TzcPolicyItemService tzcPolicyItemService; private final TzcPolicyItemService tzcPolicyItemService;
private final TbsBudgetCostItemPolicyService tbsBudgetCostItemPolicyService; private final TbsBudgetCostItemPolicyService tbsBudgetCostItemPolicyService;
private final VtbFundFlowService vtbFundFlowService; private final VtbFundFlowService vtbFundFlowService;
private final TbsActivityTemplateMapper tbsActivityTemplateMapper;
private SysAttachService attachService; private SysAttachService attachService;
private SeeYonRequestService seeYonService; private SeeYonRequestService seeYonService;
@ -189,6 +188,16 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
} }
budget.setBudgetCode(budgetBo.getBudgetCode()); budget.setBudgetCode(budgetBo.getBudgetCode());
budget.setSubjectId(budgetBo.getSubjectId()); budget.setSubjectId(budgetBo.getSubjectId());
//设置指定模板
budget.setTemplateIds(new String[]{});
if(budget.getTemplateFlag()!=null&&budget.getTemplateFlag().equals(1)){
if(budgetBo.getTemplateIds()!=null&&budgetBo.getTemplateIds().length>0){
budget.setTemplateIds(budgetBo.getTemplateIds());
}
budget.setTemplateFlag(1);
}else {
budget.setTemplateFlag(0);
}
BmsSubject subject = null; BmsSubject subject = null;
if(budget.getSubjectId()!=0L){ if(budget.getSubjectId()!=0L){
subject = subjectService.getById(budgetBo.getSubjectId()); subject = subjectService.getById(budgetBo.getSubjectId());
@ -342,6 +351,21 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
budgetLogService.saveBatch(budgetLogList); budgetLogService.saveBatch(budgetLogList);
} }
@Override
public void updateTemplates(TbsBudgetTempBo tempBo) {
TbsBudget budget = new TbsBudget();
budget.setId(tempBo.getId());
budget.setTemplateIds(new String[]{});
if(tempBo.getTemplateFlag()!=null&&tempBo.getTemplateFlag().equals(1)){
if(tempBo.getTemplateIds()!=null&&tempBo.getTemplateIds().length>0){
budget.setTemplateIds(tempBo.getTemplateIds());
}
budget.setTemplateFlag(1);
}else {
budget.setTemplateFlag(0);
}
this.updateById(budget);
}
@Override @Override
public TbsBudget getByCode(String code) { public TbsBudget getByCode(String code) {
@ -559,6 +583,13 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
budgetVo.setBudgetCheckState(TbsBudgetCheckState.State_1_apply); budgetVo.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
} }
} }
budgetVo.setTemplateFlag(budget.getTemplateFlag());
if(budget.getTemplateFlag().equals(1)&&budget.getTemplateIds()!=null&&budget.getTemplateIds().length>0){
List<TbsActivityTemplate> templates = tbsActivityTemplateMapper.selectBatchIds(Arrays.asList(budget.getTemplateIds()));
budgetVo.setTemplateList(templates);
}
return budgetVo; return budgetVo;
} }

53
src/main/java/com/qs/serve/modules/third/PortalGoodsController.java

@ -0,0 +1,53 @@
package com.qs.serve.modules.third;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import com.qs.serve.modules.third.entity.param.SkuToGetSpuParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author YenHex
* @since 2023/10/16
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("thirty/goods")
public class PortalGoodsController {
private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService;
/**
* 通过invCode获取spuCode
* @param param
* @return
*/
@PostMapping("getSpuBySku")
public List<OmsSpuToSkuKey> getSpuBySku(@RequestBody SkuToGetSpuParam param){
List<GoodsSku> skuList = goodsSkuService.getByCodes(param.getInvCodes());
List<OmsSpuToSkuKey> rs = new ArrayList<>();
for (GoodsSku sku : skuList) {
GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId());
OmsSpuToSkuKey key = new OmsSpuToSkuKey();
key.setSkuCode(goodsSpu.getSpuCode());
key.setInvCode(sku.getSkuCode());
rs.add(key);
}
return rs;
}
}

13
src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java

@ -0,0 +1,13 @@
package com.qs.serve.modules.third.entity.param;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/10/16
*/
@Data
public class SkuToGetSpuParam {
List<String> invCodes;
}

5
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -29,6 +29,7 @@ import com.qs.serve.modules.tbs.service.TbsActivityPayConditionService;
import com.qs.serve.modules.tbs.service.TbsActivityService; import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import com.qs.serve.modules.tbs.service.TbsActivitySubjectService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService; import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.*; import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo;
import com.qs.serve.modules.vtb.service.*; import com.qs.serve.modules.vtb.service.*;
@ -179,6 +180,10 @@ public class VtbVerificationController {
@PreAuthorize("hasRole('vtb:verification:query')") @PreAuthorize("hasRole('vtb:verification:query')")
public R<VtbVerification> getById(@PathVariable("id") String id){ public R<VtbVerification> getById(@PathVariable("id") String id){
VtbVerification vtbVerification = vtbVerificationService.getById(id); VtbVerification vtbVerification = vtbVerificationService.getById(id);
if(vtbVerification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){
vtbVerificationOperationService.runCompensate(id);
vtbVerification = vtbVerificationService.getById(id);
}
if(CollectionUtil.isNotEmpty(vtbVerification.getAttachIds())){ if(CollectionUtil.isNotEmpty(vtbVerification.getAttachIds())){
List<String> attachIds = Arrays.asList(vtbVerification.getAttachIds()); List<String> attachIds = Arrays.asList(vtbVerification.getAttachIds());
List<SysAttach> attachList = attachService.listByIds(attachIds); List<SysAttach> attachList = attachService.listByIds(attachIds);

36
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -33,6 +33,7 @@ import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
import com.qs.serve.modules.vtb.entity.VtbVerificationYard; import com.qs.serve.modules.vtb.entity.VtbVerificationYard;
import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem; import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem;
import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl;
import com.qs.serve.task.TbsTask; import com.qs.serve.task.TbsTask;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -89,29 +90,22 @@ public class VtbVerificationApplication {
} }
} }
} }
// List<TbsActivitySubject> activitySubjects = activitySubjectService.listByActivityId(verification.getActivityId());
// for (TbsActivitySubject activitySubject : activitySubjects) {
// for (TbsAffairCommitBo.AffairSubjectLine subjectLine : affairCommit.getAffairSubjectLines()) {
// if(subjectLine.getSubjectId()==null||subjectLine.getAmount()==null){
// return R.error("AffairSubjectLines参数错误");
// }
// if(subjectLine.getSubjectId().equals(activitySubject.getSubjectId())){
// BigDecimal used = activitySubject.getUsedAmount()==null?BigDecimal.ZERO:activitySubject.getUsedAmount();
// BigDecimal diff = activitySubject.getAmount().subtract(used);
// if(subjectLine.getAmount().compareTo(diff)>=0){
// return R.error("科目["+activitySubject.getSubjectName()+"]余额为:"+ diff);
// }
// }
// }
// }
} }
boolean isBackCommit = affairCommit.getState()==2; boolean isBackCommit = affairCommit.getState()==2;
R<String> result = seeYonService.commonCommit(affairCommit, TbsSeeYonConst.CostCheckConf.Code(),verification.getSyFormId()); R<String> result = seeYonService.commonCommit(affairCommit, TbsSeeYonConst.CostCheckConf.Code(),verification.getSyFormId());
if(result.getStatus()==200){ if(result.getStatus()==200){
// 判断是否含有下个节点 // 判断是否含有下个节点
String flag = result.getData(); //String flag = result.getData();
R r = commitAffairSuccess(affairCommit, verification, isBackCommit, flag); try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
VtbVerificationOperationServiceImpl verificationOperationService = SpringUtils.getBean(VtbVerificationOperationServiceImpl.class);
String summeryResult = verificationOperationService.checkAffairSummery(verification.getId().toString());
R r = commitAffairSuccess(affairCommit, verification, isBackCommit, summeryResult);
try { try {
//解决同步冻结时有过期的活动 //解决同步冻结时有过期的活动
TbsTask tbsTask = SpringUtils.getBean(TbsTask.class); TbsTask tbsTask = SpringUtils.getBean(TbsTask.class);
@ -169,9 +163,9 @@ public class VtbVerificationApplication {
yard.setComment(affairCommit.getComment()); yard.setComment(affairCommit.getComment());
yard.setCaseRemark(affairCommit.getCaseRemark()); yard.setCaseRemark(affairCommit.getCaseRemark());
//审批中(next)、完成(finish)、拒绝(refused) //审批中(next)、完成(finish)、拒绝(refused)
boolean isFinish = "finish".equals(flag); boolean isFinish = "finished".equals(flag);
boolean isNext = "next".equals(flag); boolean isNext = "next".equals(flag);
boolean isStop = "stop".equals(flag); boolean isStop = "backed".equals(flag)||"refuse".equals(flag);
//释放费用 //释放费用
boolean isRelease = affairCommit.getReleaseFlag()!=null&&affairCommit.getReleaseFlag().equals(1); boolean isRelease = affairCommit.getReleaseFlag()!=null&&affairCommit.getReleaseFlag().equals(1);
if (isStop){ if (isStop){
@ -284,10 +278,6 @@ public class VtbVerificationApplication {
vtbVerificationService.updateById(vtbVer); vtbVerificationService.updateById(vtbVer);
} }
} }
if(isNext){
//判断是否直接跳过审批的申请
AsyncManager.me().execute(AsyncFactory.saveVtbSubmit(verification.getId(), totalAmount,affairCommit.getState(),isRelease));
}
return R.ok(); return R.ok();
} }

16
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -57,6 +57,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
@ -446,6 +447,14 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void release(Long activityId,Boolean throwEx) { public void release(Long activityId,Boolean throwEx) {
String url = "unknown";
try {
HttpServletRequest request = ServletUtils.getRequest();
url = request.getRequestURI();
} catch (Exception e) {
e.printStackTrace();
}
log.warn("费用释放 activityId:{} url:{}",activityId,url);
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsActivity activity = activityService.getById(activityId); TbsActivity activity = activityService.getById(activityId);
if(!activity.getActivityState().equals(TbsActivityState.STATE_0_Todo)){ if(!activity.getActivityState().equals(TbsActivityState.STATE_0_Todo)){
@ -634,6 +643,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
payCondition.setFinishedFlag(2); payCondition.setFinishedFlag(2);
activityPayConditionService.updateById(payCondition); activityPayConditionService.updateById(payCondition);
} }
//更变费用申请的活动状态
TbsCostApply costApplyParam = new TbsCostApply();
costApplyParam.setId(costApply.getId());
costApplyParam.setCheckState(1);
costApplyService.updateById(costApplyParam);
//退回的审批跳过校验 //退回的审批跳过校验
boolean isCurrentCommit = verificationBo.getId()!=null; boolean isCurrentCommit = verificationBo.getId()!=null;
validActivity(cotractFlag,activity,true,isCurrentCommit); validActivity(cotractFlag,activity,true,isCurrentCommit);

Loading…
Cancel
Save