Browse Source

调整订单查询;添加异动记录

v1.0
Yen 2 years ago
parent
commit
fac2787ee1
  1. 7
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  2. 33
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  3. 1
      src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java
  4. 25
      src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey2.java
  5. 14
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  6. 11
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  7. 103
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostChangeInfo.java
  8. 14
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostChangeInfoMapper.java
  9. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java
  10. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityChannelService.java
  11. 16
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostChangeInfoService.java
  12. 8
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java
  13. 10
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityChannelServiceImpl.java
  14. 10
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java
  15. 260
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostChangeInfoServiceImpl.java
  16. 110
      src/main/java/com/qs/serve/modules/third/PortalGoodsController.java
  17. 2
      src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java
  18. 54
      src/main/resources/mapper/goods/GoodsSpuMapper.xml

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

@ -177,6 +177,7 @@ public class GoodsSpuController {
} }
List<GoodsSpu> goodsSpuList = goodsSpuService.list(spuLqw); List<GoodsSpu> goodsSpuList = goodsSpuService.list(spuLqw);
List<GoodsSpu> resultSpuList = new ArrayList<>();
for (GoodsSku sku : goodsSkus) { for (GoodsSku sku : goodsSkus) {
GoodsSpu spu = null; GoodsSpu spu = null;
for (GoodsSpu goodsSpu : goodsSpuList) { for (GoodsSpu goodsSpu : goodsSpuList) {
@ -204,10 +205,10 @@ public class GoodsSpuController {
spu.toSetSkuInfo(sku); spu.toSetSkuInfo(sku);
spu.setSkuSpecialFlag(sku.getSpecialFlag()); spu.setSkuSpecialFlag(sku.getSpecialFlag());
goodsSpuList.add(spu); resultSpuList.add(spu);
} }
this.initSpuWithCustomerPrice(query.getSupplierCode(), goodsSpuList,invCodes); this.initSpuWithCustomerPrice(query.getSupplierCode(), resultSpuList,invCodes);
return R.ok(goodsSpuList); return R.ok(resultSpuList);
} }
return R.ok(new ArrayList<>()); return R.ok(new ArrayList<>());
} }

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

@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
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.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
@ -29,6 +30,7 @@ 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.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.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -58,6 +60,7 @@ public class OmsOrderApi {
private GoodsSpuService goodsSpuService; private GoodsSpuService goodsSpuService;
private GoodsSkuService goodsSkuService; private GoodsSkuService goodsSkuService;
private GoodsCategoryService goodsCategoryService; private GoodsCategoryService goodsCategoryService;
private SysPostUserService postUserService;
private SeeYonRequestBaseService seeYonRequestBaseService; private SeeYonRequestBaseService seeYonRequestBaseService;
/** /**
@ -130,6 +133,7 @@ public class OmsOrderApi {
public R<PageVo<OmsOrder>> getPage(OmsOrder param){ public R<PageVo<OmsOrder>> getPage(OmsOrder param){
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId())); param.setSupplierId(Long.parseLong(supplier.getId()));
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param);
List<OmsOrder> list = omsOrderService.list(orderWrapper); List<OmsOrder> list = omsOrderService.list(orderWrapper);
@ -163,6 +167,35 @@ public class OmsOrderApi {
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }
/**
* 翻页查询(PC,我的业务订单)
* @param param
* @return
*/
@GetMapping("/pageUnder4pc")
public R<PageVo<OmsOrder>> getPageUnder4Pc(OmsOrder param){
String loginUserId = AuthContextUtils.getSysUserId();
List<String> userIds = postUserService.listByChildIds(loginUserId);
if(CollectionUtil.isEmpty(userIds)){
return R.byEmptyList();
}
PageUtil.startPage();
LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param);
orderWrapper.in(OmsOrder::getUserId,userIds);
orderWrapper.orderByDesc(OmsOrder::getId);
List<OmsOrder> list = omsOrderService.list(orderWrapper);
for (OmsOrder order : list) {
omsOrderService.checkMsOrderStatus(order);
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(order.getSupplierAddrId());
order.setAddressInfo(supplierAddress);
SysUser sysUser = sysUserService.getById(order.getCheckUserId());
if(sysUser!=null){
order.setCheckUserInfo(sysUser.toSysUserVo());
}
}
return R.byPageHelperList(list);
}
/** /**
* 根据ID查询 * 根据ID查询
* @param id * @param id

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

@ -9,6 +9,7 @@ import lombok.Data;
@Data @Data
public class OmsSpuToSkuKey { public class OmsSpuToSkuKey {
private String sourceInvCode;
/** /**
* 实质为spuCode * 实质为spuCode
*/ */

