diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index 6305f737..c8c6ad12 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -177,6 +177,7 @@ public class GoodsSpuController { } List goodsSpuList = goodsSpuService.list(spuLqw); + List resultSpuList = new ArrayList<>(); for (GoodsSku sku : goodsSkus) { GoodsSpu spu = null; for (GoodsSpu goodsSpu : goodsSpuList) { @@ -204,10 +205,10 @@ public class GoodsSpuController { spu.toSetSkuInfo(sku); spu.setSkuSpecialFlag(sku.getSpecialFlag()); - goodsSpuList.add(spu); + resultSpuList.add(spu); } - this.initSpuWithCustomerPrice(query.getSupplierCode(), goodsSpuList,invCodes); - return R.ok(goodsSpuList); + this.initSpuWithCustomerPrice(query.getSupplierCode(), resultSpuList,invCodes); + return R.ok(resultSpuList); } return R.ok(new ArrayList<>()); } diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 58dc1591..9dfc0541 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/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.SystemModule; 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.modules.bms.entity.BmsSupplier; 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.seeyon.service.impl.SeeYonRequestBaseService; 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 lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -58,6 +60,7 @@ public class OmsOrderApi { private GoodsSpuService goodsSpuService; private GoodsSkuService goodsSkuService; private GoodsCategoryService goodsCategoryService; + private SysPostUserService postUserService; private SeeYonRequestBaseService seeYonRequestBaseService; /** @@ -130,6 +133,7 @@ public class OmsOrderApi { public R> getPage(OmsOrder param){ BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); param.setSupplierId(Long.parseLong(supplier.getId())); + PageUtil.startPage(); LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(param); List list = omsOrderService.list(orderWrapper); @@ -163,6 +167,35 @@ public class OmsOrderApi { return R.byPageHelperList(list); } + /** + * 翻页查询(PC,我的业务订单) + * @param param + * @return + */ + @GetMapping("/pageUnder4pc") + public R> getPageUnder4Pc(OmsOrder param){ + String loginUserId = AuthContextUtils.getSysUserId(); + List userIds = postUserService.listByChildIds(loginUserId); + if(CollectionUtil.isEmpty(userIds)){ + return R.byEmptyList(); + } + PageUtil.startPage(); + LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(param); + orderWrapper.in(OmsOrder::getUserId,userIds); + orderWrapper.orderByDesc(OmsOrder::getId); + List 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查询 * @param id diff --git a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java index 1226c471..48d3864f 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java @@ -9,6 +9,7 @@ import lombok.Data; @Data public class OmsSpuToSkuKey { + private String sourceInvCode; /** * 实质为spuCode */ diff --git a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey2.java b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey2.java new file mode 100644 index 00000000..9ab70498 --- /dev/null +++ b/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; + + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 9639c5d9..5d8b891f 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -238,10 +238,10 @@ public class OmsOrderServiceImpl extends ServiceImpl im order.setSupplierCode(supplier.getSupplierCode()); } //if(StringUtils.hasText(param.getUserId())){ - SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); - order.setUserId(param.getUserId()); - order.setUserPhone(sysUser.getMobile()); - order.setUserCode(sysUser.getCode()); +// SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); +// order.setUserId(param.getUserId()); +// order.setUserPhone(sysUser.getMobile()); +// order.setUserCode(sysUser.getCode()); //} order.setBillType(param.getBillType()); order.setUrgentFlag(param.getUrgentFlag()); @@ -547,6 +547,12 @@ public class OmsOrderServiceImpl extends ServiceImpl im Assert.throwEx("空项目不支持下单"); } + for (OmsOrderItem orderItem : orderItemList) { + if(orderItem.getQuantity()==null||orderItem.getQuantity()<1){ + Assert.throwEx("确认订单商品项数量不能为零"); + } + } + //List spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 25d01430..faf9702e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/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(); + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostChangeInfo.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostChangeInfo.java new file mode 100644 index 00000000..65bec074 --- /dev/null +++ b/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; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostChangeInfoMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostChangeInfoMapper.java new file mode 100644 index 00000000..2a3b3570 --- /dev/null +++ b/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 { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java index 58602a35..0ba3c644 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java @@ -14,8 +14,11 @@ import java.util.Map; */ public interface TbsActivityCenterService extends IService { + List listByActivity(Long activityId); + List listByActivity(Long activityId,Long subjectId); + Map> listByActivityMap(List activityIds); List listByCostApplyId(Long costApplyId); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityChannelService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityChannelService.java index c6dda481..facc55fb 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityChannelService.java +++ b/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.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 { + List listByActivityId(Long activityId); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostChangeInfoService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostChangeInfoService.java new file mode 100644 index 00000000..9e6b18c0 --- /dev/null +++ b/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 { + + void compareToBuildChangeInfo(Long orgId,Long newId); + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java index a4e272c8..e0d9baab 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java @@ -23,6 +23,14 @@ import java.util.stream.Collectors; @AllArgsConstructor public class TbsActivityCenterServiceImpl extends ServiceImpl implements TbsActivityCenterService { + @Override + public List listByActivity(Long activityId, Long subjectId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsActivityCenter::getActivityId,activityId); + lqw.eq(TbsActivityCenter::getSubjectId,subjectId); + return this.list(lqw); + } + @Override public List listByActivity(Long activityId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityChannelServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityChannelServiceImpl.java index 44838ecb..78606e00 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityChannelServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityChannelServiceImpl.java @@ -1,5 +1,6 @@ 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 lombok.AllArgsConstructor; 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.mapper.TbsActivityChannelMapper; +import java.util.List; + /** * 活动渠道项 服务实现类 * @author YenHex @@ -18,5 +21,12 @@ import com.qs.serve.modules.tbs.mapper.TbsActivityChannelMapper; @AllArgsConstructor public class TbsActivityChannelServiceImpl extends ServiceImpl implements TbsActivityChannelService { + @Override + public List listByActivityId(Long activityId) { + LambdaQueryWrapper act4Channel = new LambdaQueryWrapper<>(); + act4Channel.eq(TbsActivityChannel::getActivityId,activityId); + return this.list(act4Channel); + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java index a0286d5e..92f5aabc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java +++ b/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.erp.mapper.ErpDispatchDataMapper; 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.SysUserService; import com.qs.serve.modules.tbs.common.TbsCostApplyState; @@ -58,15 +60,17 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { private TbsCostContractMapper costContractMapper; private VtbVerificationMapper verificationMapper; private TbsBudgetLogMapper tbsBudgetLogMapper; + private SysUserMapper sysUserMapper; @Override public TbsCostApply copyById(Long costId) { final String newCostApplyCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply); TbsCostApply costApply = tbsCostApplyService.getById(costId); costApply.setId(null); - costApply.setUserId(null); - costApply.setUserCode(null); - costApply.setUserName(null); + SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId()); + costApply.setUserId(sysUser.getId()); + costApply.setUserCode(sysUser.getCode()); + costApply.setUserName(sysUser.getName()); costApply.setCode(newCostApplyCode); costApply.setCreateBy(null); costApply.setCreateTime(null); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostChangeInfoServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostChangeInfoServiceImpl.java new file mode 100644 index 00000000..40c9b8ee --- /dev/null +++ b/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 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 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 orgActivityList = activityService.listByCostApplyId(orgId); + List 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 subjectNewList = activitySubjectService.listByActivityId(newAct.getId()); + List 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 changeInfoList ) { + + } + + private void buildChannelByActs(TbsActivity orgAct, TbsActivity newAct,List changeInfoList ) { + List oldChannelList = activityChannelService.listByActivityId(orgAct.getId()); + List 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 subjectNewList, List subjectOrgList,List 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 changeInfoList ) { + List newCenterList = activityCenterService.listByActivity(activity.getId(), newSubject.getId()); + List 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())); + } + } + + } + + +} + diff --git a/src/main/java/com/qs/serve/modules/third/PortalGoodsController.java b/src/main/java/com/qs/serve/modules/third/PortalGoodsController.java index 18329a81..b3ec3ce4 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalGoodsController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalGoodsController.java @@ -1,11 +1,16 @@ 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.util.Assert; 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.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.param.SkuToGetSpuParam; import lombok.AllArgsConstructor; @@ -31,6 +36,7 @@ public class PortalGoodsController { private GoodsSkuService goodsSkuService; private GoodsSpuService goodsSpuService; + private SysDictDataService dictDataService; /** * 通过invCode获取spuCode @@ -39,16 +45,91 @@ public class PortalGoodsController { */ @PostMapping("getSpuBySku") public List getSpuBySku(@RequestBody SkuToGetSpuParam param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysDictData::getGroupKey,"book-code-to-belong"); + List 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 skuList = goodsSkuService.getByCodes(param.getInvCodes()); - List rs = new ArrayList<>(); + List specialSkuKey = new ArrayList<>(); + List normalSkuKey = new ArrayList<>(); + List unMatchSkuKey = new ArrayList<>(); + + + List spuIds = skuList.stream().filter(a->a.getSpecialFlag()!=1) + .map(a->a.getSpuId()).collect(Collectors.toList()); + + LambdaQueryWrapper skuLqw = new LambdaQueryWrapper<>(); + skuLqw.eq(GoodsSku::getBelong,placeName); + skuLqw.eq(GoodsSku::getOrderFlag,1); + skuLqw.in(GoodsSku::getSpuId,spuIds); + List normalSkus = goodsSkuService.list(skuLqw); + + LambdaQueryWrapper skuLqw2 = new LambdaQueryWrapper<>(); + skuLqw2.eq(GoodsSku::getBelong,"开平"); + skuLqw2.eq(GoodsSku::getOrderFlag,1); + skuLqw2.in(GoodsSku::getSpuId,spuIds); + List kpSkus = goodsSkuService.list(skuLqw2); + 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); + if(sku.getSpecialFlag()==1){ + //特殊品不转换 + OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey(); + skuKey.setInvCode(sku.getSkuCode()); + 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 skuKeys = new ArrayList<>(); + skuKeys.addAll(specialSkuKey); + skuKeys.addAll(normalSkuKey); + skuKeys.addAll(unMatchSkuKey); + + + return skuKeys; } /** @@ -58,7 +139,20 @@ public class PortalGoodsController { */ @PostMapping("matchInvCode") public List matchInvCode(@RequestBody GoodsToSkuParam param){ - return goodsSpuService.getSpuToSkuInfo(param.getPlaceName(), param.getSpuCodes()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysDictData::getGroupKey,"book-code-to-belong"); + List 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()); } /** diff --git a/src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java b/src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java index a77bf3c9..5a12ea48 100644 --- a/src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java +++ b/src/main/java/com/qs/serve/modules/third/entity/param/SkuToGetSpuParam.java @@ -9,5 +9,7 @@ import java.util.List; */ @Data public class SkuToGetSpuParam { + String placeName; + List invCodes; } diff --git a/src/main/resources/mapper/goods/GoodsSpuMapper.xml b/src/main/resources/mapper/goods/GoodsSpuMapper.xml index 4850cc08..f0c32844 100644 --- a/src/main/resources/mapper/goods/GoodsSpuMapper.xml +++ b/src/main/resources/mapper/goods/GoodsSpuMapper.xml @@ -164,9 +164,32 @@ , 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 + + 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},'%') + ) + + ) 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 + + 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},'%') + ) + ) AS goods_sku left join goods_spu on goods_sku.spu_id = goods_spu.id LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first` @@ -184,9 +207,32 @@ SELECT count(1) 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 + + 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},'%') + ) + + ) 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 + + 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},'%') + ) + ) AS goods_sku left join goods_spu on goods_sku.spu_id = goods_spu.id