diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketSpuController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketSpuController.java index 6e7695e47..688247a24 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketSpuController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketSpuController.java @@ -78,7 +78,7 @@ public class SupermarketSpuController { @PostMapping @PreAuthorize("@pms.hasPermission('supermarket_supermarketSpu_add')" ) public R save(@RequestBody SupermarketSpuEntity supermarketSpu) { - return R.ok(supermarketSpuService.save(supermarketSpu)); + return supermarketSpuService.saveSpu(supermarketSpu); } /** @@ -91,7 +91,7 @@ public class SupermarketSpuController { @PutMapping @PreAuthorize("@pms.hasPermission('supermarket_supermarketSpu_edit')" ) public R updateById(@RequestBody SupermarketSpuEntity supermarketSpu) { - return R.ok(supermarketSpuService.updateById(supermarketSpu)); + return supermarketSpuService.updateSpuById(supermarketSpu); } /** @@ -104,7 +104,7 @@ public class SupermarketSpuController { @DeleteMapping @PreAuthorize("@pms.hasPermission('supermarket_supermarketSpu_del')" ) public R removeById(@RequestBody Long[] ids) { - return R.ok(supermarketSpuService.removeBatchByIds(CollUtil.toList(ids))); + return R.ok(supermarketSpuService.removeSpuBatchByIds(CollUtil.toList(ids))); } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketUnitController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketUnitController.java new file mode 100644 index 000000000..e548b2cee --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SupermarketUnitController.java @@ -0,0 +1,122 @@ +package com.bsd.pjcloud.supermarket.controller; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity; +import com.bsd.pjcloud.supermarket.service.SupermarketUnitService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 商品包装单位(sku) + * + * @author zjf + * @date 2024-12-26 11:06:54 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/supermarketUnit" ) +@Tag(description = "supermarketUnit" , name = "商品包装单位(sku)管理" ) +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SupermarketUnitController { + + private final SupermarketUnitService supermarketUnitService; + + /** + * 分页查询 + * @param page 分页对象 + * @param supermarketUnit 商品包装单位(sku) + * @return + */ + @Operation(summary = "分页查询" , description = "分页查询" ) + @GetMapping("/page" ) + @PreAuthorize("@pms.hasPermission('supermarket_supermarketUnit_view')" ) + public R getSupermarketUnitPage(@ParameterObject Page page, @ParameterObject SupermarketUnitEntity supermarketUnit) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(StrUtil.isNotBlank(supermarketUnit.getBarCode()),SupermarketUnitEntity::getBarCode,supermarketUnit.getBarCode()); + wrapper.eq(Objects.nonNull(supermarketUnit.getSpuId()),SupermarketUnitEntity::getSpuId,supermarketUnit.getSpuId()); + return R.ok(supermarketUnitService.page(page, wrapper)); + } + + + /** + * 通过id查询商品包装单位(sku) + * @param id id + * @return R + */ + @Operation(summary = "通过id查询" , description = "通过id查询" ) + @GetMapping("/{id}" ) + @PreAuthorize("@pms.hasPermission('supermarket_supermarketUnit_view')" ) + public R getById(@PathVariable("id" ) Long id) { + return R.ok(supermarketUnitService.getById(id)); + } + + /** + * 新增商品包装单位(sku) + * @param supermarketUnit 商品包装单位(sku) + * @return R + */ + @Operation(summary = "新增商品包装单位(sku)" , description = "新增商品包装单位(sku)" ) + @SysLog("新增商品包装单位(sku)" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('supermarket_supermarketUnit_add')" ) + public R save(@RequestBody SupermarketUnitEntity supermarketUnit) { + return R.ok(supermarketUnitService.save(supermarketUnit)); + } + + /** + * 修改商品包装单位(sku) + * @param supermarketUnit 商品包装单位(sku) + * @return R + */ + @Operation(summary = "修改商品包装单位(sku)" , description = "修改商品包装单位(sku)" ) + @SysLog("修改商品包装单位(sku)" ) + @PutMapping + @PreAuthorize("@pms.hasPermission('supermarket_supermarketUnit_edit')" ) + public R updateById(@RequestBody SupermarketUnitEntity supermarketUnit) { + return R.ok(supermarketUnitService.updateById(supermarketUnit)); + } + + /** + * 通过id删除商品包装单位(sku) + * @param ids id列表 + * @return R + */ + @Operation(summary = "通过id删除商品包装单位(sku)" , description = "通过id删除商品包装单位(sku)" ) + @SysLog("通过id删除商品包装单位(sku)" ) + @DeleteMapping + @PreAuthorize("@pms.hasPermission('supermarket_supermarketUnit_del')" ) + public R removeById(@RequestBody Long[] ids) { + return R.ok(supermarketUnitService.removeBatchByIds(CollUtil.toList(ids))); + } + + + /** + * 导出excel 表格 + * @param supermarketUnit 查询条件 + * @param ids 导出指定ID + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('supermarket_supermarketUnit_export')" ) + public List export(SupermarketUnitEntity supermarketUnit,Long[] ids) { + return supermarketUnitService.list(Wrappers.lambdaQuery(supermarketUnit).in(ArrayUtil.isNotEmpty(ids), SupermarketUnitEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java index 3b140cece..d4f17e98b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * 商品spu @@ -307,4 +308,11 @@ public class SupermarketSpuEntity extends Model { */ @Schema(description="租户编号") private Long tenantId; + + @Schema(description = "辅助条码集合对象") + private List supermarketAuxiliaryCodeEntityList; + + @Schema(description = "包装对象集合对象") + private List supermarketUnitEntityList; + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketUnitEntity.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketUnitEntity.java new file mode 100644 index 000000000..be1620f67 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketUnitEntity.java @@ -0,0 +1,133 @@ +package com.bsd.pjcloud.supermarket.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDateTime; + +/** + * 商品包装单位(sku) + * + * @author zjf + * @date 2024-12-26 11:06:54 + */ +@Data +@TenantTable +@TableName("supermarket_unit") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "商品包装单位(sku)") +public class SupermarketUnitEntity extends Model { + + + /** + * 包装单位id + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="包装单位id") + private Long id; + + /** + * 条码 + */ + @Schema(description="条码") + private String barCode; + + /** + * 规格 + */ + @Schema(description="规格") + private String spec; + + /** + * 单位 + */ + @Schema(description="单位") + private String unit; + + /** + * 状态(0正常,1停销) + */ + @Schema(description="状态(0正常,1停销)") + private Integer status; + + /** + * 内装数量 + */ + @Schema(description="内装数量") + private Integer packageNum; + + /** + * 进价/单位分 + */ + @Schema(description="进价/单位分") + private Integer purchasePrice; + + /** + * 零售价/单位分 + */ + @Schema(description="零售价/单位分") + private Integer retailPrice; + + /** + * spuID + */ + @Schema(description="spuID") + private Long spuId; + + /** + * 促销价 + */ + @Schema(description="促销价") + private Integer promotionPrice; + + /** + * 成本价 + */ + @Schema(description="成本价") + private Integer costPrice; + + /** + * 创建者 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建者") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="更新者") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="更新时间") + private LocalDateTime updateTime; + + /** + * 是否删除 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description="是否删除") + private String delFlag; + + /** + * 租户编号 + */ + @Schema(description="租户编号") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SupermarketUnitMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SupermarketUnitMapper.java new file mode 100644 index 000000000..a6719ee71 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SupermarketUnitMapper.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.supermarket.mapper; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SupermarketUnitMapper extends PjcloudBaseMapper { + + +} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketSpuService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketSpuService.java index 3b4a3a0da..b88405738 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketSpuService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketSpuService.java @@ -1,8 +1,19 @@ package com.bsd.pjcloud.supermarket.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity; +import java.util.ArrayList; + public interface SupermarketSpuService extends IService { + + + R saveSpu(SupermarketSpuEntity supermarketSpu); + + R updateSpuById(SupermarketSpuEntity supermarketSpu); + + + Object removeSpuBatchByIds(ArrayList list); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketUnitService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketUnitService.java new file mode 100644 index 000000000..634f8ba31 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SupermarketUnitService.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.supermarket.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity; + +public interface SupermarketUnitService extends IService { + +} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketSpuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketSpuServiceImpl.java index 7f11749c2..e61057670 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketSpuServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketSpuServiceImpl.java @@ -1,10 +1,22 @@ package com.bsd.pjcloud.supermarket.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.supermarket.entity.SupermarketAuxiliaryCodeEntity; import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity; +import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity; import com.bsd.pjcloud.supermarket.mapper.SupermarketSpuMapper; +import com.bsd.pjcloud.supermarket.service.SupermarketAuxiliaryCodeService; import com.bsd.pjcloud.supermarket.service.SupermarketSpuService; +import com.bsd.pjcloud.supermarket.service.SupermarketUnitService; +import lombok.AllArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + /** * 商品spu * @@ -12,5 +24,71 @@ import org.springframework.stereotype.Service; * @date 2024-12-23 10:42:43 */ @Service +@AllArgsConstructor public class SupermarketSpuServiceImpl extends ServiceImpl implements SupermarketSpuService { + + private final SupermarketUnitService supermarketUnitService; + + private final SupermarketAuxiliaryCodeService supermarketAuxiliaryCodeService; + @Override + public R saveSpu(SupermarketSpuEntity supermarketSpu) { + + baseMapper.insert(supermarketSpu); + + //新增包装类型 + List supermarketUnitEntityList = supermarketSpu.getSupermarketUnitEntityList(); + if (CollectionUtils.isNotEmpty(supermarketUnitEntityList)) { + supermarketUnitService.saveBatch(supermarketUnitEntityList); + }else { + return R.failed("包装类型不能为空"); + } + //辅助条码 + List supermarketAuxiliaryCodeEntityList = supermarketSpu.getSupermarketAuxiliaryCodeEntityList(); + if (CollectionUtils.isNotEmpty(supermarketAuxiliaryCodeEntityList)) { + supermarketAuxiliaryCodeService.saveBatch(supermarketAuxiliaryCodeEntityList); + }else { + return R.failed("辅助条码不能为空"); + } + + return R.ok(); + } + + @Override + public R updateSpuById(SupermarketSpuEntity supermarketSpu) { + baseMapper.updateById(supermarketSpu); + + //新增包装类型 + List supermarketUnitEntityList = supermarketSpu.getSupermarketUnitEntityList(); + if (CollectionUtils.isNotEmpty(supermarketUnitEntityList)) { + supermarketUnitService.updateBatchById(supermarketUnitEntityList); + }else { + return R.failed("包装类型不能为空"); + } + //辅助条码 + List supermarketAuxiliaryCodeEntityList = supermarketSpu.getSupermarketAuxiliaryCodeEntityList(); + if (CollectionUtils.isNotEmpty(supermarketAuxiliaryCodeEntityList)) { + supermarketAuxiliaryCodeService.updateBatchById(supermarketAuxiliaryCodeEntityList); + }else { + return R.failed("辅助条码不能为空"); + } + return R.ok(); + } + + @Override + public Object removeSpuBatchByIds(ArrayList list) { + + baseMapper.deleteByIds(list); + + //删除 + list.forEach(id->{ + LambdaQueryWrapper supermarketAuxiliaryCodeEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + supermarketAuxiliaryCodeEntityLambdaQueryWrapper.eq(SupermarketAuxiliaryCodeEntity::getSpuId,id); + LambdaQueryWrapper supermarketUnitEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + supermarketUnitEntityLambdaQueryWrapper.eq(SupermarketUnitEntity::getSpuId,id); + supermarketUnitService.remove(supermarketUnitEntityLambdaQueryWrapper); + supermarketAuxiliaryCodeService.remove(supermarketAuxiliaryCodeEntityLambdaQueryWrapper); + }); + + return R.ok(); + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketUnitServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketUnitServiceImpl.java new file mode 100644 index 000000000..af64744d1 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SupermarketUnitServiceImpl.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.supermarket.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity; +import com.bsd.pjcloud.supermarket.mapper.SupermarketUnitMapper; +import com.bsd.pjcloud.supermarket.service.SupermarketUnitService; +import org.springframework.stereotype.Service; +/** + * 商品包装单位(sku) + * + * @author zjf + * @date 2024-12-26 11:06:54 + */ +@Service +public class SupermarketUnitServiceImpl extends ServiceImpl implements SupermarketUnitService { +} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SupermarketUnitMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SupermarketUnitMapper.xml new file mode 100644 index 000000000..232a4281c --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SupermarketUnitMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file