25
src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey2.java

@ -0,0 +1,25 @@
package com.qs.serve.modules.oms.entity.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2023/10/7
*/
@Data
public class OmsSpuToSkuKey2 {
private String sourceInvCode;
/**
* 实质为spuCode
*/
private String skuCode;
/**
* 实质为skuCode
*/
private String invCode;
}

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

@ -238,10 +238,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setSupplierCode(supplier.getSupplierCode()); order.setSupplierCode(supplier.getSupplierCode());
} }
//if(StringUtils.hasText(param.getUserId())){ //if(StringUtils.hasText(param.getUserId())){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); // SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
order.setUserId(param.getUserId()); // order.setUserId(param.getUserId());
order.setUserPhone(sysUser.getMobile()); // order.setUserPhone(sysUser.getMobile());
order.setUserCode(sysUser.getCode()); // order.setUserCode(sysUser.getCode());
//} //}
order.setBillType(param.getBillType()); order.setBillType(param.getBillType());
order.setUrgentFlag(param.getUrgentFlag()); order.setUrgentFlag(param.getUrgentFlag());
@ -547,6 +547,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
Assert.throwEx("空项目不支持下单"); Assert.throwEx("空项目不支持下单");
} }
for (OmsOrderItem orderItem : orderItemList) {
if(orderItem.getQuantity()==null||orderItem.getQuantity()<1){
Assert.throwEx("确认订单商品项数量不能为零");
}
}
//List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); //List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());

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

@ -718,5 +718,16 @@ public class TbsCostApplyController {
} }
/**
* 对比并建立异动信息
* @return
*/
@PostMapping("compareToBuildChangeInfo")
public R<?> compareToBuildChangeInfo(){
return R.ok();
}
} }

103
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostChangeInfo.java

@ -0,0 +1,103 @@
package com.qs.serve.modules.tbs.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-18
*/
@Data
@TableName("tbs_cost_change_info")
public class TbsCostChangeInfo implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 原费用申请ID */
private Long sourceId;
/** 新的费用申请ID */
private Long extendId;
/** 更变的表主体 */
@Length(max = 255,message = "更变的表主体长度不能超过255字")
private String changeType;
/** 修改信息 */
@Length(max = 512,message = "修改信息长度不能超过512字")
private String changeInfo;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
public static TbsCostChangeInfo toNewObject(String changeType,String changeInfo){
TbsCostChangeInfo costChangeInfo = new TbsCostChangeInfo();
costChangeInfo.setChangeType(changeType);
costChangeInfo.setChangeInfo(changeInfo);
return costChangeInfo;
}
public static TbsCostChangeInfo toNewObject(TbsCostChangeInfo source){
TbsCostChangeInfo costChangeInfo = new TbsCostChangeInfo();
costChangeInfo.setId(source.getId());
costChangeInfo.setSourceId(source.getSourceId());
costChangeInfo.setExtendId(source.getExtendId());
costChangeInfo.setChangeType(source.getChangeType());
costChangeInfo.setChangeInfo(source.getChangeInfo());
costChangeInfo.setCreateTime(source.getCreateTime());
costChangeInfo.setUpdateTime(source.getUpdateTime());
costChangeInfo.setTenantId(source.getTenantId());
costChangeInfo.setCreateBy(source.getCreateBy());
costChangeInfo.setUpdateBy(source.getUpdateBy());
costChangeInfo.setDelFlag(source.getDelFlag());
return costChangeInfo;
}
}

14
src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostChangeInfoMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tbs.entity.TbsCostChangeInfo;
/**
* 异动信息 Mapper
* @author YenHex
* @date 2023-12-18
*/
public interface TbsCostChangeInfoMapper extends BaseMapper<TbsCostChangeInfo> {
}

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

