超市小程序统计
This commit is contained in:
@ -1,33 +1,45 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory;
|
package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import javax.annotation.Resource;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
import javax.validation.*;
|
|
||||||
import javax.servlet.http.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.*;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryRespVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventorySaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
|
||||||
|
import cn.iocoder.yudao.module.member.service.async.MemberAsyncService;
|
||||||
|
import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService;
|
||||||
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
|
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 商品库存")
|
@Tag(name = "管理后台 - 商品库存")
|
||||||
@RestController
|
@RestController
|
||||||
@ -37,12 +49,19 @@ public class StoreGoodsInventoryController {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private StoreGoodsInventoryService storeGoodsInventoryService;
|
private StoreGoodsInventoryService storeGoodsInventoryService;
|
||||||
|
@Resource
|
||||||
|
private StoreGoodsService storeGoodsService;
|
||||||
|
@Resource
|
||||||
|
private MemberAsyncService memberAsyncService;
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "出入库")
|
@Operation(summary = "出入库")
|
||||||
@PreAuthorize("@ss.hasPermission('member:store-goods-inventory:create')")
|
@PreAuthorize("@ss.hasPermission('member:store-goods-inventory:create')")
|
||||||
public CommonResult<Integer> createStoreGoodsInventory(@Valid @RequestBody StoreGoodsInventorySaveReqVO createReqVO) {
|
public CommonResult<Integer> createStoreGoodsInventory(@Valid @RequestBody AddReqVO createReqVO) {
|
||||||
return success(storeGoodsInventoryService.createStoreGoodsInventory(createReqVO));
|
Integer storeGoodsInventory = storeGoodsInventoryService.createStoreGoodsInventory(createReqVO);
|
||||||
|
memberAsyncService.batchRecord(createReqVO);
|
||||||
|
return success(storeGoodsInventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
@ -76,7 +95,18 @@ public class StoreGoodsInventoryController {
|
|||||||
@PreAuthorize("@ss.hasPermission('member:store-goods-inventory:query')")
|
@PreAuthorize("@ss.hasPermission('member:store-goods-inventory:query')")
|
||||||
public CommonResult<PageResult<StoreGoodsInventoryRespVO>> getStoreGoodsInventoryPage(@Valid StoreGoodsInventoryPageReqVO pageReqVO) {
|
public CommonResult<PageResult<StoreGoodsInventoryRespVO>> getStoreGoodsInventoryPage(@Valid StoreGoodsInventoryPageReqVO pageReqVO) {
|
||||||
PageResult<StoreGoodsInventoryDO> pageResult = storeGoodsInventoryService.getStoreGoodsInventoryPage(pageReqVO);
|
PageResult<StoreGoodsInventoryDO> pageResult = storeGoodsInventoryService.getStoreGoodsInventoryPage(pageReqVO);
|
||||||
return success(BeanUtils.toBean(pageResult, StoreGoodsInventoryRespVO.class));
|
PageResult<StoreGoodsInventoryRespVO> bean = BeanUtils.toBean(pageResult, StoreGoodsInventoryRespVO.class);
|
||||||
|
List<StoreGoodsInventoryRespVO> list = bean.getList();
|
||||||
|
if(CollectionUtil.isNotEmpty(list)){
|
||||||
|
List<Integer> goodsList = list.stream().map(StoreGoodsInventoryRespVO::getGoodsId).collect(Collectors.toList());
|
||||||
|
List<StoreGoodsDO> all = storeGoodsService.getAll(goodsList);
|
||||||
|
Map<Integer, StoreGoodsDO> collect = all.stream().collect(Collectors.toMap(StoreGoodsDO::getGoodsId, a -> a));
|
||||||
|
for (StoreGoodsInventoryRespVO vo:list){
|
||||||
|
vo.setGoodsInfo(collect.get(vo.getGoodsId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return success(bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/export-excel")
|
@GetMapping("/export-excel")
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zt
|
||||||
|
* @description <description class purpose>
|
||||||
|
* @since 2024/11/4
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AddReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "商品信息")
|
||||||
|
List<GoodsInfoReqVO> list;
|
||||||
|
|
||||||
|
@Schema(description = "1-入库,2-出库")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
@Schema(description = "出库类型")
|
||||||
|
private Integer outType;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zt
|
||||||
|
* @description <description class purpose>
|
||||||
|
* @since 2024/11/4
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class GoodsInfoReqVO {
|
||||||
|
@Schema(description = "商品ID", example = "16735")
|
||||||
|
private Integer goodsId;
|
||||||
|
|
||||||
|
@Schema(description = "门店ID", example = "14609")
|
||||||
|
private Long carteenId;
|
||||||
|
|
||||||
|
@Schema(description = "数量")
|
||||||
|
private Integer number;
|
||||||
|
|
||||||
|
@Schema(description = "重量")
|
||||||
|
private Double weight;
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,13 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo;
|
package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.Data;
|
||||||
import java.util.*;
|
|
||||||
import java.util.*;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import com.alibaba.excel.annotation.*;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 商品库存 Response VO")
|
@Schema(description = "管理后台 - 商品库存 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@ -37,4 +38,8 @@ public class StoreGoodsInventoryRespVO {
|
|||||||
@ExcelProperty("创建时间")
|
@ExcelProperty("创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@Schema(description = "商品ID", example = "16735")
|
||||||
|
@ExcelIgnore
|
||||||
|
private StoreGoodsDO goodsInfo;
|
||||||
|
|
||||||
}
|
}
|
@ -1,14 +1,13 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.admin.storeorder.vo;
|
package cn.iocoder.yudao.module.member.controller.admin.storeorder.vo;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
|
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.Data;
|
||||||
import java.util.*;
|
|
||||||
import java.util.*;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import com.alibaba.excel.annotation.*;
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 商品订单 Response VO")
|
@Schema(description = "管理后台 - 商品订单 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@ -59,4 +58,9 @@ public class StoreOrderRespVO {
|
|||||||
|
|
||||||
private Long carteenId;
|
private Long carteenId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (1-已支付,2-已完成,3-已取消,4-已退款)
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.app.storebusiness;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.business.vo.BusinessDataVO;
|
||||||
|
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 超市营业统计")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/member/store-business")
|
||||||
|
@Validated
|
||||||
|
public class AppStoreBusinessController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StoreBusinessService storeBusinessService;
|
||||||
|
|
||||||
|
@GetMapping("/data")
|
||||||
|
@Operation(summary = "获得营业统计")
|
||||||
|
public CommonResult<BusinessDataVO> getBusinessPage(String time, Long carteenId, Integer type) {
|
||||||
|
BusinessDataVO result = new BusinessDataVO();
|
||||||
|
switch (type){
|
||||||
|
case 0:
|
||||||
|
result = storeBusinessService.getDay(time, carteenId);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
//result = storeBusinessService.getWeek(time, carteenId);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
result = storeBusinessService.getMonth(time, carteenId);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,32 +1,23 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.app.storegoods;
|
package cn.iocoder.yudao.module.member.controller.app.storegoods;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
||||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsRespVO;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsRespVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsSaveReqVO;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreSaleGoodsPageVO;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
||||||
import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService;
|
import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 商品")
|
@Tag(name = "管理后台 - 商品")
|
||||||
@RestController
|
@RestController
|
||||||
@ -37,4 +28,12 @@ public class AppStoreGoodsController {
|
|||||||
@Resource
|
@Resource
|
||||||
private StoreGoodsService storeGoodsService;
|
private StoreGoodsService storeGoodsService;
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得商品分页")
|
||||||
|
public CommonResult<PageResult<StoreGoodsRespVO>> getStoreGoodsPage(@Valid StoreGoodsPageReqVO pageReqVO) {
|
||||||
|
PageResult<StoreGoodsDO> pageResult = storeGoodsService.getStoreGoodsPage(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, StoreGoodsRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,100 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.app.storegoodstype;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.StoreGoodsTypePageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.StoreGoodsTypeRespVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.StoreGoodsTypeSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO;
|
||||||
|
import cn.iocoder.yudao.module.member.service.storegoodstype.StoreGoodsTypeService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 商品类别")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/member/store-goods-type")
|
||||||
|
@Validated
|
||||||
|
public class AppStoreGoodsTypeController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StoreGoodsTypeService storeGoodsTypeService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建商品类别")
|
||||||
|
public CommonResult<Integer> createStoreGoodsType(@Valid @RequestBody StoreGoodsTypeSaveReqVO createReqVO) {
|
||||||
|
return success(storeGoodsTypeService.createStoreGoodsType(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新商品类别")
|
||||||
|
public CommonResult<Boolean> updateStoreGoodsType(@Valid @RequestBody StoreGoodsTypeSaveReqVO updateReqVO) {
|
||||||
|
storeGoodsTypeService.updateStoreGoodsType(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除商品类别")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
public CommonResult<Boolean> deleteStoreGoodsType(@RequestParam("id") Integer id) {
|
||||||
|
storeGoodsTypeService.deleteStoreGoodsType(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得商品类别")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
public CommonResult<StoreGoodsTypeRespVO> getStoreGoodsType(@RequestParam("id") Integer id) {
|
||||||
|
StoreGoodsTypeDO storeGoodsType = storeGoodsTypeService.getStoreGoodsType(id);
|
||||||
|
return success(BeanUtils.toBean(storeGoodsType, StoreGoodsTypeRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得商品类别分页")
|
||||||
|
public CommonResult<PageResult<StoreGoodsTypeRespVO>> getStoreGoodsTypePage(@Valid StoreGoodsTypePageReqVO pageReqVO) {
|
||||||
|
PageResult<StoreGoodsTypeDO> pageResult = storeGoodsTypeService.getStoreGoodsTypePage(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, StoreGoodsTypeRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出商品类别 Excel")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportStoreGoodsTypeExcel(@Valid StoreGoodsTypePageReqVO pageReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||||
|
List<StoreGoodsTypeDO> list = storeGoodsTypeService.getStoreGoodsTypePage(pageReqVO).getList();
|
||||||
|
// 导出 Excel
|
||||||
|
ExcelUtils.write(response, "商品类别.xls", "数据", StoreGoodsTypeRespVO.class,
|
||||||
|
BeanUtils.toBean(list, StoreGoodsTypeRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/all")
|
||||||
|
@Operation(summary = "获得商品类别分页")
|
||||||
|
public CommonResult<List<StoreGoodsTypeRespVO>> getAll() {
|
||||||
|
List<StoreGoodsTypeDO> all = storeGoodsTypeService.getAll();
|
||||||
|
return success(BeanUtils.toBean(all, StoreGoodsTypeRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代码生成的场景枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum OutTypeEnum {
|
||||||
|
|
||||||
|
SELL(1, "售出"),
|
||||||
|
SYSTEM(2, "系统扣减"),
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
|
private final Integer code;
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.async;
|
package cn.iocoder.yudao.module.member.service.async;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO;
|
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.OtherVO;
|
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.OtherVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
||||||
@ -15,4 +16,6 @@ public interface MemberAsyncService {
|
|||||||
void flashTime(DiningPlatesDO diningPlatesDO);
|
void flashTime(DiningPlatesDO diningPlatesDO);
|
||||||
|
|
||||||
void createOrderDetail(AppOrderDetailSaveReqVO createReqVO, OtherVO otherVO);
|
void createOrderDetail(AppOrderDetailSaveReqVO createReqVO, OtherVO otherVO);
|
||||||
|
|
||||||
|
void batchRecord(AddReqVO addReqVO);
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,18 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.async;
|
package cn.iocoder.yudao.module.member.service.async;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.GoodsInfoReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO;
|
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.OtherVO;
|
import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.OtherVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventoryrecord.StoreGoodsInventoryRecordDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventoryrecord.StoreGoodsInventoryRecordMapper;
|
||||||
import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi;
|
import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi;
|
||||||
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
|
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -18,6 +23,8 @@ import javax.annotation.Resource;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zt
|
* @author zt
|
||||||
@ -37,6 +44,10 @@ public class MemberAsyncServiceImpl implements MemberAsyncService{
|
|||||||
@Resource
|
@Resource
|
||||||
private OrderDetailMapper orderDetailMapper;
|
private OrderDetailMapper orderDetailMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StoreGoodsInventoryRecordMapper storeGoodsInventoryRecordMapper;
|
||||||
|
|
||||||
@Async
|
@Async
|
||||||
@Override
|
@Override
|
||||||
public void flashTime(DiningPlatesDO diningPlatesDO){
|
public void flashTime(DiningPlatesDO diningPlatesDO){
|
||||||
@ -69,7 +80,19 @@ public class MemberAsyncServiceImpl implements MemberAsyncService{
|
|||||||
orderDetailMapper.insert(orderDetail);
|
orderDetailMapper.insert(orderDetail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Async
|
||||||
|
@Override
|
||||||
|
public void batchRecord(AddReqVO addReqVO) {
|
||||||
|
List<StoreGoodsInventoryRecordDO> addList = new ArrayList<>();
|
||||||
|
for (GoodsInfoReqVO vo :addReqVO.getList()){
|
||||||
|
StoreGoodsInventoryRecordDO add = new StoreGoodsInventoryRecordDO();
|
||||||
|
BeanUtil.copyProperties(vo,add);
|
||||||
|
add.setType(addReqVO.getType());
|
||||||
|
add.setOutType(addReqVO.getOutType());
|
||||||
|
addList.add(add);
|
||||||
|
}
|
||||||
|
storeGoodsInventoryRecordMapper.insertBatch(addList);
|
||||||
|
}
|
||||||
|
|
||||||
public void discard(){
|
public void discard(){
|
||||||
//DishesNutritionRespDTO dishEnergy = dishesNutritionApi.getDishEnergy(createReqVO.getDishesId());
|
//DishesNutritionRespDTO dishEnergy = dishesNutritionApi.getDishEnergy(createReqVO.getDishesId());
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storebusiness;
|
package cn.iocoder.yudao.module.member.service.storebusiness;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import javax.validation.*;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.*;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.StoreBusinessPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.StoreBusinessSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.business.vo.BusinessDataVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 超市营业统计 Service 接口
|
* 超市营业统计 Service 接口
|
||||||
@ -56,4 +56,13 @@ public interface StoreBusinessService {
|
|||||||
|
|
||||||
|
|
||||||
void updateStatistics(StatisticsVo vo);
|
void updateStatistics(StatisticsVo vo);
|
||||||
|
|
||||||
|
BusinessDataVO getDay(String time, Long carteenId);
|
||||||
|
|
||||||
|
|
||||||
|
BusinessDataVO getMonth(String time,Long carteenId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,35 +1,42 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storebusiness;
|
package cn.iocoder.yudao.module.member.service.storebusiness;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessRespVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.StoreBusinessPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
|
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.StoreBusinessSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.business.vo.BusinessDataVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.storebusiness.StoreBusinessMapper;
|
||||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.util.MemberTimeUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.util.*;
|
import java.time.YearMonth;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.*;
|
import java.time.format.DateTimeFormatter;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
|
import java.util.ArrayList;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import java.util.HashMap;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import java.util.LinkedHashMap;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.storebusiness.StoreBusinessMapper;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_BUSINESS_NOT_EXISTS;
|
||||||
import static cn.iocoder.yudao.module.member.service.amount.LockManager.getStoreLock;
|
|
||||||
import static cn.iocoder.yudao.module.member.service.amount.LockManager.getSupermarketLock;
|
import static cn.iocoder.yudao.module.member.service.amount.LockManager.getSupermarketLock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -151,4 +158,179 @@ public class StoreBusinessServiceImpl implements StoreBusinessService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BusinessDataVO getDay(String time, Long carteenId) {
|
||||||
|
|
||||||
|
Integer nowDay = MemberTimeUtils.getDay(time);
|
||||||
|
time = MemberTimeUtils.getYearMonth(time);
|
||||||
|
|
||||||
|
BusinessDataVO businessDataVO = new BusinessDataVO();
|
||||||
|
|
||||||
|
LambdaQueryWrapper<StoreBusinessDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(StoreBusinessDO::getCarteenId,carteenId);
|
||||||
|
wrapper.orderByAsc(StoreBusinessDO::getCreateTime);
|
||||||
|
wrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", time);
|
||||||
|
List<StoreBusinessDO> businessDOS = storeBusinessMapper.selectList(wrapper);
|
||||||
|
|
||||||
|
Map<Integer, StoreBusinessDO> map = businessDOS.stream().collect(Collectors.toMap(
|
||||||
|
vo -> vo.getCreateTime().toLocalDate().getDayOfMonth()
|
||||||
|
, vo -> vo, (existing, replacement) -> existing));
|
||||||
|
|
||||||
|
// 创建一个Map来存储每天的数据
|
||||||
|
Map<Integer, BusinessRespVO> monthData = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
// 定义日期格式化器
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
|
||||||
|
|
||||||
|
// 将字符串解析为 YearMonth 对象
|
||||||
|
YearMonth yearMonth = YearMonth.parse(time, formatter);
|
||||||
|
|
||||||
|
// 获取当月的总天数
|
||||||
|
int daysInMonth = yearMonth.lengthOfMonth();
|
||||||
|
|
||||||
|
//获取上一个月最后一天的数据
|
||||||
|
// 获取上一个月的最后一天
|
||||||
|
YearMonth previousMonth = yearMonth.minusMonths(1);
|
||||||
|
LocalDate lastDayOfPreviousMonth = previousMonth.atEndOfMonth();
|
||||||
|
// 定义格式化器,将 LocalDate 转换为 yyyy-MM-dd 格式
|
||||||
|
DateTimeFormatter formatterDay = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
// 将 LocalDate 转换为指定格式的字符串
|
||||||
|
String formattedDate = lastDayOfPreviousMonth.format(formatterDay);
|
||||||
|
|
||||||
|
|
||||||
|
LambdaQueryWrapper<StoreBusinessDO> previousWrapper = new LambdaQueryWrapper<>();
|
||||||
|
previousWrapper.eq(StoreBusinessDO::getCarteenId,carteenId);
|
||||||
|
previousWrapper.orderByAsc(StoreBusinessDO::getCreateTime);
|
||||||
|
previousWrapper.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", formattedDate);
|
||||||
|
List<StoreBusinessDO> previousList = storeBusinessMapper.selectList(previousWrapper);
|
||||||
|
BusinessRespVO old = new BusinessRespVO();
|
||||||
|
if(CollectionUtil.isNotEmpty(previousList)){
|
||||||
|
BeanUtil.copyProperties(previousList.get(0), old);
|
||||||
|
}else {
|
||||||
|
old = getInitBusinessRespVO();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 循环遍历该月的每一天
|
||||||
|
for (int day = 1; day <= daysInMonth; day++) {
|
||||||
|
BusinessRespVO bean = new BusinessRespVO();
|
||||||
|
if(map.get(day) == null){
|
||||||
|
bean = getInitBusinessRespVO().setTime(String.valueOf(day));
|
||||||
|
}else {
|
||||||
|
bean = BeanUtils.toBean(map.get(day), BusinessRespVO.class);
|
||||||
|
bean.setTime(String.valueOf(day));
|
||||||
|
}
|
||||||
|
//计算差额
|
||||||
|
if(day == 1){
|
||||||
|
compare(bean,old);
|
||||||
|
}else {
|
||||||
|
compare(bean,monthData.get(day-1));
|
||||||
|
}
|
||||||
|
monthData.put(day,bean);
|
||||||
|
|
||||||
|
}
|
||||||
|
businessDataVO.setNow(monthData.get(nowDay));
|
||||||
|
businessDataVO.setBusinessList(new ArrayList<>(monthData.values()));
|
||||||
|
return businessDataVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BusinessDataVO getMonth(String time,Long carteenId) {
|
||||||
|
time = MemberTimeUtils.getYearMonth(time);
|
||||||
|
|
||||||
|
BusinessDataVO businessDataVO = new BusinessDataVO();
|
||||||
|
|
||||||
|
int year = MemberTimeUtils.getYearFromYearMonthString(time);
|
||||||
|
|
||||||
|
LambdaQueryWrapper<StoreBusinessDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(StoreBusinessDO::getCarteenId,carteenId);
|
||||||
|
wrapper.orderByAsc(StoreBusinessDO::getCreateTime);
|
||||||
|
wrapper.apply("DATE_FORMAT(create_time, '%Y') = {0}", year);
|
||||||
|
List<StoreBusinessDO> businessDOS = storeBusinessMapper.selectList(wrapper);
|
||||||
|
|
||||||
|
Map<Integer,BusinessRespVO> map = new HashMap<>();
|
||||||
|
//时间处理
|
||||||
|
for (int i = 1; i <= 12; i++) {
|
||||||
|
BusinessRespVO bean = getInitBusinessRespVO();
|
||||||
|
bean.setTime(String.valueOf(i));
|
||||||
|
map.put(i,bean);
|
||||||
|
}
|
||||||
|
//数据统计
|
||||||
|
for (StoreBusinessDO businessDO : businessDOS) {
|
||||||
|
|
||||||
|
LocalDate date = businessDO.getCreateTime().toLocalDate();
|
||||||
|
|
||||||
|
// 当前日期属于哪月
|
||||||
|
int i = date.getMonthValue();
|
||||||
|
BusinessRespVO businessRespVO = map.get(i);
|
||||||
|
handleBusiness(businessDO,businessRespVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
//上一年最后一月
|
||||||
|
int previousYear = year - 1;
|
||||||
|
LambdaQueryWrapper<StoreBusinessDO> previousWrapper = new LambdaQueryWrapper<>();
|
||||||
|
previousWrapper.eq(StoreBusinessDO::getCarteenId,carteenId);
|
||||||
|
previousWrapper.orderByAsc(StoreBusinessDO::getCreateTime);
|
||||||
|
previousWrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", previousYear+"-12");
|
||||||
|
List<StoreBusinessDO> previousList = storeBusinessMapper.selectList(previousWrapper);
|
||||||
|
BusinessRespVO previousVO = getInitBusinessRespVO();
|
||||||
|
for (StoreBusinessDO businessDO : previousList) {
|
||||||
|
handleBusiness(businessDO,previousVO);
|
||||||
|
}
|
||||||
|
//差额统计
|
||||||
|
for (int i = 1; i <= 12; i++) {
|
||||||
|
if(i == 1){
|
||||||
|
compare(map.get(i),previousVO);
|
||||||
|
}else {
|
||||||
|
compare(map.get(i),map.get(i-1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int month = MemberTimeUtils.getMonthFromYearMonthString(time);
|
||||||
|
businessDataVO.setNow(map.get(month));
|
||||||
|
businessDataVO.setBusinessList(new ArrayList<>(map.values()));
|
||||||
|
|
||||||
|
return businessDataVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void handleBusiness(StoreBusinessDO businessDO, BusinessRespVO businessRespVO) {
|
||||||
|
//营业额
|
||||||
|
businessRespVO.setTurnover(businessRespVO.getTurnover().add(businessDO.getTurnover()));
|
||||||
|
//订单数
|
||||||
|
businessRespVO.setOrderSum(businessRespVO.getOrderSum()+businessDO.getOrderSum());
|
||||||
|
//均单价
|
||||||
|
if(businessRespVO.getOrderSum()!=0){
|
||||||
|
businessRespVO.setPriceAvg(businessRespVO.getTurnover().divide(new BigDecimal(businessRespVO.getOrderSum().toString()), 2, RoundingMode.HALF_UP));
|
||||||
|
}
|
||||||
|
//减免金额
|
||||||
|
businessRespVO.setReduce(businessRespVO.getReduce().add(businessDO.getReduce()));
|
||||||
|
//重量
|
||||||
|
businessRespVO.setWeigh(businessRespVO.getWeigh().add(businessDO.getWeigh()));
|
||||||
|
//早
|
||||||
|
businessRespVO.setBreakfast(businessRespVO.getBreakfast().add(businessDO.getBreakfast()));
|
||||||
|
//中
|
||||||
|
businessRespVO.setLunch(businessRespVO.getLunch().add(businessDO.getLunch()));
|
||||||
|
//晚
|
||||||
|
businessRespVO.setDinner(businessRespVO.getDinner().add(businessDO.getDinner()));
|
||||||
|
//门店
|
||||||
|
businessRespVO.setCarteenId(businessDO.getCarteenId());
|
||||||
|
}
|
||||||
|
|
||||||
|
void compare(BusinessRespVO today, BusinessRespVO last) {
|
||||||
|
today.setTurnoverCompare(today.getTurnover().subtract(last.getTurnover()));
|
||||||
|
today.setOrderSumCompare(today.getOrderSum()-last.getOrderSum());
|
||||||
|
today.setPriceAvgCompare(today.getPriceAvg().subtract(last.getPriceAvg()));
|
||||||
|
}
|
||||||
|
|
||||||
|
BusinessRespVO getInitBusinessRespVO() {
|
||||||
|
BusinessRespVO previousVO = new BusinessRespVO();
|
||||||
|
previousVO.setTurnover(BigDecimal.ZERO).setOrderSum(0).setReduce(BigDecimal.ZERO).setWeigh(BigDecimal.ZERO)
|
||||||
|
.setBreakfast(BigDecimal.ZERO).setLunch(BigDecimal.ZERO).setDinner(BigDecimal.ZERO).setPriceAvg(BigDecimal.ZERO);
|
||||||
|
return previousVO;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,11 +1,12 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storegoodsinventory;
|
package cn.iocoder.yudao.module.member.service.storegoodsinventory;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import javax.validation.*;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.*;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventorySaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品库存 Service 接口
|
* 商品库存 Service 接口
|
||||||
@ -20,7 +21,7 @@ public interface StoreGoodsInventoryService {
|
|||||||
* @param createReqVO 创建信息
|
* @param createReqVO 创建信息
|
||||||
* @return 编号
|
* @return 编号
|
||||||
*/
|
*/
|
||||||
Integer createStoreGoodsInventory(@Valid StoreGoodsInventorySaveReqVO createReqVO);
|
Integer createStoreGoodsInventory(@Valid AddReqVO createReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新商品库存
|
* 更新商品库存
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storegoodsinventory;
|
package cn.iocoder.yudao.module.member.service.storegoodsinventory;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.GoodsInfoReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventorySaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventory.StoreGoodsInventoryMapper;
|
||||||
import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.*;
|
import javax.annotation.Resource;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.*;
|
import javax.validation.Valid;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
|
import java.util.List;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventory.StoreGoodsInventoryMapper;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_NOT_ENOUGH;
|
||||||
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品库存 Service 实现类
|
* 商品库存 Service 实现类
|
||||||
@ -33,36 +35,45 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic
|
|||||||
private StoreGoodsInventoryMapper storeGoodsInventoryMapper;
|
private StoreGoodsInventoryMapper storeGoodsInventoryMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Integer createStoreGoodsInventory(StoreGoodsInventorySaveReqVO createReqVO) {
|
|
||||||
|
public synchronized Integer createStoreGoodsInventory(@Valid AddReqVO createReqVO) {
|
||||||
Integer id = null;
|
Integer id = null;
|
||||||
// 入库
|
List<GoodsInfoReqVO> list = createReqVO.getList();
|
||||||
LambdaQueryWrapper<StoreGoodsInventoryDO> wrapper = new LambdaQueryWrapper<>();
|
for (GoodsInfoReqVO vo:list){
|
||||||
wrapper.eq(StoreGoodsInventoryDO::getGoodsId,createReqVO.getGoodsId())
|
LambdaQueryWrapper<StoreGoodsInventoryDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
.eq(StoreGoodsInventoryDO::getCarteenId,createReqVO.getCarteenId());
|
wrapper.eq(StoreGoodsInventoryDO::getGoodsId,vo.getGoodsId())
|
||||||
List<StoreGoodsInventoryDO> storeGoodsInventoryDOS = storeGoodsInventoryMapper.selectList(wrapper);
|
.eq(StoreGoodsInventoryDO::getCarteenId,vo.getCarteenId());
|
||||||
if(InventoryTypeEnum.IN.getCode().equals(createReqVO.getType())){
|
List<StoreGoodsInventoryDO> storeGoodsInventoryDOS = storeGoodsInventoryMapper.selectList(wrapper);
|
||||||
if(CollectionUtil.isNotEmpty(storeGoodsInventoryDOS)){
|
if(InventoryTypeEnum.IN.getCode().equals(createReqVO.getType())){
|
||||||
|
if(CollectionUtil.isNotEmpty(storeGoodsInventoryDOS)){
|
||||||
|
StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0);
|
||||||
|
storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()+vo.getNumber());
|
||||||
|
storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight()+vo.getWeight());
|
||||||
|
storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO);
|
||||||
|
id= storeGoodsInventoryDO.getId();
|
||||||
|
}else {
|
||||||
|
StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class);
|
||||||
|
storeGoodsInventoryMapper.insert(storeGoodsInventory);
|
||||||
|
id = storeGoodsInventory.getId();
|
||||||
|
}
|
||||||
|
}else {// 出库
|
||||||
|
if(CollectionUtil.isEmpty(storeGoodsInventoryDOS)){
|
||||||
|
throw exception(STORE_GOODS_INVENTORY_NOT_EXISTS);
|
||||||
|
}
|
||||||
StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0);
|
StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0);
|
||||||
storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()+createReqVO.getNumber());
|
if(storeGoodsInventoryDO.getNumber()<vo.getNumber()){
|
||||||
|
throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH);
|
||||||
|
}
|
||||||
|
if(storeGoodsInventoryDO.getWeight()<vo.getWeight()){
|
||||||
|
throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH);
|
||||||
|
}
|
||||||
|
storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()-vo.getNumber());
|
||||||
|
storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight()-vo.getWeight());
|
||||||
storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO);
|
storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO);
|
||||||
id= storeGoodsInventoryDO.getId();
|
id = storeGoodsInventoryDO.getId();
|
||||||
}else {
|
|
||||||
StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class);
|
|
||||||
storeGoodsInventoryMapper.insert(storeGoodsInventory);
|
|
||||||
id = storeGoodsInventory.getId();
|
|
||||||
}
|
}
|
||||||
}else {// 出库
|
|
||||||
if(CollectionUtil.isEmpty(storeGoodsInventoryDOS)){
|
|
||||||
throw exception(STORE_GOODS_INVENTORY_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0);
|
|
||||||
if(storeGoodsInventoryDO.getNumber()<createReqVO.getNumber()){
|
|
||||||
throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH);
|
|
||||||
}
|
|
||||||
storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()-createReqVO.getNumber());
|
|
||||||
storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO);
|
|
||||||
id = storeGoodsInventoryDO.getId();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回
|
// 返回
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storegoodsinventoryrecord;
|
package cn.iocoder.yudao.module.member.service.storegoodsinventoryrecord;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import javax.validation.*;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventoryrecord.vo.*;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventoryrecord.StoreGoodsInventoryRecordDO;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventoryrecord.vo.StoreGoodsInventoryRecordPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventoryrecord.vo.StoreGoodsInventoryRecordSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventoryrecord.StoreGoodsInventoryRecordDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品出入库记录 Service 接口
|
* 商品出入库记录 Service 接口
|
||||||
@ -52,4 +52,6 @@ public interface StoreGoodsInventoryRecordService {
|
|||||||
*/
|
*/
|
||||||
PageResult<StoreGoodsInventoryRecordDO> getStoreGoodsInventoryRecordPage(StoreGoodsInventoryRecordPageReqVO pageReqVO);
|
PageResult<StoreGoodsInventoryRecordDO> getStoreGoodsInventoryRecordPage(StoreGoodsInventoryRecordPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,21 +1,18 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storegoodsinventoryrecord;
|
package cn.iocoder.yudao.module.member.service.storegoodsinventoryrecord;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventoryrecord.vo.*;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventoryrecord.StoreGoodsInventoryRecordDO;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventoryrecord.vo.StoreGoodsInventoryRecordPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventoryrecord.vo.StoreGoodsInventoryRecordSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventoryrecord.StoreGoodsInventoryRecordDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventoryrecord.StoreGoodsInventoryRecordMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventoryrecord.StoreGoodsInventoryRecordMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_RECORD_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品出入库记录 Service 实现类
|
* 商品出入库记录 Service 实现类
|
||||||
@ -71,4 +68,5 @@ public class StoreGoodsInventoryRecordServiceImpl implements StoreGoodsInventory
|
|||||||
return storeGoodsInventoryRecordMapper.selectPage(pageReqVO);
|
return storeGoodsInventoryRecordMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,12 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.storegoodstype;
|
package cn.iocoder.yudao.module.member.service.storegoodstype;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import javax.validation.*;
|
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.*;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.StoreGoodsTypePageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.StoreGoodsTypeSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品类别 Service 接口
|
* 商品类别 Service 接口
|
||||||
@ -53,4 +54,6 @@ public interface StoreGoodsTypeService {
|
|||||||
PageResult<StoreGoodsTypeDO> getStoreGoodsTypePage(StoreGoodsTypePageReqVO pageReqVO);
|
PageResult<StoreGoodsTypeDO> getStoreGoodsTypePage(StoreGoodsTypePageReqVO pageReqVO);
|
||||||
|
|
||||||
List<StoreGoodsTypeDO> getAll();
|
List<StoreGoodsTypeDO> getAll();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -10,7 +10,6 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadD
|
|||||||
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
|
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
|
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@ -77,7 +76,7 @@ public interface StoreOrderService {
|
|||||||
|
|
||||||
void reduction(Long orderId, BigDecimal money);
|
void reduction(Long orderId, BigDecimal money);
|
||||||
|
|
||||||
Boolean appCreate(@RequestBody CardDto dto);
|
Boolean appCreate(CardDto dto);
|
||||||
|
|
||||||
String customize(StoreOrderDto dto);
|
String customize(StoreOrderDto dto);
|
||||||
}
|
}
|
@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.GoodsInfoReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageVO;
|
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO;
|
||||||
@ -21,11 +23,15 @@ import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
|||||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.OutTypeEnum;
|
||||||
import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum;
|
import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum;
|
||||||
import cn.iocoder.yudao.module.member.service.amount.AmountService;
|
import cn.iocoder.yudao.module.member.service.amount.AmountService;
|
||||||
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
||||||
|
import cn.iocoder.yudao.module.member.service.async.MemberAsyncService;
|
||||||
import cn.iocoder.yudao.module.member.service.card.CardService;
|
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||||
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
|
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
|
||||||
|
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
|
||||||
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
|
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
|
||||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||||
import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi;
|
import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi;
|
||||||
@ -78,6 +84,10 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
|||||||
private StoreBusinessService storeBusinessService;
|
private StoreBusinessService storeBusinessService;
|
||||||
@Resource
|
@Resource
|
||||||
private AmountService amountService;
|
private AmountService amountService;
|
||||||
|
@Resource
|
||||||
|
private MemberAsyncService memberAsyncService;
|
||||||
|
@Resource
|
||||||
|
private StoreGoodsInventoryService storeGoodsInventoryService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private StringRedisTemplate storeOrderRedisTemplate;
|
private StringRedisTemplate storeOrderRedisTemplate;
|
||||||
@ -300,6 +310,21 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
|||||||
if(amount.compareTo(total) < 0){
|
if(amount.compareTo(total) < 0){
|
||||||
throw exception(AMOUNT_NOT_ENOUGH);
|
throw exception(AMOUNT_NOT_ENOUGH);
|
||||||
}
|
}
|
||||||
|
//扣除库存
|
||||||
|
AddReqVO addReqVO = new AddReqVO();
|
||||||
|
addReqVO.setType(InventoryTypeEnum.OUT.getCode());
|
||||||
|
addReqVO.setOutType(OutTypeEnum.SELL.getCode());
|
||||||
|
List<GoodsInfoReqVO> infos = new ArrayList<>();
|
||||||
|
for (AppStoreGoodsDetail detail : dto.getGoodsList()){
|
||||||
|
GoodsInfoReqVO vo = new GoodsInfoReqVO();
|
||||||
|
BeanUtil.copyProperties(detail,vo);
|
||||||
|
vo.setCarteenId(dto.getCarteenId());
|
||||||
|
infos.add(vo);
|
||||||
|
}
|
||||||
|
addReqVO.setList(infos);
|
||||||
|
storeGoodsInventoryService.createStoreGoodsInventory(addReqVO);
|
||||||
|
//记录
|
||||||
|
memberAsyncService.batchRecord(addReqVO);
|
||||||
|
|
||||||
//创建订单
|
//创建订单
|
||||||
StoreOrderDO storeOrderDO = new StoreOrderDO();
|
StoreOrderDO storeOrderDO = new StoreOrderDO();
|
||||||
|
Reference in New Issue
Block a user