From 5a3d6b6d93d28757c960c1e42d07a4852705dbe6 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 13 Jun 2024 10:30:48 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E4=B8=B4=E6=9C=9F=E5=93=81?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/GoodsImminentBatchApi.java | 204 +++++++++++++ .../entity/so/GoodsImminentBatchQuery.java | 42 +++ .../goods/entity/vo/GoodsImminentBatchVo.java | 126 ++++++++ .../mapper/GoodsImminentBatchMapper.java | 7 + .../service/GoodsImminentBatchService.java | 8 + .../impl/GoodsImminentBatchServiceImpl.java | 16 ++ .../mapper/goods/GoodsImminentBatchMapper.xml | 270 ++++++++++++++++++ 7 files changed, 673 insertions(+) create mode 100644 src/main/java/com/qs/serve/modules/goods/controller/api/GoodsImminentBatchApi.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/so/GoodsImminentBatchQuery.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsImminentBatchVo.java create mode 100644 src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsImminentBatchApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsImminentBatchApi.java new file mode 100644 index 00000000..0d7b9f46 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsImminentBatchApi.java @@ -0,0 +1,204 @@ +package com.qs.serve.modules.goods.controller.api; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.config.DevEnvironmentConfig; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +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.*; +import com.qs.serve.modules.bms.common.BookAccountUtil; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +import com.qs.serve.modules.goods.entity.*; +import com.qs.serve.modules.goods.entity.bo.GoodsImminentBatchBo; +import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto; +import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO; +import com.qs.serve.modules.goods.entity.so.GoodsImminentBatchQuery; +import com.qs.serve.modules.goods.entity.vo.GoodsImminentBatchVo; +import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; +import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; +import com.qs.serve.modules.goods.service.*; +import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; +import com.qs.serve.modules.tbs.service.TbsActivityGoodsService; +import com.qs.serve.modules.tbs.service.TbsBudgetConditionService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 商品 临期批次 + * @author YenHex + * @since 2024-06-11 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("my/imminentBatch") +public class GoodsImminentBatchApi { + + private GoodsRuleService goodsRuleService; + private GoodsCategoryRuleService goodsCategoryRuleService; + private BmsSupplierService bmsSupplierService; + private GoodsCategoryService goodsCategoryService; + private GoodsAccreditService goodsAccreditService; + private GoodsImminentBatchService goodsImminentBatchService; + + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(GoodsImminentBatchQuery param){ + GoodsCategoryRule categoryRule = goodsCategoryRuleService.getById(param.getSearchCateRuleId()); + if(categoryRule!=null&&categoryRule.getIgnoreBrandIds()!=null&&categoryRule.getIgnoreBrandIds().length>0){ + param.setSelectNotIntCateIds(Arrays.asList(categoryRule.getIgnoreBrandIds())); + log.info("setSelectNotIntCateIds {}", JsonUtil.objectToJson(param)); + } + BmsSupplier supplier = bmsSupplierService.getByNameOrCode(param.getSupplierCode()); + if(supplier==null){ + return R.error("供应商不存在或停用"); + } + + //客户规则设置 + String userId = AuthContextUtils.getSysUserId(); + this.toSetSpuParam(param, supplier,userId); + //产品规则设置 + this.tiSetSpuParam2(param, supplier); + + if(DevEnvironmentConfig.OPEN_TENANT_BOOK){ + param.setBookCodeList(BookAccountUtil.getCurrentUserAccount()); + } + long total = goodsImminentBatchService.countVoList(param); + if(total<1){ + return R.byEmptyList(); + } + List list = goodsImminentBatchService.selectVoList(param); + return R.byPageList(total,list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.QUERY) + public R getById(@PathVariable("id") String id){ + GoodsImminentBatch goodsImminentBatch = goodsImminentBatchService.getById(id); + return R.ok(goodsImminentBatch); + } + + + private void tiSetSpuParam2(GoodsImminentBatchQuery param, BmsSupplier supplier) { + GoodsAccrIdsDto accrIdsDto = goodsAccreditService + .listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds()); + param.setSubAccInfo(accrIdsDto); + } + + /** + * 设置Spu查询条件 + * @param param + * @param supplier + */ + private void toSetSpuParam(GoodsImminentBatchQuery param, BmsSupplier supplier, String userId) { + + //用户维度的客户规则 + List userRules = goodsRuleService.listByUserId(userId); + List ruleItems = goodsRuleService.listBySupplierId(supplier.getId()); + if(userRules!=null){ + if(ruleItems!=null){ + ruleItems.addAll(userRules); + }else { + ruleItems = userRules; + } + } + GoodsRuleItemDTO ruleItemDTO = goodsRuleService.buildGoodsRuleItemDTO(ruleItems); + if(ruleItemDTO!=null){ + + if(ruleItemDTO.getNotInCategoryIds()!=null){ + if(CollUtil.isEmpty(param.getSelectNotIntCateIds())){ + param.setSelectNotIntCateIds(ruleItemDTO.getNotInCategoryIds()); + }else{ + param.getSelectNotIntCateIds().addAll(ruleItemDTO.getNotInCategoryIds()); + } + } + + if(CollUtil.isNotEmpty(ruleItemDTO.getOnlyCategoryIds())){ + if (CollUtil.isEmpty(param.getSelectCateIds())){ + param.setSelectCateIds(ruleItemDTO.getOnlyCategoryIds()); + }else{ + List onlyIds = ruleItemDTO.getOnlyCategoryIds(); + List onlyCategoryList = goodsCategoryService.listByIds(onlyIds); + for (GoodsCategory category : onlyCategoryList) { + List childList = goodsCategoryService.list(new LambdaQueryWrapper() + .likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_")); + if(CollUtil.isNotEmpty(childList)){ + List childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + onlyIds.addAll(childIds); + } + } + List selectCateIds = param.getSelectCateIds(); + List goodsCategoryList = goodsCategoryService.listByIds(selectCateIds); + for (GoodsCategory category : goodsCategoryList) { + List childList = goodsCategoryService.list(new LambdaQueryWrapper() + .likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_")); + if(CollUtil.isNotEmpty(childList)){ + List childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + selectCateIds.addAll(childIds); + } + } + //交集 + Collection ids = cn.hutool.core.collection.CollectionUtil + .intersection(onlyIds, selectCateIds); + List idsList = new ArrayList<>(); + idsList.addAll(ids); + idsList.add("#"); + param.setSelectCateIds(idsList); + } + } + + if(CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){ + if (CollUtil.isEmpty(param.getSelectSpuIds())){ + List ids = ruleItemDTO.getOnlySpuIds().stream() + .filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList()); + param.setSelectSpuIds(ids); + }else{ + List ids = ruleItemDTO.getOnlySpuIds().stream() + .filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList()); + //交集 + Collection id2s = cn.hutool.core.collection.CollectionUtil + .intersection(ids, param.getSelectSpuIds()); + List idsList = new ArrayList<>(); + idsList.addAll(id2s); + idsList.add(-1L); + param.setSelectSpuIds(idsList); + } + } + + if(CollUtil.isNotEmpty(ruleItemDTO.getNotInSpuIds())){ + if (CollUtil.isEmpty(param.getSelectNotInSpuIds())){ + List ids = ruleItemDTO.getNotInSpuIds().stream() + .filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList()); + param.setSelectNotInSpuIds(ids); + }else{ + List ids = ruleItemDTO.getNotInSpuIds().stream() + .filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList()); + param.getSelectNotInSpuIds().addAll(ids); + } + } + + } + } +} + diff --git a/src/main/java/com/qs/serve/modules/goods/entity/so/GoodsImminentBatchQuery.java b/src/main/java/com/qs/serve/modules/goods/entity/so/GoodsImminentBatchQuery.java new file mode 100644 index 00000000..3e565f5e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/so/GoodsImminentBatchQuery.java @@ -0,0 +1,42 @@ +package com.qs.serve.modules.goods.entity.so; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto; +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2024/6/12 + */ +@Data +public class GoodsImminentBatchQuery { + + /** 关键字查询 */ + private String skuName; + private String skuCode; + private String spuName; + private String spuCode; + private String skuAddCode; + + /** 供应商编码 */ + private String supplierCode; + + /** 选中的商品规则 */ + private String searchCateRuleId; + + private Integer selectSpecialFlag; + private Integer orderFlag; + private String belong; + + /** 账套编码列表 */ + private List bookCodeList; + private GoodsAccrIdsDto subAccInfo; + private List notInSkuIds; + private List selectSpuIds; + private List selectNotInSpuIds; + private List selectCateIds; + private List selectNotIntCateIds; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsImminentBatchVo.java b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsImminentBatchVo.java new file mode 100644 index 00000000..acebc238 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsImminentBatchVo.java @@ -0,0 +1,126 @@ +package com.qs.serve.modules.goods.entity.vo; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * @author YenHex + * @since 2024/6/12 + */ +@Data +public class GoodsImminentBatchVo { + + /** 批次skuId */ + private Long id; + + private String batchCode; + + /** 数量 */ + private Integer quantity; + + /** 已下单数量 */ + private Integer orderQuantity; + + /** 截止销售时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate endDate; + + /** 批次备注 */ + private String remark; + + private String spuId; + + private String spuCode; + + private String spuName; + + private String skuId; + + private String skuCode; + + private String skuName; + + private String skuAddCode; + + /** 图片 */ + private String picUrl; + + /** 销售价格 */ + private BigDecimal salesPrice; + + /** 市场价 */ + private BigDecimal marketPrice; + + /** 成本价 */ + private BigDecimal costPrice; + + /** 规格值 */ + private String specInfos; + + /** 库存 */ + private Integer stock; + + /** 重量(kg) */ + private BigDecimal weight; + + /** 体积(m³) */ + private BigDecimal volume; + + /** 净重 */ + private BigDecimal invUnitWeight; + + /** 最低起批数(0->不限制) */ + private Integer minPurchase; + + /** 是否可以下单 1、是;0否 */ + private Integer orderFlag; + + private Integer specialFlag; + + /** 在线下单 */ + private Integer orderOnlineFlag; + + /** 线下下单 */ + private Integer orderOfflineFlag; + + /** 单位id */ + private Long unitId; + + /** 单位 */ + private String unitName; + + /** 账套编码 */ + private String bookBelong; + + /** 账套名称 */ + private String bookName; + + /** 产地 */ + private String belong; + + /** 包装 */ + private String wrapVal; + + /** 口味 */ + private String tasteVal; + + /** 一级类目:品牌名称 */ + private String cateFirstLabel; + + /** 二级类目:类目名称 */ + private String cateSecondLabel; + + /** 三级类目:系列名称 */ + private String cateThirdLabel; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java index c4736e2f..1b897909 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java @@ -1,7 +1,14 @@ package com.qs.serve.modules.goods.mapper; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.common.model.dto.RowParam; import com.qs.serve.modules.goods.entity.GoodsImminentBatch; +import com.qs.serve.modules.goods.entity.so.GoodsImminentBatchQuery; +import com.qs.serve.modules.goods.entity.vo.GoodsImminentBatchVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 临期批次 Mapper diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java index 892115cc..0600d4f5 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java @@ -2,6 +2,10 @@ package com.qs.serve.modules.goods.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.goods.entity.GoodsImminentBatch; +import com.qs.serve.modules.goods.entity.so.GoodsImminentBatchQuery; +import com.qs.serve.modules.goods.entity.vo.GoodsImminentBatchVo; + +import java.util.List; /** * 临期批次 服务接口 @@ -12,5 +16,9 @@ public interface GoodsImminentBatchService extends IService boolean checkExist(String batchCode,String skuId); + long countVoList(GoodsImminentBatchQuery query); + + List selectVoList(GoodsImminentBatchQuery query); + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java index d69ca1e3..c1ec5362 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java @@ -2,6 +2,9 @@ package com.qs.serve.modules.goods.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.model.dto.RowParam; +import com.qs.serve.modules.goods.entity.so.GoodsImminentBatchQuery; +import com.qs.serve.modules.goods.entity.vo.GoodsImminentBatchVo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -9,6 +12,8 @@ import com.qs.serve.modules.goods.entity.GoodsImminentBatch; import com.qs.serve.modules.goods.service.GoodsImminentBatchService; import com.qs.serve.modules.goods.mapper.GoodsImminentBatchMapper; +import java.util.List; + /** * 临期批次 服务实现类 * @author YenHex @@ -24,5 +29,16 @@ public class GoodsImminentBatchServiceImpl extends ServiceImpl().eq(GoodsImminentBatch::getBatchCode,batchCode).eq(GoodsImminentBatch::getSkuId,skuId)); return count>0; } + + @Override + public long countVoList(GoodsImminentBatchQuery query) { + return baseMapper.countVoList(query); + } + + @Override + public List selectVoList(GoodsImminentBatchQuery query) { + return baseMapper.selectVoList(query,new RowParam(true)); + } + } diff --git a/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml b/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml new file mode 100644 index 00000000..9fcaad0d --- /dev/null +++ b/src/main/resources/mapper/goods/GoodsImminentBatchMapper.xml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + goods_imminent_batch.`id`, + goods_imminent_batch.`batch_code`, + goods_imminent_batch.`quantity`, + goods_imminent_batch.`order_quantity`, + goods_imminent_batch.`end_date`, + goods_imminent_batch.`remark` + + + + + + + + goods_sku.`sku_name`, + goods_sku.`sku_code`, + goods_sku.`pic_url`, + goods_sku.`sales_price`, + goods_sku.`market_price`, + goods_sku.`cost_price`, + goods_sku.`spec_infos`, + goods_sku.`stock`, + goods_sku.`unit_id`, + goods_sku.`unit_name`, + goods_sku.`weight`, + goods_sku.`volume`, + goods_sku.`inv_unit_weight`, + goods_sku.`min_purchase`, + goods_sku.`cost_flag`, + goods_sku.`belong`, + goods_sku.`belong_sort`, + goods_sku.`wrap_val`, + goods_sku.`taste_val`, + goods_sku.`order_flag`, + goods_sku.`special_flag`, + goods_sku.`abct`, + goods_sku.`order_online_flag`, + goods_sku.`order_offline_flag`, + goods_sku.`book_belong`, + goods_sku.`book_name` + + + + goods_spu.`spu_code`, + goods_spu.`name` as `spu_name`, + goods_spu.`category_first`, + goods_spu.`category_second`, + goods_spu.`category_third`, + goods_spu.`category_last`, + goods_spu.`pic_urls`, + goods_spu.`shelf`, + goods_spu.`sort`, + goods_spu.`sale_num`, + goods_spu.`spec_type`, + goods_spu.`taste_value`, + goods_spu.`create_time`, + goods_spu.`update_time`, + goods_spu.`create_by`, + goods_spu.`update_by`, + goods_spu.`tenant_id`, + goods_spu.`cost_flag`, + goods_spu.`order_flag`, + goods_spu.`book_belong`, + goods_spu.`book_name`, + goods_spu.`special_sku_id`, + goods_spu.`spu_cunhuo_flag`, + goods_spu.`sku_num_val` + + + + + and `goods_spu`.`name` like concat('%',#{query.spuName},'%') + and `goods_spu`.`goods_spu` like concat('%',#{query.skuCode},'%') + + and `goods_spu`.`book_belong` in + + #{selectId} + + + + + and `goods_spu`.`id` in + + #{selectId} + + + + and `goods_spu`.`id` not in + + #{selectId} + + + + and (`goods_spu`.`category_first` in + + #{selectId} + + or `goods_spu`.`category_second` in + + #{selectId} + + or `goods_spu`.`category_third` in + + #{selectId} + ) + + + and (`goods_spu`.`category_first` not in + + #{selectId} + + and `goods_spu`.`category_second` not in + + #{selectId} + + and `goods_spu`.`category_third` not in + + #{selectId} + ) + + + + + and (`goods_sku`.`belong` = #{query.belong} or goods_sku.special_flag=1) + + + and `goods_sku`.`special_flag` = #{query.selectSpecialFlag} + + + and `goods_sku`.`sku_add_code` like concat('%', #{query.skuAddCode},'%') + + + and (`goods_sku`.`order_flag` = #{query.orderFlag} or `goods_sku`.`special_flag` = 1) + + + + and `goods_sku`.`sku_name` like concat('%', #{query.skuName},'%') + + + and `goods_sku`.`sku_code` like concat('%', #{query.skuCode},'%') + + + and `goods_sku`.`id` not in + + #{selectId} + + + + and `goods_sku`.`id` not in( + select sku.id FROM goods_sku sku + left join goods_spu spu on sku.spu_id = spu.id + left join goods_category cate1 on cate1.id = spu.category_first + left join goods_category cate2 on cate2.id = spu.category_second + left join goods_category cate3 on cate3.id = spu.category_third + where + ( + sku.id in + + #{selectId} + + or spu.id in + + #{selectId} + + or cate1.id in + + #{selectId} + + or cate2.id in + + #{selectId} + + or cate3.id in + + #{selectId} + + ) and + sku.id not in + + #{selectId} + + and + spu.id not in + + #{selectId} + + and + cate1.id not in + + #{selectId} + + and + cate2.id not in + + #{selectId} + + and + cate3.id not in + + #{selectId} + + ) + + + + From b6f9bd81797a4c76a95ee214fd385229e595d455 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 13 Jun 2024 10:31:10 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E4=B8=B4?= =?UTF-8?q?=E6=9C=9F=E5=93=81=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GoodsImminentBatchController.java | 21 +- .../goods/entity/GoodsImminentBatch.java | 4 +- .../goods/entity/bo/GoodsImminentBatchBo.java | 2 +- .../mapper/GoodsImminentBatchMapper.java | 6 + .../service/GoodsImminentBatchService.java | 2 +- .../impl/GoodsImminentBatchServiceImpl.java | 8 +- .../oms/controller/api/OmsOrderApi.java | 30 ++- .../modules/oms/entity/OmsOrderItem.java | 7 +- .../oms/entity/bo/OmsOrderImminentBo.java | 58 +++++ .../modules/oms/service/OmsOrderService.java | 12 +- .../oms/service/impl/OmsOrderServiceImpl.java | 201 +++++++++++++++--- 11 files changed, 304 insertions(+), 47 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java index 71e580b6..482bd3b2 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java @@ -12,6 +12,8 @@ import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.bo.GoodsImminentBatchBo; import com.qs.serve.modules.goods.service.GoodsSkuService; +import com.qs.serve.modules.oms.entity.OmsOrderItem; +import com.qs.serve.modules.oms.service.OmsOrderItemService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -34,6 +36,7 @@ import java.util.List; @RequestMapping("goods/imminentBatch") public class GoodsImminentBatchController { + private OmsOrderItemService orderItemService; private GoodsImminentBatchService goodsImminentBatchService; private GoodsSkuService goodsSkuService; @@ -67,12 +70,24 @@ public class GoodsImminentBatchController { * @param param * @return */ - @PostMapping("/updateById") + @PostMapping("/update") @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.UPDATE) public R updateById(@RequestBody @Valid GoodsImminentBatchBo param){ - //param.setBatchCode(null); param.setSkuId(null); GoodsImminentBatch entity = CopierUtil.copy(param,new GoodsImminentBatch()); + if(goodsImminentBatchService.checkExist(param.getBatchCode(),param.getSkuId(),entity.getId())){ + return R.error("已重复"); + } + GoodsImminentBatch org = goodsImminentBatchService.getById(param.getId()); + if(!org.getBatchCode().equals(entity.getBatchCode())){ + long count = orderItemService.count( + new LambdaQueryWrapper() + .eq(OmsOrderItem::getSkuBatchId,param.getId()) + ); + if(count>0){ + return R.error("已存在订单,无法修改批号"); + } + } boolean result = goodsImminentBatchService.updateById(entity); return R.isTrue(result); } @@ -89,7 +104,7 @@ public class GoodsImminentBatchController { GoodsSku goodsSku = goodsSkuService.getById(param.getSkuId()); entity.setSkuCode(goodsSku.getSkuCode()); entity.setSkuName(goodsSku.getSkuName()); - if(goodsImminentBatchService.checkExist(param.getBatchCode(),param.getSkuId())){ + if(goodsImminentBatchService.checkExist(param.getBatchCode(),param.getSkuId(),0L)){ return R.error("已重复"); } boolean result = goodsImminentBatchService.save(entity); diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java index 7f192aa7..4306a212 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsImminentBatch.java @@ -28,7 +28,7 @@ public class GoodsImminentBatch implements Serializable { private static final long serialVersionUID = 1L; /** id */ - private Integer id; + private Long id; /** skuID */ @NotBlank(message = "skuID不能为空") @@ -99,11 +99,13 @@ public class GoodsImminentBatch implements Serializable { /** 查询开始 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(exist = false) private LocalDate queryStartDate; /** 查询结束 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(exist = false) private LocalDate queryEndDate; } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java index bdafed58..486df7bf 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsImminentBatchBo.java @@ -26,7 +26,7 @@ public class GoodsImminentBatchBo implements Serializable { private static final long serialVersionUID = 1L; /** id */ - private Integer id; + private Long id; /** skuID */ @NotBlank(message = "skuID不能为空") diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java index 1b897909..d23143f5 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsImminentBatchMapper.java @@ -17,5 +17,11 @@ import java.util.List; */ public interface GoodsImminentBatchMapper extends BaseMapper { + @InterceptorIgnore(tenantLine = "1") + long countVoList(@Param("query") GoodsImminentBatchQuery query); + + @InterceptorIgnore(tenantLine = "1") + List selectVoList(@Param("query") GoodsImminentBatchQuery query, @Param("pageInfo") RowParam rowParam); + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java index 0600d4f5..c8f8cecf 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsImminentBatchService.java @@ -14,7 +14,7 @@ import java.util.List; */ public interface GoodsImminentBatchService extends IService { - boolean checkExist(String batchCode,String skuId); + boolean checkExist(String batchCode,String skuId,Long rowId); long countVoList(GoodsImminentBatchQuery query); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java index c1ec5362..30332f17 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsImminentBatchServiceImpl.java @@ -25,8 +25,12 @@ import java.util.List; public class GoodsImminentBatchServiceImpl extends ServiceImpl implements GoodsImminentBatchService { @Override - public boolean checkExist(String batchCode, String skuId) { - long count = this.count(new LambdaQueryWrapper().eq(GoodsImminentBatch::getBatchCode,batchCode).eq(GoodsImminentBatch::getSkuId,skuId)); + public boolean checkExist(String batchCode, String skuId,Long rowId) { + long count = this.count(new LambdaQueryWrapper() + .eq(GoodsImminentBatch::getBatchCode,batchCode) + .eq(GoodsImminentBatch::getSkuId,skuId) + .ne(GoodsImminentBatch::getId,rowId) + ); return count>0; } 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 f13ac039..bd378819 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 @@ -22,10 +22,7 @@ import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; -import com.qs.serve.modules.oms.entity.bo.OmsCancelOrder; -import com.qs.serve.modules.oms.entity.bo.OmsOrderBo; -import com.qs.serve.modules.oms.entity.bo.OmsOrderModifyParam; -import com.qs.serve.modules.oms.entity.bo.OmsOrderSkuBo; +import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderService; @@ -43,8 +40,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_STATUS; - /** * API订单模块 订单 * @author YenHex @@ -301,7 +296,7 @@ public class OmsOrderApi { } /** - * 删除 + * 删除订单 * @param id * @return */ @@ -317,5 +312,26 @@ public class OmsOrderApi { return R.error("当前状态无法删除"); } + /** + * 创建临期品订单 + * @param omsOrderBo + * @return + */ + @PostMapping("/createImminentOrder") + public R createImminentOrder(@RequestBody @Valid OmsOrderImminentBo omsOrderBo){ + return R.ok(omsOrderService.modifyImminentOrder(omsOrderBo)); + } + + /** + * 修改临期品的订单 + * @param param + * @return + */ + @PostMapping("/modifyImminentOrder") + public R modifyImminentOrder(@RequestBody @Valid OmsOrderImminentBo param){ + omsOrderService.modifyImminentOrder(param); + return R.ok(); + } + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java index 7e7db682..d36d49d9 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java @@ -51,7 +51,12 @@ public class OmsOrderItem implements Serializable { private String skuTitle; - /** skuId */ + /** skuBatchId */ + private Long skuBatchId; + + /** skuBatchCode */ + private String skuBatchCode; + private Long skuId; /** sku编码 */ diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java new file mode 100644 index 00000000..af718024 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderImminentBo.java @@ -0,0 +1,58 @@ +package com.qs.serve.modules.oms.entity.bo; + +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2022/10/14 + */ +@Data +public class OmsOrderImminentBo { + + /** 编辑时必填 */ + private String id; + + private String supplierId; + + private String orderSource; + + /** SKU下单列表 */ + private List itemList; + + /** 品牌规则ID */ + private Long brandRuleId; + + /** 立刻下单标识 */ + private Integer instantFlag; + + /** CD单据备注 */ + private String cdOrderRemark; + + /** 收货地址 */ + private Long addressId; + + /** 发票类型:0->普通发票;1->增值税发票; */ + private Integer billType; + + /** 是否加急 */ + private Integer urgentFlag; + + /** 备注 */ + private String remark; + + @Data + public static class ItemParam{ + + private Long batchSkuId; + + /** 数量 */ + private Integer qty; + + + private String remark; + + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index c6eb1eb7..ff1b33da 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -2,10 +2,7 @@ package com.qs.serve.modules.oms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.oms.entity.OmsOrder; -import com.qs.serve.modules.oms.entity.bo.OmsOrderBo; -import com.qs.serve.modules.oms.entity.bo.OmsOrderModifyParam; -import com.qs.serve.modules.oms.entity.bo.OmsOrderSkuBo; -import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; +import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; @@ -74,5 +71,12 @@ public interface OmsOrderService extends IService { */ void buildPriceOrder(String id,String amount); + /** + * 临期品订单 + * @param param + * @return + */ + String modifyImminentOrder(OmsOrderImminentBo param); + } 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 01ad0f0e..fb658ab5 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 @@ -46,6 +46,7 @@ import com.qs.serve.modules.oms.mapper.OmsOrderMapper; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -82,6 +83,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im private SeeYonRequestBaseService seeYonRequestBaseService; private GoodsRuleService goodsRuleService; private GoodsAccreditService goodsAccreditService; + private GoodsImminentBatchService goodsImminentBatchService; @Override @@ -333,35 +335,11 @@ public class OmsOrderServiceImpl extends ServiceImpl im //防止空指针 skuCodes.add("NULL"); - List customerPrices = goodsCustomerPriceService.getBySupplierCodeAndCode(supplier.getCode(),skuCodes); - for (OmsOrderItem orderItem : newOrderItemList) { - for (GoodsCustomerPrice customerPrice : customerPrices) { - if(orderItem.getSkuCode().equals(customerPrice.getSkuCode())){ - orderItem.setSalesPrice(customerPrice.getRealPrice()); - break; - } - } - } + //商品特殊价 + this.buildSkuSpecPrice(supplier, newOrderItemList, skuCodes); //拦截商品授权维度规则 - GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(),supplier.listBizRegionIds(),supplier.listSaleRegionIds()); - if(accrIdsDto!=null){ - List skuIds = goodsSkuMapper.listByOtherIds( - accrIdsDto.getCateIds(), - accrIdsDto.getSpuIds(), - accrIdsDto.getSkuIds(), - accrIdsDto.getNotInCateIds(), - accrIdsDto.getNotInSpuIds(), - accrIdsDto.getNotInSkuIds() - ); - for (OmsOrderItem orderItem : newOrderItemList) { - for (Long skuId : skuIds) { - if(orderItem.getSkuId().equals(skuId)){ - Assert.throwEx("商品未授权:"+orderItem.getSkuCode()); - } - } - } - } + this.checkGoodsRule(supplier, newOrderItemList); //拦截客户维度规则 goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true); @@ -382,6 +360,27 @@ public class OmsOrderServiceImpl extends ServiceImpl im } } + private void checkGoodsRule(BmsSupplier supplier, List newOrderItemList) { + GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds()); + if(accrIdsDto!=null){ + List skuIds = goodsSkuMapper.listByOtherIds( + accrIdsDto.getCateIds(), + accrIdsDto.getSpuIds(), + accrIdsDto.getSkuIds(), + accrIdsDto.getNotInCateIds(), + accrIdsDto.getNotInSpuIds(), + accrIdsDto.getNotInSkuIds() + ); + for (OmsOrderItem orderItem : newOrderItemList) { + for (Long skuId : skuIds) { + if(orderItem.getSkuId().equals(skuId)){ + Assert.throwEx("商品未授权:"+orderItem.getSkuCode()); + } + } + } + } + } + /** * 拦截规则 * @param categoryRule @@ -640,6 +639,154 @@ public class OmsOrderServiceImpl extends ServiceImpl im return spuAssesInfoList; } + @Override + public String modifyImminentOrder(OmsOrderImminentBo param) { + + SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); + GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId()); + BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId()); + BmsSupplierAddress supplierDefaultAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId())); + + OmsOrder order; + if(param.getId()!=null){ + order = this.getById(param.getId()); + }else { + order = new OmsOrder(); + order.setOrderSn("SP"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); + } + order.setLatitudeFrom("sp"); + order.setCdOrderRemark(param.getCdOrderRemark()); + order.setOrderType(1); + order.setSupplierId(Long.parseLong(supplier.getId())); + order.setSupplierCode(supplier.getCode()); + order.setSupplierName(supplier.getName()); + order.setSupplierAddrId(supplierDefaultAddress!=null?supplierDefaultAddress.getId():0); + order.setBrandRuleId(param.getBrandRuleId()); + order.setUserId(user.getId()); + order.setUserName(user.getName()); + order.setUserCode(user.getCode()); + order.setUserPhone(user.getMobile()); + order.setBillType(param.getBillType()); + order.setUrgentFlag(param.getUrgentFlag()); + order.setRemark(param.getRemark()); + this.save(order); + + Set batchSkuIds = param.getItemList().stream().map(OmsOrderImminentBo.ItemParam::getBatchSkuId) + .collect(Collectors.toSet()); + if(CollectionUtil.isEmpty(param.getItemList())){ + Assert.throwEx("请选择商品"); + } + List imminentBatches = goodsImminentBatchService + .list( + new LambdaQueryWrapper() + .in(GoodsImminentBatch::getId,batchSkuIds) + .ge(GoodsImminentBatch::getEndDate, LocalDate.now()) + ); + if(CollectionUtil.isEmpty(imminentBatches)){ + Assert.throwEx("参数过期或无效,请重新选择商品"); + } + + Set skuIds = imminentBatches.stream() + .map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet()); + if(skuIds.size()!=imminentBatches.size()){ + Assert.throwEx("不同批次相同产品,请分开下单"); + } + + List goodsSkuList = goodsSkuService.listByIds(skuIds); + + List spuIds = goodsSkuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()); + spuIds.add(0L); + List spuList = goodsSpuService.listByIds(spuIds); + + List orderItems = new ArrayList<>(); + + for (OmsOrderImminentBo.ItemParam item : param.getItemList()) { + for (GoodsImminentBatch batch : imminentBatches) { + if(item.getBatchSkuId().equals(batch.getId())){ + for (GoodsSku sku : goodsSkuList) { + if(sku.getId().toString().equals(batch.getSkuId())){ + //创建OrderItem + OmsOrderItem orderItem = createImminentOrderItem(order, spuList, item, batch, sku); + orderItems.add(orderItem); + } + } + } + } + } + + List skuCodes = orderItems.stream() + .map(OmsOrderItem::getSkuCode).collect(Collectors.toList()); + + //商品特殊价 + buildSkuSpecPrice(supplier, orderItems, skuCodes); + + //拦截商品授权维度规则 + this.checkGoodsRule(supplier, orderItems); + + //拦截客户维度规则 + goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true); + + //拦截品类下单规则 + this.handleCategoryRule(categoryRule,orderItems); + + this.updateById(order); + //移除已有的ITEM + LambdaQueryWrapper rmItemLqw = new LambdaQueryWrapper<>(); + rmItemLqw.eq(OmsOrderItem::getOrderId,param.getId()); + omsOrderItemService.remove(rmItemLqw); + //重新保存item + omsOrderItemService.saveBatch(orderItems); + //立即下单 + if(param.getInstantFlag()!=null&¶m.getInstantFlag().equals(1)){ + this.buildPriceOrder(order.getId()+"",null); + } + + return order.getId().toString(); + } + + @NotNull + private OmsOrderItem createImminentOrderItem(OmsOrder order, List spuList, OmsOrderImminentBo.ItemParam item, GoodsImminentBatch batch, GoodsSku sku) { + OmsOrderItem orderItem = new OmsOrderItem(); + orderItem.setOrderId(order.getId()); + orderItem.setOrderSn(order.getOrderSn()); + orderItem.setSpuId(sku.getId()); + for (GoodsSpu spu : spuList) { + if(sku.getSpuId().equals(spu.getId())){ + orderItem.setSpuCode(spu.getSpuCode()); + orderItem.setSpuTitle(spu.getSpuCode()); + break; + } + } + orderItem.setWeight(sku.getWeight()); + orderItem.setVolume(sku.getVolume()); + orderItem.setRemark(sku.getRemark()); + orderItem.setSkuBatchId(batch.getId()); + orderItem.setSkuBatchCode(batch.getBatchCode()); + orderItem.setSkuId(sku.getId()); + orderItem.setSkuTitle(sku.getSkuName()); + orderItem.setSkuCode(sku.getSkuCode()); + orderItem.setSpecValues(sku.getSpecInfos()); + orderItem.setSkuUnit(sku.getUnitName()); + orderItem.setSkuImg(sku.getPicUrl()); + orderItem.setSalesPrice(sku.getSalesPrice()); + orderItem.setCusPrice(sku.getSalesPrice()); + orderItem.setMarketPrice(sku.getMarketPrice()); + orderItem.setQuantity(item.getQty()); + return orderItem; + } + + private void buildSkuSpecPrice(BmsSupplier supplier, List orderItems, List skuCodes) { + List customerPrices = goodsCustomerPriceService.getBySupplierCodeAndCode(supplier.getCode(), skuCodes); + for (OmsOrderItem orderItem : orderItems) { + for (GoodsCustomerPrice customerPrice : customerPrices) { + if (orderItem.getSkuCode().equals(customerPrice.getSkuCode())) { + orderItem.setSalesPrice(customerPrice.getRealPrice()); + break; + } + } + } + } + @Override public void buildPriceOrder(String id,String amount) { OmsOrder omsOrder = super.getById(id); From 3244cfb57660b5df2474d25098e10da0031a0336 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 13 Jun 2024 10:31:46 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E6=8B=86=E5=88=86=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=B1=82=E4=BB=A3=E7=A0=81=EF=BC=8C=E9=80=92?= =?UTF-8?q?=E5=BD=92=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/tbs/controller/TbsActivityController2.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java index af5518e6..fcd3dd18 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController2.java @@ -76,7 +76,7 @@ public class TbsActivityController2 { * @param param * @return */ - @PostMapping("/getByIds/{ids}") + @PostMapping("/getByIds") public R> getByIds(@RequestBody CommonIdsParam param){ List activityList = tbsActivityService.listByIds(param.getIds()); for (TbsActivity activity : activityList) { @@ -94,7 +94,7 @@ public class TbsActivityController2 { @GetMapping("/flushAmount/{id}") @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) public R flushActivityAmount(@PathVariable("id") Long id){ - Long[] ids = new Long[]{}; + Long[] ids = new Long[]{id}; List errorIds = new ArrayList<>(); for (Long aLong : ids) { try { From 829b6df329350666611f7f566e9bbdc50309a8d8 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 14 Jun 2024 09:15:44 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E4=B8=B4?= =?UTF-8?q?=E6=9C=9F=E5=93=81=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oms/controller/api/OmsOrderApi.java | 6 ++++ .../qs/serve/modules/oms/entity/OmsOrder.java | 2 +- .../modules/oms/entity/OmsOrderItem.java | 4 +++ .../modules/oms/service/OmsOrderService.java | 2 +- .../oms/service/impl/OmsOrderServiceImpl.java | 29 ++++++++++++++----- 5 files changed, 33 insertions(+), 10 deletions(-) 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 bd378819..01abe494 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 @@ -14,8 +14,10 @@ import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.goods.entity.GoodsCategory; +import com.qs.serve.modules.goods.entity.GoodsImminentBatch; import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSpu; +import com.qs.serve.modules.goods.mapper.GoodsImminentBatchMapper; import com.qs.serve.modules.goods.service.GoodsCategoryRuleService; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; @@ -62,6 +64,7 @@ public class OmsOrderApi { private GoodsCategoryService goodsCategoryService; private SysPostUserService postUserService; private SeeYonRequestBaseService seeYonRequestBaseService; + private GoodsImminentBatchMapper goodsImminentBatchMapper; /** * 确认订单 @@ -258,6 +261,9 @@ public class OmsOrderApi { orderItem.setSkuBelong(goodsSku.getBelong()); orderItem.setSkuAddCode(goodsSku.getSkuAddCode()); } + if(orderItem.getSkuBatchId()!=null){ + orderItem.setBatchInfo(goodsImminentBatchMapper.selectById(orderItem.getSkuBatchId())); + } } omsOrder.setOrderItems(list); return R.ok(omsOrder); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index 61200c96..61c83fbe 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -39,7 +39,7 @@ public class OmsOrder implements Serializable { @TableField(condition = SqlCondition.LIKE) private String orderSn; - /** 订单类型:0->普通订单;1->赠品;2->试吃品 */ + /** 订单类型:0->普通订单;1->赠品;2->试吃品;3->临期品 */ private Integer orderType; private String orderSource; diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java index d36d49d9..d3b4249d 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java @@ -146,6 +146,10 @@ public class OmsOrderItem implements Serializable { @TableField(exist = false) private Object categoryInfo; + /** 分类 */ + @TableField(exist = false) + private Object batchInfo; + @TableField(exist = false) private Integer skuSpecialFlag; } diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index ff1b33da..3ad495da 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -76,7 +76,7 @@ public interface OmsOrderService extends IService { * @param param * @return */ - String modifyImminentOrder(OmsOrderImminentBo param); + OmsOrder modifyImminentOrder(OmsOrderImminentBo param); } 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 fb658ab5..c8b8f64f 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 @@ -640,7 +640,8 @@ public class OmsOrderServiceImpl extends ServiceImpl im } @Override - public String modifyImminentOrder(OmsOrderImminentBo param) { + @Transactional(rollbackFor = Exception.class) + public OmsOrder modifyImminentOrder(OmsOrderImminentBo param) { SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId()); @@ -650,13 +651,16 @@ public class OmsOrderServiceImpl extends ServiceImpl im OmsOrder order; if(param.getId()!=null){ order = this.getById(param.getId()); + if(!order.getOrderType().equals(3)){ + Assert.throwEx("订单类型不支持混用"); + } }else { order = new OmsOrder(); order.setOrderSn("SP"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); } order.setLatitudeFrom("sp"); order.setCdOrderRemark(param.getCdOrderRemark()); - order.setOrderType(1); + order.setOrderType(3); order.setSupplierId(Long.parseLong(supplier.getId())); order.setSupplierCode(supplier.getCode()); order.setSupplierName(supplier.getName()); @@ -669,7 +673,13 @@ public class OmsOrderServiceImpl extends ServiceImpl im order.setBillType(param.getBillType()); order.setUrgentFlag(param.getUrgentFlag()); order.setRemark(param.getRemark()); - this.save(order); + this.saveOrUpdate(order); + + if(order.getStatus()==null||order.getStatus().equals(0)){ + if(CollectionUtil.isEmpty(param.getItemList())){ + return order; + } + } Set batchSkuIds = param.getItemList().stream().map(OmsOrderImminentBo.ItemParam::getBatchSkuId) .collect(Collectors.toSet()); @@ -741,25 +751,26 @@ public class OmsOrderServiceImpl extends ServiceImpl im this.buildPriceOrder(order.getId()+"",null); } - return order.getId().toString(); + return order; } @NotNull private OmsOrderItem createImminentOrderItem(OmsOrder order, List spuList, OmsOrderImminentBo.ItemParam item, GoodsImminentBatch batch, GoodsSku sku) { OmsOrderItem orderItem = new OmsOrderItem(); + orderItem.setRemark(item.getRemark()); + orderItem.setQuantity(item.getQty()); orderItem.setOrderId(order.getId()); orderItem.setOrderSn(order.getOrderSn()); - orderItem.setSpuId(sku.getId()); + orderItem.setSpuId(sku.getSpuId()); for (GoodsSpu spu : spuList) { if(sku.getSpuId().equals(spu.getId())){ orderItem.setSpuCode(spu.getSpuCode()); - orderItem.setSpuTitle(spu.getSpuCode()); + orderItem.setSpuTitle(spu.getName()); break; } } orderItem.setWeight(sku.getWeight()); orderItem.setVolume(sku.getVolume()); - orderItem.setRemark(sku.getRemark()); orderItem.setSkuBatchId(batch.getId()); orderItem.setSkuBatchCode(batch.getBatchCode()); orderItem.setSkuId(sku.getId()); @@ -771,7 +782,6 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setSalesPrice(sku.getSalesPrice()); orderItem.setCusPrice(sku.getSalesPrice()); orderItem.setMarketPrice(sku.getMarketPrice()); - orderItem.setQuantity(item.getQty()); return orderItem; } @@ -802,6 +812,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){ Assert.throwEx("订单状态不支持下单"); } + if(omsOrder.getOrderType().equals(3)){ + Assert.throwEx("临期品订单不支持该接口修改"); + } LambdaQueryWrapper iteLqw = new LambdaQueryWrapper<>(); iteLqw.eq(OmsOrderItem::getOrderId,id); List orderItemList = omsOrderItemService.list(iteLqw);