@ -14,8 +14,11 @@ import java.util.Map;
*/ */
public interface TbsActivityCenterService extends IService<TbsActivityCenter> { public interface TbsActivityCenterService extends IService<TbsActivityCenter> {
List<TbsActivityCenter> listByActivity(Long activityId); List<TbsActivityCenter> listByActivity(Long activityId);
List<TbsActivityCenter> listByActivity(Long activityId,Long subjectId);
Map<Long,List<TbsActivityCenter>> listByActivityMap(List<Long> activityIds); Map<Long,List<TbsActivityCenter>> listByActivityMap(List<Long> activityIds);
List<TbsActivityCenter> listByCostApplyId(Long costApplyId); List<TbsActivityCenter> listByCostApplyId(Long costApplyId);

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

@ -2,6 +2,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.TbsActivityChannel; import com.qs.serve.modules.tbs.entity.TbsActivityChannel;
import java.util.List;
/** /**
* 活动渠道项 服务接口 * 活动渠道项 服务接口
@ -10,5 +11,7 @@ import com.qs.serve.modules.tbs.entity.TbsActivityChannel;
*/ */
public interface TbsActivityChannelService extends IService<TbsActivityChannel> { public interface TbsActivityChannelService extends IService<TbsActivityChannel> {
List<TbsActivityChannel> listByActivityId(Long activityId);
} }

16
src/main/java/com/qs/serve/modules/tbs/service/TbsCostChangeInfoService.java

@ -0,0 +1,16 @@
package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.entity.TbsCostChangeInfo;
/**
* 异动信息 服务接口
* @author YenHex
* @date 2023-12-18
*/
public interface TbsCostChangeInfoService extends IService<TbsCostChangeInfo> {
void compareToBuildChangeInfo(Long orgId,Long newId);
}

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

@ -23,6 +23,14 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class TbsActivityCenterServiceImpl extends ServiceImpl<TbsActivityCenterMapper,TbsActivityCenter> implements TbsActivityCenterService { public class TbsActivityCenterServiceImpl extends ServiceImpl<TbsActivityCenterMapper,TbsActivityCenter> implements TbsActivityCenterService {
@Override
public List<TbsActivityCenter> listByActivity(Long activityId, Long subjectId) {
LambdaQueryWrapper<TbsActivityCenter> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsActivityCenter::getActivityId,activityId);
lqw.eq(TbsActivityCenter::getSubjectId,subjectId);
return this.list(lqw);
}
@Override @Override
public List<TbsActivityCenter> listByActivity(Long activityId) { public List<TbsActivityCenter> listByActivity(Long activityId) {
LambdaQueryWrapper<TbsActivityCenter> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsActivityCenter> lqw = new LambdaQueryWrapper<>();

10
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityChannelServiceImpl.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.tbs.service.impl; package com.qs.serve.modules.tbs.service.impl;
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 lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -8,6 +9,8 @@ import com.qs.serve.modules.tbs.entity.TbsActivityChannel;
import com.qs.serve.modules.tbs.service.TbsActivityChannelService; import com.qs.serve.modules.tbs.service.TbsActivityChannelService;
import com.qs.serve.modules.tbs.mapper.TbsActivityChannelMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityChannelMapper;
import java.util.List;
/** /**
* 活动渠道项 服务实现类 * 活动渠道项 服务实现类
* @author YenHex * @author YenHex
@ -18,5 +21,12 @@ import com.qs.serve.modules.tbs.mapper.TbsActivityChannelMapper;
@AllArgsConstructor @AllArgsConstructor
public class TbsActivityChannelServiceImpl extends ServiceImpl<TbsActivityChannelMapper,TbsActivityChannel> implements TbsActivityChannelService { public class TbsActivityChannelServiceImpl extends ServiceImpl<TbsActivityChannelMapper,TbsActivityChannel> implements TbsActivityChannelService {
@Override
public List<TbsActivityChannel> listByActivityId(Long activityId) {
LambdaQueryWrapper<TbsActivityChannel> act4Channel = new LambdaQueryWrapper<>();
act4Channel.eq(TbsActivityChannel::getActivityId,activityId);
return this.list(act4Channel);
}
} }

10
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java

@ -16,6 +16,8 @@ import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper;
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.mapper.SysUserMapper;
import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysAttachService;
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;
@ -58,15 +60,17 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
private TbsCostContractMapper costContractMapper; private TbsCostContractMapper costContractMapper;
private VtbVerificationMapper verificationMapper; private VtbVerificationMapper verificationMapper;
private TbsBudgetLogMapper tbsBudgetLogMapper; private TbsBudgetLogMapper tbsBudgetLogMapper;
private SysUserMapper sysUserMapper;
@Override @Override
public TbsCostApply copyById(Long costId) { public TbsCostApply copyById(Long costId) {
final String newCostApplyCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply); final String newCostApplyCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply);
TbsCostApply costApply = tbsCostApplyService.getById(costId); TbsCostApply costApply = tbsCostApplyService.getById(costId);
costApply.setId(null); costApply.setId(null);
costApply.setUserId(null); SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId());
costApply.setUserCode(null); costApply.setUserId(sysUser.getId());
costApply.setUserName(null); costApply.setUserCode(sysUser.getCode());
costApply.setUserName(sysUser.getName());
costApply.setCode(newCostApplyCode); costApply.setCode(newCostApplyCode);
costApply.setCreateBy(null); costApply.setCreateBy(null);
costApply.setCreateTime(null); costApply.setCreateTime(null);

260
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostChangeInfoServiceImpl.java

@ -0,0 +1,260 @@
package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectProperties;
import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper;
import com.qs.serve.modules.bir.mapper.BirBaseActivityMapper;
import com.qs.serve.modules.bir.mapper.BirRoiRateMapper;
import com.qs.serve.modules.bir.service.BirCenterRateService;
import com.qs.serve.modules.bir.service.BirRoiRateService;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierTargetMapper;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 异动信息 服务实现类
* @author YenHex
* @since 2023-12-18
*/
@Slf4j
@Service
@AllArgsConstructor
public class TbsCostChangeInfoServiceImpl extends ServiceImpl<TbsCostChangeInfoMapper,TbsCostChangeInfo> implements TbsCostChangeInfoService {
private TbsCostApplyService costApplyService;
private TbsBudgetApplicationService budgetApplicationService;
private TbsBudgetCostItemService budgetCostItemService;
private TbsBudgetLogService budgetLogService;
private SysUserService sysUserService;
private SeeYonRequestService seeYonService;
private TbsActivityTemplateService tbsActivityTemplateService;
private TbsActivityCenterService tbsActivityCenterService;
private TbsActivitySubjectService tbsActivitySubjectService;
private TbsActivityGoodsService tbsActivityGoodsService;
private TbsCostUnItemService tbsCostUnItemService;
private BmsSupplierService bmsSupplierService;
private BmsRegionMapper regionMapper;
private BmsRegion2Mapper region2Mapper;
private BmsSubjectService subjectService;
private TbsCostTodoMapper tbsCostTodoMapper;
private TbsActivitySlottingFeeMapper activitySlottingFeeMapper;
private TbsActivityPayConditionMapper tbsActivityPayConditionMapper;
private TbsActivityService activityService;
private TbsActivitySubjectService activitySubjectService;
private TbsActivityCenterService activityCenterService;
private TbsActivityChannelService activityChannelService;
@Override
public void compareToBuildChangeInfo(Long orgId, Long newId) {
List<TbsCostChangeInfo> changeInfoList = new ArrayList<>();
TbsCostApply oldApply = costApplyService.getById(orgId);
TbsCostApply newApply = costApplyService.getById(newId);
if(!oldApply.getChargeTheme().equals(newApply.getChargeTheme())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("档案标题更变",newApply.getChargeTheme()));
}
List<TbsActivity> orgActivityList = activityService.listByCostApplyId(orgId);
List<TbsActivity> newActivityList = activityService.listByCostApplyId(newId);
// 判断活动减少 && 活动内容变更
for (TbsActivity orgAct : orgActivityList) {
boolean orgMatchNewAct = false;
for (TbsActivity newAct : newActivityList) {
if(orgAct.getActivityCode().equals(newAct.getActivityCode())){
orgMatchNewAct = true;
if(orgAct.getActTitle().equals(newAct.getActTitle())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动活动简述及目的更变",newAct.getActTitle()));
}
if(!orgAct.getActStartDate().equals(newAct.getActStartDate())||!orgAct.getActEndDate().equals(newAct.getActEndDate())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+newAct.getActivityCode()+"]时间更变",
"原:"+orgAct.getActStartDate().toString()+"-"+orgAct.getActEndDate()+" ;"+
"异动后:" +newAct.getActStartDate().toString()+"-"+newAct.getActEndDate())
);
}
if(!orgAct.getPreStartDate().equals(newAct.getPreStartDate())||
!orgAct.getPreEndDate().equals(newAct.getPreEndDate())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+newAct.getActivityCode()+"]预计核销日期更变",
"原:"+orgAct.getPreStartDate().toString()+"-"+orgAct.getPreEndDate()+" ;"+
"异动后:" +newAct.getPreStartDate().toString()+"-"+newAct.getPreEndDate())
);
}
List<TbsActivitySubject> subjectNewList = activitySubjectService.listByActivityId(newAct.getId());
List<TbsActivitySubject> subjectOrgList = activitySubjectService.listByActivityId(orgAct.getId());
//处理科目异动
this.buildByActivitySubject(orgAct,subjectNewList, subjectOrgList,changeInfoList );
//处理网点异动
this.buildChannelByActs(orgAct, newAct,changeInfoList);
this.buildPointByActs(orgAct, newAct,changeInfoList);
break;
}
}
if(!orgMatchNewAct){
changeInfoList.add(TbsCostChangeInfo.toNewObject("移除活动","["+orgAct.getActivityCode()+"]"+orgAct.getActTitle()));
}
}
// 判断活动新增
for (TbsActivity newAct : newActivityList) {
boolean matchNewAct = false;
for (TbsActivity orgAct : orgActivityList) {
if(orgAct.getActivityCode().equals(newAct.getActivityCode())){
matchNewAct = true;
}
}
if(!matchNewAct){
changeInfoList.add(TbsCostChangeInfo.toNewObject("新增活动","["+newAct.getActivityCode()+"]"+newAct.getActTitle()));
}
}
}
private void buildPointByActs(TbsActivity orgAct, TbsActivity newAct,List<TbsCostChangeInfo> changeInfoList ) {
}
private void buildChannelByActs(TbsActivity orgAct, TbsActivity newAct,List<TbsCostChangeInfo> changeInfoList ) {
List<TbsActivityChannel> oldChannelList = activityChannelService.listByActivityId(orgAct.getId());
List<TbsActivityChannel> newChannelList = activityChannelService.listByActivityId(newAct.getId());
boolean hasChannel = oldChannelList.size()>0||newChannelList.size()>0;
if(hasChannel){
for (TbsActivityChannel oldChannel : oldChannelList) {
boolean matchOld = false;
for (TbsActivityChannel newChannel : newChannelList) {
if(oldChannel.getChannelId().equals(newChannel.getChannelId())){
matchOld = true;
if(oldChannel.getChannelRate().compareTo(newChannel.getChannelRate())!=0 ||
!oldChannel.getPreCountPoint().equals(newChannel.getPreCountPoint())
){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+orgAct.getActivityCode()+"]渠道更变",
"原费用占比:"+oldChannel.getChannelRate()+"% 投放网点数量: "+oldChannel.getPreCountPoint()
+"; 原费用占比:"+newChannel.getChannelRate()+"% 投放网点数量: "+newChannel.getPreCountPoint()));
}
}
}
if(!matchOld){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+orgAct.getActivityCode()+"]渠道删除",
oldChannel.getChannelCode()+"/"+oldChannel.getChannelName()+",费用占比:"+
oldChannel.getChannelRate()+"% 投放网点数量: "+oldChannel.getPreCountPoint()));
}
}
for (TbsActivityChannel newChannel : newChannelList) {
boolean matchNew = false;
for (TbsActivityChannel oldChannel : oldChannelList) {
if(oldChannel.getChannelId().equals(newChannel.getChannelId())){
matchNew = true;
}
}
if(!matchNew){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+orgAct.getActivityCode()+"]渠道新增",
newChannel.getChannelCode()+"/"+newChannel.getChannelName()+",费用占比:"+
newChannel.getChannelRate()+"% 投放网点数量: "+newChannel.getPreCountPoint()));
}
}
}
}
private void buildByActivitySubject(TbsActivity activity,List<TbsActivitySubject> subjectNewList, List<TbsActivitySubject> subjectOrgList,List<TbsCostChangeInfo> changeInfoList ) {
for (TbsActivitySubject oldSubject : subjectOrgList) {
boolean matchNew = false;
for (TbsActivitySubject newSubject : subjectNewList) {
if(newSubject.getSubjectId().equals(oldSubject.getSubjectId())){
matchNew = true;
if(!newSubject.getAmount().equals(oldSubject.getAmount())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+activity.getActivityCode()+"]的科目["+newSubject.getSubjectName()+"]金额调整",
"原来金额:"+oldSubject.getAmount()+" 异动后金额:"+newSubject.getAmount()));
}
if(!newSubject.getCountSession().equals(oldSubject.getCountSession())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+activity.getActivityCode()+"]的科目["+newSubject.getSubjectName()+"]场次调整",
"原来场次:"+oldSubject.getCountSession()+" 异动后场次:"+newSubject.getCountSession()));
}
if(!newSubject.getCountPerson().equals(oldSubject.getCountPerson())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+activity.getActivityCode()+"]的科目["+newSubject.getSubjectName()+"]场次调整",
"原来人数:"+oldSubject.getCountPerson()+" 异动后人数:"+newSubject.getCountPerson()));
}
//异动的成本中心
this.buildCenterChangeLog(activity, oldSubject, newSubject,changeInfoList );
break;
}
}
if(!matchNew){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动移除科目",
"活动["+activity.getActivityCode()+"]移除科目["+oldSubject.getSubjectCode()+"]"+oldSubject.getSubjectName()));
}
}
for (TbsActivitySubject newSubject : subjectNewList) {
boolean matchOld = false;
for (TbsActivitySubject oldSubject : subjectOrgList) {
if(newSubject.getSubjectId().equals(oldSubject.getSubjectId())){
matchOld = true;
break;
}
}
if(!matchOld){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动新增科目",
"活动["+activity.getActivityCode()+"]新科目["+newSubject.getSubjectCode()+"]"+newSubject.getSubjectName()));
}
}
}
private void buildCenterChangeLog(TbsActivity activity, TbsActivitySubject oldSubject, TbsActivitySubject newSubject,List<TbsCostChangeInfo> changeInfoList ) {
List<TbsActivityCenter> newCenterList = activityCenterService.listByActivity(activity.getId(), newSubject.getId());
List<TbsActivityCenter> oldCenterList = activityCenterService.listByActivity(activity.getId(), oldSubject.getId());
for (TbsActivityCenter newCenter : newCenterList) {
boolean matchOld = false;
for (TbsActivityCenter oldCenter : oldCenterList) {
if(newCenter.getCenterType().equals(oldCenter.getCenterType())
&&newCenter.getCenterId().equals(oldCenter.getCenterId())){
matchOld = true;
if(!newCenter.getCenterRate().equals(oldCenter.getCenterRate())
||!newCenter.getCenterAmount().equals(oldCenter.getCenterAmount())){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+activity.getActivityCode()+"]科目["+newSubject.getSubjectCode()+"]成本中心调整",
"原来占比:"+oldCenter.getCenterRate()+"% 合计:"+oldCenter.getCenterAmount()+" ;" +
" 异动后: "+newCenter.getCenterRate()+"% 合计: "+newCenter.getCenterAmount()
)
);
}
}
}
if(!matchOld){
changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+activity.getActivityCode()+"]科目["+newSubject.getSubjectCode()+"]新增成本中心",newCenter.getCenterName()));
}
}
for (TbsActivityCenter oldCenter : oldCenterList) {
boolean matchNew = false;
for (TbsActivityCenter newCenter : newCenterList) {
if(newCenter.getCenterType().equals(oldCenter.getCenterType())
&&newCenter.getCenterId().equals(oldCenter.getCenterId())){
matchNew = true;
}
}
if(!matchNew){changeInfoList.add(TbsCostChangeInfo.toNewObject("活动["+activity.getActivityCode()+"]科目["+newSubject.getSubjectCode()+"]移除成本中心",
oldCenter.getCenterName()));
}
}
}
}

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

@ -1,11 +1,16 @@
package com.qs.serve.modules.third; package com.qs.serve.modules.third;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
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;
import com.qs.serve.modules.goods.service.GoodsSkuService; 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.dto.OmsSpuToSkuKey; import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey2;
import com.qs.serve.modules.sys.entity.SysDictData;
import com.qs.serve.modules.sys.service.SysDictDataService;
import com.qs.serve.modules.third.entity.GoodsToSkuParam; import com.qs.serve.modules.third.entity.GoodsToSkuParam;
import com.qs.serve.modules.third.entity.param.SkuToGetSpuParam; import com.qs.serve.modules.third.entity.param.SkuToGetSpuParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -31,6 +36,7 @@ public class PortalGoodsController {
private GoodsSkuService goodsSkuService; private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService; private GoodsSpuService goodsSpuService;
private SysDictDataService dictDataService;
/** /**
* 通过invCode获取spuCode * 通过invCode获取spuCode
@ -39,16 +45,91 @@ public class PortalGoodsController {
*/ */
@PostMapping("getSpuBySku") @PostMapping("getSpuBySku")
public List<OmsSpuToSkuKey> getSpuBySku(@RequestBody SkuToGetSpuParam param){ public List<OmsSpuToSkuKey> getSpuBySku(@RequestBody SkuToGetSpuParam param){
LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysDictData::getGroupKey,"book-code-to-belong");
List<SysDictData> sysDictDataList = dictDataService.list(lqw);
String placeName = null;
for (SysDictData dictData : sysDictDataList) {
if(dictData.getKeyVal().equals(param.getPlaceName())){
placeName = dictData.getLabel();
}
}
if(placeName==null){
log.warn("字典缺账套{}配置",param.getPlaceName());
Assert.throwEx("缺账套["+param.getPlaceName()+"]配置");
}
List<GoodsSku> skuList = goodsSkuService.getByCodes(param.getInvCodes()); List<GoodsSku> skuList = goodsSkuService.getByCodes(param.getInvCodes());
List<OmsSpuToSkuKey> rs = new ArrayList<>(); List<OmsSpuToSkuKey> specialSkuKey = new ArrayList<>();
List<OmsSpuToSkuKey> normalSkuKey = new ArrayList<>();
List<OmsSpuToSkuKey> unMatchSkuKey = new ArrayList<>();
List<Long> spuIds = skuList.stream().filter(a->a.getSpecialFlag()!=1)
.map(a->a.getSpuId()).collect(Collectors.toList());
LambdaQueryWrapper<GoodsSku> skuLqw = new LambdaQueryWrapper<>();
skuLqw.eq(GoodsSku::getBelong,placeName);
skuLqw.eq(GoodsSku::getOrderFlag,1);
skuLqw.in(GoodsSku::getSpuId,spuIds);
List<GoodsSku> normalSkus = goodsSkuService.list(skuLqw);
LambdaQueryWrapper<GoodsSku> skuLqw2 = new LambdaQueryWrapper<>();
skuLqw2.eq(GoodsSku::getBelong,"开平");
skuLqw2.eq(GoodsSku::getOrderFlag,1);
skuLqw2.in(GoodsSku::getSpuId,spuIds);
List<GoodsSku> kpSkus = goodsSkuService.list(skuLqw2);
for (GoodsSku sku : skuList) { for (GoodsSku sku : skuList) {
GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId()); if(sku.getSpecialFlag()==1){
OmsSpuToSkuKey key = new OmsSpuToSkuKey(); //特殊品不转换
key.setSkuCode(goodsSpu.getSpuCode()); OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey();
key.setInvCode(sku.getSkuCode()); skuKey.setInvCode(sku.getSkuCode());
rs.add(key); skuKey.setWeight(sku.getWeight().toString());
skuKey.setVolume(sku.getVolume().toString());
skuKey.setSourceInvCode(sku.getSkuCode());
specialSkuKey.add(skuKey);
}else{
Boolean matchFlag = false;
for(GoodsSku normalsku:normalSkus){
//相同SPUID,取值
if(normalsku.getSpuId().equals(sku.getSpuId())){
OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey();
skuKey.setInvCode(normalsku.getSkuCode());
skuKey.setWeight(normalsku.getWeight().toString());
skuKey.setVolume(normalsku.getVolume().toString());
skuKey.setSourceInvCode(sku.getSkuCode());
normalSkuKey.add(skuKey);
matchFlag = true;
break;
}
}
//没有匹配的SKU,换成KP
if(!matchFlag){
for(GoodsSku kpSku:kpSkus) {
if(kpSku.getSpuId().equals(sku.getSpuId())){
OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey();
skuKey.setInvCode(kpSku.getSkuCode());
skuKey.setWeight(kpSku.getWeight().toString());
skuKey.setVolume(kpSku.getVolume().toString());
skuKey.setSourceInvCode(sku.getSkuCode());
unMatchSkuKey.add(skuKey);
break;
}
} }
return rs; }
}
}
List<OmsSpuToSkuKey> skuKeys = new ArrayList<>();
skuKeys.addAll(specialSkuKey);
skuKeys.addAll(normalSkuKey);
skuKeys.addAll(unMatchSkuKey);
return skuKeys;
} }
/** /**
@ -58,7 +139,20 @@ public class PortalGoodsController {
*/ */
@PostMapping("matchInvCode") @PostMapping("matchInvCode")
public List<OmsSpuToSkuKey> matchInvCode(@RequestBody GoodsToSkuParam param){ public List<OmsSpuToSkuKey> matchInvCode(@RequestBody GoodsToSkuParam param){
return goodsSpuService.getSpuToSkuInfo(param.getPlaceName(), param.getSpuCodes()); LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysDictData::getGroupKey,"book-code-to-belong");
List<SysDictData> sysDictDataList = dictDataService.list(lqw);
String placeName = null;
for (SysDictData dictData : sysDictDataList) {
if(dictData.getKeyVal().equals(param.getPlaceName())){
placeName = dictData.getLabel();
}
}
if(placeName==null){
log.warn("字典缺账套{}配置",param.getPlaceName());
placeName = "开平";
}
return goodsSpuService.getSpuToSkuInfo(placeName, param.getSpuCodes());
} }
/** /**

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

@ -9,5 +9,7 @@ import java.util.List;
*/ */
@Data @Data
public class SkuToGetSpuParam { public class SkuToGetSpuParam {
String placeName;
List<String> invCodes; List<String> invCodes;
} }

54
src/main/resources/mapper/goods/GoodsSpuMapper.xml

@ -164,9 +164,32 @@
<include refid="goodsSpuSql"/>, <include refid="goodsSpuSql"/>,
<include refid="goodsSkuSql"/> <include refid="goodsSkuSql"/>
FROM ( FROM (
(SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn FROM goods_sku sku WHERE sku.order_flag = 1 AND sku.special_flag = 0) (
SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn
FROM goods_sku sku
left join goods_spu spu on sku.spu_id = spu.id
WHERE sku.order_flag = 1 AND sku.special_flag = 0
<if test="query.keyword != null and query.keyword != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keyword},'%') or
`sku`.`sku_name` like concat('%', #{query.keyword},'%') or
`spu`.`name` like concat('%', #{query.keyword},'%') or
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
)
UNION ALL UNION ALL
SELECT sku.*,1 as rn FROM goods_sku sku WHERE sku.special_flag = 1 SELECT sku.*,1 as rn FROM goods_sku sku
left join goods_spu spu on sku.spu_id = spu.id
WHERE sku.special_flag = 1
<if test="query.keyword != null and query.keyword != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keyword},'%') or
`sku`.`sku_name` like concat('%', #{query.keyword},'%') or
`spu`.`name` like concat('%', #{query.keyword},'%') or
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
) AS goods_sku ) AS goods_sku
left join goods_spu on goods_sku.spu_id = goods_spu.id left join goods_spu on goods_sku.spu_id = goods_spu.id
LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first` LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first`
@ -184,9 +207,32 @@
SELECT SELECT
count(1) count(1)
FROM ( FROM (
(SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn FROM goods_sku sku WHERE sku.order_flag = 1 AND sku.special_flag = 0) (
SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn
FROM goods_sku sku
left join goods_spu spu on sku.spu_id = spu.id
WHERE sku.order_flag = 1 AND sku.special_flag = 0
<if test="query.keyword != null and query.keyword != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keyword},'%') or
`sku`.`sku_name` like concat('%', #{query.keyword},'%') or
`spu`.`name` like concat('%', #{query.keyword},'%') or
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
)
UNION ALL UNION ALL
SELECT sku.*,1 as rn FROM goods_sku sku WHERE sku.special_flag = 1 SELECT sku.*,1 as rn FROM goods_sku sku
left join goods_spu spu on sku.spu_id = spu.id
WHERE sku.special_flag = 1
<if test="query.keyword != null and query.keyword != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keyword},'%') or
`sku`.`sku_name` like concat('%', #{query.keyword},'%') or
`spu`.`name` like concat('%', #{query.keyword},'%') or
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
) AS goods_sku ) AS goods_sku
left join goods_spu on goods_sku.spu_id = goods_spu.id left join goods_spu on goods_sku.spu_id = goods_spu.id
<where> <where>

Loading…
Cancel
Save