diff --git a/hiver-admin/src/main/resources/application.yml b/hiver-admin/src/main/resources/application.yml index 0a3506bd..69a15220 100644 --- a/hiver-admin/src/main/resources/application.yml +++ b/hiver-admin/src/main/resources/application.yml @@ -309,6 +309,11 @@ ignored: - /hiver/app/sale/getShopWeek - /hiver/app/purchase/getPurchaseList - /hiver/app/stock/getShopStock + - /hiver/app/return/getWaitReturnCount + - /hiver/app/sale/getWaitAddProductCount + - /hiver/app/purchase/getWaitPutInCount + - /hiver/app/operatingArea/** + # 限流及黑名单不拦截的路径 limitUrls: - /**/*.js diff --git a/hiver-admin/test-output/test-report.html b/hiver-admin/test-output/test-report.html index 79f23440..c40f5870 100644 --- a/hiver-admin/test-output/test-report.html +++ b/hiver-admin/test-output/test-report.html @@ -35,7 +35,7 @@ Hiver
  • - 31, 2023 23:25:57 +ʮ 18, 2023 11:51:47
  • @@ -84,7 +84,7 @@

    passTest

    -

    23:25:57 / 0.01 secs

    +

    11:51:48 / 0.016 secs

    @@ -92,9 +92,9 @@
    #test-id=1
    passTest
    -07.31.2023 23:25:57 -07.31.2023 23:25:57 -0.01 secs +12.18.2023 11:51:48 +12.18.2023 11:51:48 +0.016 secs
    @@ -104,7 +104,7 @@ Pass - 23:25:57 + 11:51:48 Test passed @@ -128,13 +128,13 @@

    Started

    -

    31, 2023 23:25:57

    +

    ʮ 18, 2023 11:51:47

    Ended

    -

    31, 2023 23:25:57

    +

    ʮ 18, 2023 11:51:48

    diff --git a/hiver-core/src/main/java/cc/hiver/core/common/constant/LogiticsCompanyConstant.java b/hiver-core/src/main/java/cc/hiver/core/common/constant/LogiticsCompanyConstant.java new file mode 100644 index 00000000..3bda91c4 --- /dev/null +++ b/hiver-core/src/main/java/cc/hiver/core/common/constant/LogiticsCompanyConstant.java @@ -0,0 +1,15 @@ +package cc.hiver.core.common.constant; + +/** + * 订单常量类 + * @author 王富康 + * @date 2023/10/21 + */ +public interface LogiticsCompanyConstant { + /** + 1:物流 + 2:快递 + 3:送车 + */ + String[] SIGN_COMPANY = {"0", "1", "2", "3"}; +} diff --git a/hiver-core/src/main/java/cc/hiver/core/common/constant/SaleConstant.java b/hiver-core/src/main/java/cc/hiver/core/common/constant/SaleConstant.java index 9de9f9fa..a0dd4c82 100644 --- a/hiver-core/src/main/java/cc/hiver/core/common/constant/SaleConstant.java +++ b/hiver-core/src/main/java/cc/hiver/core/common/constant/SaleConstant.java @@ -31,4 +31,9 @@ public interface SaleConstant { * 物流类别 0-物流 1-快递 2-自提 3-拼单 4-送车 */ String[] TRANSPORT_TYPE = {"0","1","2","3","4"}; + + /** + * 收款状态 0-未收款 1-已收款 2-部分收款 + */ + String[] PAY_STATUS = {"0","1","2"}; } diff --git a/hiver-core/src/main/java/cc/hiver/core/common/utils/SecurityUtil.java b/hiver-core/src/main/java/cc/hiver/core/common/utils/SecurityUtil.java index 93ad45a4..c03e89e7 100644 --- a/hiver-core/src/main/java/cc/hiver/core/common/utils/SecurityUtil.java +++ b/hiver-core/src/main/java/cc/hiver/core/common/utils/SecurityUtil.java @@ -1,9 +1,6 @@ package cc.hiver.core.common.utils; -import cc.hiver.core.common.constant.CommonConstant; -import cc.hiver.core.common.constant.SecurityConstant; -import cc.hiver.core.common.constant.UserConstant; -import cc.hiver.core.common.constant.WorkerConstant; +import cc.hiver.core.common.constant.*; import cc.hiver.core.common.exception.HiverException; import cc.hiver.core.common.redis.RedisTemplateHelper; import cc.hiver.core.common.vo.TokenCompany; @@ -22,6 +19,7 @@ import cc.hiver.core.vo.RoleDTO; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.IdUtil; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -95,7 +93,8 @@ public class SecurityUtil { } final User user = userToDTO(userDao.findByUsername(username)); // 缓存 - redisTemplate.set(key, new Gson().toJson(user), 15L, TimeUnit.DAYS); + Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create(); + redisTemplate.set(key, gson.toJson(user), 15L, TimeUnit.DAYS); return user; } @@ -134,7 +133,8 @@ public class SecurityUtil { } public LogiticsCompany findCompanyByMobile(String mobile) { - return logiticsCompanyDao.findByMobile(mobile); + // 现在只有物流公司登录,暂时写死 + return logiticsCompanyDao.findByMobileAndSignCompany(mobile, LogiticsCompanyConstant.SIGN_COMPANY[1]); } public User findUserByEmail(String email) { @@ -271,6 +271,10 @@ public class SecurityUtil { // 缓存 redisTemplate.set(userTypeKey, user.getType(), tokenProperties.getTokenExpireTime(), TimeUnit.MINUTES); } + // 更新当前登录人的角色 + final String key = "username::" + user.getUsername(); + Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create(); + redisTemplate.set(key, gson.toJson(user), 15L, TimeUnit.DAYS); } else { // JWT 不缓存权限 避免JWT长度过长 tokenUser = new TokenUser(user, false, null); diff --git a/hiver-core/src/main/java/cc/hiver/core/dao/LogiticsCompanyDao.java b/hiver-core/src/main/java/cc/hiver/core/dao/LogiticsCompanyDao.java index ea35024a..9b520489 100644 --- a/hiver-core/src/main/java/cc/hiver/core/dao/LogiticsCompanyDao.java +++ b/hiver-core/src/main/java/cc/hiver/core/dao/LogiticsCompanyDao.java @@ -33,4 +33,13 @@ public interface LogiticsCompanyDao extends HiverBaseDao list = purchaseService.list(queryWrapper); @@ -129,15 +130,16 @@ public class PurchaseController { /** * 查询采购单列表 - * @author 王富康 - * @date 2023/11/20 + * * @param purchaseQueryVo * @return Result + * @author 王富康 + * @date 2023/11/20 */ @RequestMapping(value = "/getPurchaseList", method = RequestMethod.POST) @ApiOperation("查询采购单列表") - public Result getPurchaseList(@RequestBody(required=false) PurchaseQueryVo purchaseQueryVo) { - if(purchaseQueryVo == null ){ + public Result getPurchaseList(@RequestBody(required = false) PurchaseQueryVo purchaseQueryVo) { + if (purchaseQueryVo == null) { purchaseQueryVo = new PurchaseQueryVo(); } // shopId从缓存中设置 @@ -187,15 +189,16 @@ public class PurchaseController { /** * 根据采购单id获取采购单详情 - * @author 王富康 - * @date 2023/11/6 + * * @param id 采购单id * @return Result + * @author 王富康 + * @date 2023/11/6 */ @RequestMapping(value = "/getPurchaseAllData", method = RequestMethod.POST) @ApiOperation("根据采购单id获取采购单及详细商品信息") public Result getPurchaseAllData(String id) { - if(StringUtils.isEmpty(id)){ + if (StringUtils.isEmpty(id)) { return ResultUtil.error("采购单id不能为空!"); } final PurchaseVo purchaseVo = purchaseService.getPurchaseAllData(id); @@ -213,7 +216,7 @@ public class PurchaseController { */ @RequestMapping(value = "/editPayPrice", method = RequestMethod.POST) @ApiOperation("回款") - public Result editPayPrice(String id, BigDecimal price,String dealingsWay) { + public Result editPayPrice(String id, BigDecimal price, String dealingsWay) { if (StringUtils.isEmpty(id)) { return ResultUtil.error("采购单id不能为空!"); } @@ -221,4 +224,22 @@ public class PurchaseController { return ResultUtil.success("回款成功!"); } + /** + * 获取待入库数量-首页 + * + * @return Result + * @author 王富康 + * @date 2023/11/22 + */ + @RequestMapping(value = "/getWaitPutInCount", method = RequestMethod.POST) + @ApiOperation("获取待入库数量-首页") + public Result getWaitPutInCount() { + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + final QueryWrapper querySaleWrapper = new QueryWrapper<>(); + querySaleWrapper.eq("shop_id", shopId) + .eq("in_storage_status", StockConstant.IN_STORAGE_STATUS[0]); + final long waitReturnCount = purchaseService.count(querySaleWrapper); + return ResultUtil.data(waitReturnCount); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java index 52fa5a45..b328a352 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java @@ -190,7 +190,7 @@ public class ReturnSaleController { } } - }else{ + } else { // 不需要平台取货,直接处理库存信息 final QueryWrapper queryReturnDetailWrapper = new QueryWrapper<>(); queryWrapper.eq("return_sale_id", returnSale.getSaleId()); @@ -213,7 +213,7 @@ public class ReturnSaleController { * 1.确认退货的前提是如果存在拉包工,那么拉包工必须已完成送达才可以退,否则可以直接退货 * 2.确认退货后根据库存直接扣减入库明细 * */ - final ReturnSale returnSale = returnSaleService.getBySaleId(id); + final ReturnSale returnSale = returnSaleService.getById(id); if (returnSale == null) { return ResultUtil.error("查询退货单信息失败!"); } @@ -225,7 +225,7 @@ public class ReturnSaleController { // 订单id 不能为空 return ResultUtil.error("物流订单中订单信息有误!"); } - if (!SaleConstant.SALE_STATUS[10].equals(orderXd.getOrderStatus())) { + if (!SaleConstant.SALE_STATUS[4].equals(orderXd.getOrderStatus())) { return ResultUtil.error("当前退货订单还未送达,不能点击确认退货!"); } //处理库存模块 @@ -264,9 +264,9 @@ public class ReturnSaleController { final String remark = saleComVO.getRemark(); if (!StringUtils.isEmpty(remark)) { if ("1".equals(remark)) { - queryWrapper.ne("status", "5"); + queryWrapper.eq("status", SaleConstant.SALE_STATUS[10]); } else if ("2".equals(remark)) { - queryWrapper.eq("status", "5"); + queryWrapper.eq("status", SaleConstant.SALE_STATUS[4]); } } else { return ResultUtil.error("退货标识参数缺失,请确认!"); @@ -307,16 +307,16 @@ public class ReturnSaleController { if (!StringUtils.isEmpty(saleComVO.getSaleId())) { queryWrapper.eq("sale_id", saleComVO.getSaleId()); } - /*final String remark = saleComVO.getRemark(); + final String remark = saleComVO.getRemark(); if (!StringUtils.isEmpty(remark)) { if ("1".equals(remark)) { - queryWrapper.ne("status", SaleConstant.SALE_STATUS[4]); + queryWrapper.eq("status", SaleConstant.SALE_STATUS[10]); } else if ("2".equals(remark)) { queryWrapper.eq("status", SaleConstant.SALE_STATUS[4]); } } else { return ResultUtil.error("退货标识参数缺失,请确认!"); - }*/ + } final SearchDateVo searchDateVo = saleComVO.getSearchDateVo(); if (!ObjectUtils.isEmpty(searchDateVo) && !searchDateVo.isAnyFieldEmpty()) { final Date endDate = searchDateVo.getEndDate(); @@ -353,4 +353,22 @@ public class ReturnSaleController { return ResultUtil.error("修改失败"); } + /** + * 获取待退货数量-首页 + * + * @return Result + * @author 王富康 + * @date 2023/11/22 + */ + @RequestMapping(value = "/getWaitReturnCount", method = RequestMethod.POST) + @ApiOperation("获取待退货数量-首页") + public Result getWaitReturnCount() { + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + final QueryWrapper querySaleWrapper = new QueryWrapper<>(); + querySaleWrapper.eq("shop_id", shopId) + .eq("status", SaleConstant.SALE_STATUS[10]); + long waitReturnCount = returnSaleService.count(querySaleWrapper); + return ResultUtil.data(waitReturnCount); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java index d733b3b6..6ced3a85 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java @@ -8,10 +8,13 @@ import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.StringUtils; import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.SearchDateVo; +import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.core.entity.User; import cc.hiver.core.entity.Worker; +import cc.hiver.core.service.LogiticsCompanyService; import cc.hiver.core.service.WorkerService; import cc.hiver.core.vo.WorkerQueryVO; +import cc.hiver.mall.common.constant.StockConstant; import cc.hiver.mall.entity.*; import cc.hiver.mall.pojo.dto.*; import cc.hiver.mall.pojo.vo.*; @@ -79,6 +82,12 @@ public class SaleController { @Autowired private ProductService productService; + @Autowired + private PurchaseService purchaseService; + + @Autowired + private LogiticsCompanyService logiticsCompanyService; + @RequestMapping(value = "/buy", method = RequestMethod.POST) @ApiOperation("下单操作") @Transactional @@ -183,11 +192,11 @@ public class SaleController { @RequestMapping(value = "/delById", method = RequestMethod.POST) @ApiOperation("根据id删除订单") - public Result delete(@RequestBody Sale sale) { - final boolean result = saleService.removeById(sale); + public Result delete(String id) { + final boolean result = saleService.deleteById(id); if (result) { final QueryWrapper deleteWrapper = new QueryWrapper<>(); - deleteWrapper.eq("sale_id", sale.getId()); + deleteWrapper.eq("sale_id", id); final boolean removeBatchByIds = saleDetailService.remove(deleteWrapper); if (removeBatchByIds) { return ResultUtil.success("删除成功"); @@ -240,7 +249,7 @@ public class SaleController { @ApiOperation("下游客户查询全部订单列表") public Result querySRAll(@RequestBody SaleVO saleVO) { final QueryWrapper queryWrapper = new QueryWrapper<>(); - User user = securityUtil.getCurrUser(); + final User user = securityUtil.getCurrUser(); queryWrapper.eq("user_id", user.getId()); if (!ObjectUtils.isEmpty(saleVO)) { if (!StringUtils.isEmpty(saleVO.getPayStatus())) { @@ -444,7 +453,7 @@ public class SaleController { saleDetailDTO.setDiscount(saleDetail.getDiscount()); saleDetailDTO.setDiscountAmount(saleDetail.getDiscountAmount()); saleDetailDTO.setRealPrice(saleDetail.getRealPrice()); - + saleDetailDTO.setProductPicture(saleDetail.getProductPicture()); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); saleDetailQueryDTO.setAttributeList(saleDetail.getAttributeList()); saleDetailQueryDTO.setProductCount(saleDetail.getProductCount()); @@ -458,10 +467,20 @@ public class SaleController { final String customerId = sale.getUserId(); final Customer customer = customerService.getById(customerId); saleNewVO.setCustomer(customer); - + // 增加物流公司信息 + final String transCompanyId = sale.getTransCompany(); + if(StringUtils.isNotEmpty(transCompanyId)){ + final LogiticsCompany logiticsCompany = logiticsCompanyService.get(transCompanyId); + saleNewVO.setLogiticsCompany(logiticsCompany); + } // 获取配送详情,主要是想要完成后的图片和备注信息 final OrderXd orderXd = orderService.findByOrderId(id); saleNewVO.setOrderXd(orderXd); + // 拉包工,配送详情中取 + // 添加店铺信息 + final String shopId = sale.getShopId(); + final Shop shop = shopService.get(shopId); + saleNewVO.setShop(shop); return new ResultUtil().setData(saleNewVO); } @@ -698,8 +717,11 @@ public class SaleController { @ApiOperation("分享页及挂单去开单操作") @Transactional public Result shareToBuyNew(@RequestBody SaleQueryDTO saleQueryDTO) { + if (StringUtils.isEmpty(saleQueryDTO.getOldSaleId())) { + return ResultUtil.error("订单id不能为空!"); + } // 删除之前的分享页下的单或者挂单 - delete(saleQueryDTO.getSale()); + delete(saleQueryDTO.getOldSaleId()); // 下单 return buyNew(saleQueryDTO); } @@ -730,20 +752,75 @@ public class SaleController { /** * 回款 - * @author 王富康 - * @date 2023/11/15 - * @param id 销售单id - * @param price 回款金额 + * + * @param id 销售单id + * @param price 回款金额 * @param dealingsWay 交易方式/附言 * @return Result + * @author 王富康 + * @date 2023/11/15 */ @RequestMapping(value = "/editPayPrice", method = RequestMethod.POST) @ApiOperation("回款") - public Result editPayPrice(String id, BigDecimal price,String dealingsWay) { + public Result editPayPrice(String id, BigDecimal price, String dealingsWay) { if (StringUtils.isEmpty(id)) { return ResultUtil.error("销售单id不能为空!"); } saleService.editPayPrice(id, price, dealingsWay); return ResultUtil.success("回款成功!"); } + + /** + * 获取配货数量-首页 + * + * @return Result + * @author 王富康 + * @date 2023/11/22 + */ + @RequestMapping(value = "/getWaitAddProductCount", method = RequestMethod.POST) + @ApiOperation("获取配货数量-首页") + public Result getWaitAddProductCount() { + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + final QueryWrapper querySaleWrapper = new QueryWrapper<>(); + querySaleWrapper.eq("shop_id", shopId) + .eq("status", SaleConstant.SALE_STATUS[11]); + final long waitAddProductCount = saleService.count(querySaleWrapper); + return ResultUtil.data(waitAddProductCount); + } + + /** + * 获取配货数量-首页 + * + * @return Result + * @author 王富康 + * @date 2023/11/22 + */ + @RequestMapping(value = "/getWaitCount", method = RequestMethod.POST) + @ApiOperation("获待配货、待入库、待入库数量-首页") + public Result getWaitCount() { + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + final QueryWrapper querySaleWrapper = new QueryWrapper<>(); + querySaleWrapper.eq("shop_id", shopId) + .eq("status", SaleConstant.SALE_STATUS[11]); + final long waitAddProductCount = saleService.count(querySaleWrapper); + + final QueryWrapper queryReturnSaleWrapper = new QueryWrapper<>(); + queryReturnSaleWrapper.eq("shop_id", shopId) + .eq("status", SaleConstant.SALE_STATUS[10]); + final long waitReturnCount = returnSaleService.count(queryReturnSaleWrapper); + + final QueryWrapper queryPurchaseWrapper = new QueryWrapper<>(); + queryPurchaseWrapper.eq("shop_id", shopId) + .eq("in_storage_status", StockConstant.IN_STORAGE_STATUS[0]); + final long waitPurchaseCount = purchaseService.count(queryPurchaseWrapper); + + final Map countMap = new HashMap<>(); + countMap.put("waitAddProductCount", waitAddProductCount); + countMap.put("waitReturnCount", waitReturnCount); + countMap.put("waitPurchaseCount", waitPurchaseCount); + return ResultUtil.data(countMap); + } + } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Purchase.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Purchase.java index 52ce72ed..011a4334 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Purchase.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Purchase.java @@ -26,6 +26,8 @@ public class Purchase implements Serializable { private String createBy; + private String createByName; + private Date createTime; private Integer delFlag; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java index 4992a08a..15337d3a 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java @@ -112,7 +112,7 @@ public class Sale implements Serializable { private String saleName; @ApiModelProperty(value="其他费用") - private String otherExpense; + private BigDecimal otherExpense; @Transient @TableField(exist = false) diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/SaleDetail.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/SaleDetail.java index 313ff678..102dbff5 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/SaleDetail.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/SaleDetail.java @@ -73,5 +73,8 @@ public class SaleDetail implements Serializable { @ApiModelProperty(value = "实际价格") private BigDecimal realPrice; + @ApiModelProperty(value = "商品图片") + private String productPicture; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/controller/OperatingAreaController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/controller/OperatingAreaController.java new file mode 100644 index 00000000..21b6e7e2 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/controller/OperatingAreaController.java @@ -0,0 +1,158 @@ +package cc.hiver.mall.operatingarea.controller; + +import cc.hiver.core.common.utils.PoiUtil; +import cc.hiver.core.common.utils.ResultUtil; +import cc.hiver.core.common.vo.Result; +import cc.hiver.mall.operatingarea.entity.OperatingArea; +import cc.hiver.mall.operatingarea.pojo.OperatingAreaPageQuery; +import cc.hiver.mall.operatingarea.service.OperatingAreaService; +import cc.hiver.mall.operatingarea.vo.OperatingAreaPageVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * 运营区域 控制层 + * + * @author 王富康 + * @date 2023/12/16 + */ +@Slf4j +@RestController +@Api(tags = "运营区域接口") +@RequestMapping("/hiver/app/operatingArea/") +@Transactional +public class OperatingAreaController { + + @Autowired + private OperatingAreaService operatingAreaService; + + /** + * 新增或者修改运营区域信息 + * + * @param operatingArea 实体对象 + * @return Result + * @author 王富康 + * @date 2023/12/17 + */ + @RequestMapping(value = "/saveOrUpdateOperatingArea", method = RequestMethod.POST) + @ApiOperation("新增或者修改运营区域信息") + public Result saveOrUpdateOperatingArea(OperatingArea operatingArea) { + final boolean b = operatingAreaService.saveOrUpdate(operatingArea); + if (b) { + return ResultUtil.success("保存成功!"); + } else { + return ResultUtil.error("保存失败!"); + } + } + + /** + * 根据id查询运营区域信息 + * @author 王富康 + * @date 2023/12/18 + * @param id + * @return Result + */ + @RequestMapping(value = "/getOperatingAreaById", method = RequestMethod.POST) + @ApiOperation("根据id查询运营区域信息") + public Result getOperatingAreaById(String id) { + if (StringUtils.isEmpty(id)) { + return ResultUtil.error("主键id不能为空!"); + } + OperatingArea operatingArea = operatingAreaService.getById(id); + if (operatingArea != null) { + return ResultUtil.data(operatingArea); + } else { + return ResultUtil.error("查询失败!"); + } + } + + /** + * 删除 + * + * @param id 主键id + * @return Result + * @author 王富康 + * @date 2023/12/17 + */ + @RequestMapping(value = "/deleteOperatingArea", method = RequestMethod.POST) + @ApiOperation("根据id删除运营区域信息") + public Result deleteOperatingArea(String id) { + final boolean b = operatingAreaService.deleteOperatingArea(id); + if (b) { + return ResultUtil.success("删除成功!"); + } else { + return ResultUtil.error("删除失败!"); + } + } + + /** + * 导入excel + * + * @param file excel文件 + * @param shippingType 类型:0:物流名称;1:快递名称;2:送车 + * @return Result + * @author 王富康 + * @date 2023/12/17 + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + @ApiOperation("excel导入") + public Result importExcel(MultipartFile file, String shippingType) { + final List operatingAreas = PoiUtil.importExcel(file, 1, 1, OperatingArea.class); + final boolean b = operatingAreaService.saveBatch(operatingAreas); + if (b) { + return ResultUtil.success("导入成功!"); + } else { + return ResultUtil.error("导入失败!"); + } + } + + /** + * 根据省市县获取物流/快递/送车信息 + * + * @param province 省 + * @param city 市 + * @param area 县 + * @param shippingType 类型 + * @return Result + * @author 王富康 + * @date 2023/12/17 + */ + @RequestMapping(value = "/getByArea", method = RequestMethod.POST) + @ApiOperation("根据省市县获取物流/快递/送车信息") + public Result getByArea(String province, String city, String area, String shippingType) { + if (StringUtils.isEmpty(province) || StringUtils.isEmpty(city) || StringUtils.isEmpty(area)) { + return ResultUtil.error("省市县不能为空!"); + } + if (StringUtils.isEmpty(shippingType)) { + return ResultUtil.error("类型不能为空!"); + } + final List operatingAreas = operatingAreaService.getByArea(province, city, area, shippingType); + return ResultUtil.data(operatingAreas); + } + + /** + * 运营区域列表(分页) + * @author 王富康 + * @date 2023/12/18 + * @param operatingAreaPageQuery + * @return Result> + */ + @RequestMapping(value = "/getOperatingAreaList", method = RequestMethod.POST) + @ApiOperation(value = "分页获取运营区域列表") + public Result> getOperatingAreaList(@RequestBody(required = false) OperatingAreaPageQuery operatingAreaPageQuery) { + final IPage result = operatingAreaService.getOperatingAreaList(operatingAreaPageQuery); + return new ResultUtil>().setData(result); + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/dao/OperatingAreaDao.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/dao/OperatingAreaDao.java new file mode 100644 index 00000000..d157c2a7 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/dao/OperatingAreaDao.java @@ -0,0 +1,4 @@ +package cc.hiver.mall.operatingarea.dao; + +public class OperatingAreaDao { +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/entity/OperatingArea.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/entity/OperatingArea.java new file mode 100644 index 00000000..116c3696 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/entity/OperatingArea.java @@ -0,0 +1,51 @@ +package cc.hiver.mall.operatingarea.entity; + +import cc.hiver.core.base.HiverBaseEntity; +import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.annotation.ExcelTarget; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 运营区域实体类 + * + * @author 王富康 + * @date 2023/12/16 + */ +@Data +@ApiModel(value = "运营区域表") +@TableName(value = "t_operating_area", autoResultMap = true) +@ExcelTarget("OperatingArea") +public class OperatingArea extends HiverBaseEntity { + + private static final long serialVersionUID = 1L; + + @Excel(name="类型",needMerge = true) + @ApiModelProperty(value = "类型:0:物流名称;1:快递名称;2:送车") + private String shippingType; + + @Excel(name="名称",needMerge = true) + @ApiModelProperty(value = "物流名称/快递名称/车牌号") + private String shippingMethod; + + @ApiModelProperty(value = "物流公司id/快递公司id/车牌号id") + private String shippingMethodId; + + @Excel(name="省") + @ApiModelProperty(value = "省") + private String province; + + @Excel(name="市") + @ApiModelProperty(value = "市") + private String city; + + @Excel(name="县") + @ApiModelProperty(value = "县") + private String area; + + @Excel(name="收费标准") + @ApiModelProperty(value = "收费标准") + private String chargingStandard; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/mapper/OperatingAreaMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/mapper/OperatingAreaMapper.java new file mode 100644 index 00000000..686ff401 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/mapper/OperatingAreaMapper.java @@ -0,0 +1,19 @@ +package cc.hiver.mall.operatingarea.mapper; + +import cc.hiver.mall.operatingarea.entity.OperatingArea; +import cc.hiver.mall.operatingarea.pojo.OperatingAreaPageQuery; +import cc.hiver.mall.operatingarea.vo.OperatingAreaPageVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface OperatingAreaMapper extends BaseMapper { + + List getByArea(@Param("province") String province, @Param("city") String city, @Param("area") String area, @Param("shippingType") String shippingType); + + List getOperatingAreaList(Page page, @Param("queryParams") OperatingAreaPageQuery operatingAreaPageQuery); +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/pojo/OperatingAreaPageQuery.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/pojo/OperatingAreaPageQuery.java new file mode 100644 index 00000000..16424e97 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/pojo/OperatingAreaPageQuery.java @@ -0,0 +1,61 @@ +/* +Copyright [2022] [https://hiver.cc] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + */ +package cc.hiver.mall.operatingarea.pojo; + +import cc.hiver.core.base.HiverBasePageQuery; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 商品分页查询对象 + * + * @author 王富康 + * @date 2023/10/14 + */ +@ApiModel("运营区域分页查询对象") +@Data +public class OperatingAreaPageQuery extends HiverBasePageQuery { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("类型:0:物流名称;1:快递名称;2:送车") + private String shippingType; + + @ApiModelProperty("物流名称/快递名称/车牌号") + private String shippingMethod; + + @ApiModelProperty("物流公司id/快递公司id/车牌号id") + private String shippingMethodId; + + @ApiModelProperty("省") + private String province; + + @ApiModelProperty("市") + private String city; + + @ApiModelProperty("县") + private String area; + + @ApiModelProperty("收费标准") + private String chargingStandard; + + @ApiModelProperty("排序字段名") + private String sortField; + + @ApiModelProperty("排序规则(asc:升序;desc:降序)") + private String sort; + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/service/OperatingAreaService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/service/OperatingAreaService.java new file mode 100644 index 00000000..31041bbb --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/service/OperatingAreaService.java @@ -0,0 +1,23 @@ +package cc.hiver.mall.operatingarea.service; + +import cc.hiver.mall.operatingarea.entity.OperatingArea; +import cc.hiver.mall.operatingarea.pojo.OperatingAreaPageQuery; +import cc.hiver.mall.operatingarea.vo.OperatingAreaPageVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 运营区域 接口层 + * @author 王富康 + * @date 2023/12/16 + */ +public interface OperatingAreaService extends IService { + + boolean deleteOperatingArea(String id); + + List getByArea(String province, String city, String area,String shippingType); + + IPage getOperatingAreaList(OperatingAreaPageQuery operatingAreaPageQuery); +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/service/impl/OperatingAreaServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/service/impl/OperatingAreaServiceImpl.java new file mode 100644 index 00000000..1054d01d --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/service/impl/OperatingAreaServiceImpl.java @@ -0,0 +1,47 @@ +package cc.hiver.mall.operatingarea.service.impl; + +import cc.hiver.mall.operatingarea.entity.OperatingArea; +import cc.hiver.mall.operatingarea.mapper.OperatingAreaMapper; +import cc.hiver.mall.operatingarea.pojo.OperatingAreaPageQuery; +import cc.hiver.mall.operatingarea.service.OperatingAreaService; +import cc.hiver.mall.operatingarea.vo.OperatingAreaPageVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 运营区域 实现层 + * @author 王富康 + * @date 2023/12/16 + */ +@Slf4j +@Service +public class OperatingAreaServiceImpl extends ServiceImpl implements OperatingAreaService { + + @Autowired + private OperatingAreaMapper operatingAreaMapper; + + @Override + public boolean deleteOperatingArea(String id) { + final int i = operatingAreaMapper.deleteById(id); + return i > 0; + } + + @Override + public List getByArea(String province, String city, String area, String shippingType) { + return operatingAreaMapper.getByArea(province, city, area, shippingType); + } + + @Override + public IPage getOperatingAreaList(OperatingAreaPageQuery operatingAreaPageQuery) { + final Page page = new Page<>(operatingAreaPageQuery.getPageNum(), operatingAreaPageQuery.getPageSize()); + final List list = operatingAreaMapper.getOperatingAreaList(page, operatingAreaPageQuery); + page.setRecords(list); + return page; + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/vo/OperatingAreaPageVO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/vo/OperatingAreaPageVO.java new file mode 100644 index 00000000..2c6a0bd4 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/operatingarea/vo/OperatingAreaPageVO.java @@ -0,0 +1,53 @@ +/* +Copyright [2022] [https://hiver.cc] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + */ +package cc.hiver.mall.operatingarea.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 商品分页查询对应Vo + * + * @author 王富康 + * @date 2023/10/14 + */ +@Data +@Accessors(chain = true) +@TableName(autoResultMap = true) +public class OperatingAreaPageVO { + @ApiModelProperty("类型:0:物流名称;1:快递名称;2:送车") + private String shippingType; + + @ApiModelProperty("物流名称/快递名称/车牌号") + private String shippingMethod; + + @ApiModelProperty("物流公司id/快递公司id/车牌号id") + private String shippingMethodId; + + @ApiModelProperty("省") + private String province; + + @ApiModelProperty("市") + private String city; + + @ApiModelProperty("县") + private String area; + + @ApiModelProperty("收费标准") + private String chargingStandard; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/SaleQueryDTO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/SaleQueryDTO.java index 95f7a284..220fb467 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/SaleQueryDTO.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/SaleQueryDTO.java @@ -1,7 +1,6 @@ package cc.hiver.mall.pojo.dto; import cc.hiver.mall.entity.Sale; -import cc.hiver.mall.entity.SaleDetail; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,4 +30,6 @@ public class SaleQueryDTO implements Serializable { @ApiModelProperty(value = "客户名称") private String username; + @ApiModelProperty(value = "挂单及分享单的id") + private String oldSaleId; } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/ProductPageQuery.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/ProductPageQuery.java index 638851e6..79a453f5 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/ProductPageQuery.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/ProductPageQuery.java @@ -60,4 +60,7 @@ public class ProductPageQuery extends HiverBasePageQuery { @ApiModelProperty("排序规则(asc:升序;desc:降序)") private String sort; + + @ApiModelProperty("查询条件") + private String searchStr; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/PurchaseVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/PurchaseVo.java index f31abe4a..e4544017 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/PurchaseVo.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/PurchaseVo.java @@ -1,6 +1,8 @@ package cc.hiver.mall.pojo.vo; -import cc.hiver.mall.entity.*; +import cc.hiver.mall.entity.Purchase; +import cc.hiver.mall.entity.PurchaseDetail; +import cc.hiver.mall.entity.Supplier; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; @@ -10,6 +12,10 @@ import java.util.List; @Data @Accessors(chain = true) public class PurchaseVo { + + @ApiModelProperty(value = "供应商信息") + private Supplier supplier; + @ApiModelProperty(value = "采购单主表") private Purchase purchase; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleNewVO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleNewVO.java index a183bd0f..83386ebf 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleNewVO.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleNewVO.java @@ -1,8 +1,10 @@ package cc.hiver.mall.pojo.vo; +import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.mall.entity.Customer; import cc.hiver.mall.entity.OrderXd; import cc.hiver.mall.entity.Sale; +import cc.hiver.mall.entity.Shop; import cc.hiver.mall.pojo.dto.SaleDetailDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -24,7 +26,13 @@ public class SaleNewVO implements Serializable { @ApiModelProperty(value = "客户明细") private Customer customer; + @ApiModelProperty(value = "物流公司信息") + private LogiticsCompany logiticsCompany; + @ApiModelProperty(value = "配送详情") private OrderXd orderXd; + @ApiModelProperty(value = "店铺信息") + private Shop shop; + } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java index 59c11807..4442f9e2 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java @@ -7,4 +7,6 @@ import java.math.BigDecimal; public interface SaleService extends IService { void editPayPrice(String id, BigDecimal price, String dealingsWay); + + boolean deleteById(String id); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java index a214f412..ecc66443 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java @@ -210,7 +210,7 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { Product product; final List saleDetailList = saleDTO.getSaleDetailList(); - final List saleDetailList2 = new ArrayList(); + final List saleDetailList2 = new ArrayList<>(); int productCount = 0; @@ -225,6 +225,7 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { saleDetailDTO.setPrice(product.getPrice()); saleDetailDTO.setWholesalePrice(product.getWholesalePrice()); saleDetailDTO.setPurchasePrice(product.getPurchasePrice()); + saleDetailDTO.setProductPicture(product.getProductPicture()); for(SaleDetailQueryDTO saleDetailQueryDTO : saleDetailDTO.getStockLogList1()){ final SaleDetail saleDetail = new SaleDetail(); saleDetailDTO.setAttributeList(saleDetailQueryDTO.getAttributeList()); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java index 138d4d33..6dd9d3c9 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java @@ -134,12 +134,14 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { //获取当日门店利润(当日总营收-当日总成本+(退货总营收-退货总成本)) final QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("shop_id", shopId) + // 只查销售单的, + .like("sale_id", "XD") .between("create_time", startDate, endDate); BigDecimal totalPurchasePrice = new BigDecimal("0.0"); final List list = saleDetailService.list(queryWrapper); for (SaleDetail saleDetail : list) { - final BigDecimal purchasePrice = saleDetail.getPurchasePrice(); - final int productCount = saleDetail.getProductCount(); + final BigDecimal purchasePrice = saleDetail.getPurchasePrice() == null ? BigDecimal.valueOf(0) :saleDetail.getPurchasePrice(); + final int productCount = saleDetail.getProductCount() == null ? 0 : saleDetail.getProductCount(); totalPurchasePrice = totalPurchasePrice.add(purchasePrice.multiply(new BigDecimal(productCount))); } /*final QueryWrapper returnDetailQueryWrapper = new QueryWrapper<>(); @@ -157,7 +159,7 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { //获取当日门店下单客户数 final QueryWrapper querySaleWrapper = new QueryWrapper<>(); - querySaleWrapper.select("count(user_id)") + querySaleWrapper.select("user_id") .eq("shop_id", shopId) .ne("status",SaleConstant.SALE_STATUS[2]) .ne("status",SaleConstant.SALE_STATUS[12]) @@ -166,13 +168,11 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { .groupBy("user_id"); final List countCus = saleService.listObjs(querySaleWrapper); if (!ObjectUtils.isEmpty(countCus) && !countCus.isEmpty()) { - final int countCustomer = ((Long) countCus.get(0)).intValue(); + final int countCustomer = countCus.size(); saleAllVO.setTotalCCount(countCustomer); } else { saleAllVO.setTotalCCount(0); } - - return saleAllVO; } @@ -193,7 +193,7 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { final Date endDate = DateUtil.COMMON_FULL.getTextDate(searchDate + " 23:59:59"); BigDecimal totalAmount1 = new BigDecimal(0); - //获取当日门店销售总额 销售笔数 销售总件数 + //获取当日门店销售总额 final SaleExample saleExample = new SaleExample(); saleExample.createCriteria() .andCreateTimeBetween(startDate, endDate) @@ -206,7 +206,7 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { } //获取当日门店利润(当日总营收-当日总成本+(退货总营收-退货总成本)) - final QueryWrapper queryWrapper = new QueryWrapper<>(); + /*final QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("shop_id", shopId) .between("create_time", startDate, endDate); BigDecimal totalPurchasePrice = new BigDecimal("0.0"); @@ -217,9 +217,9 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { totalPurchasePrice = totalPurchasePrice.add(purchasePrice.multiply(new BigDecimal(productCount))); } // 利润= 销售总金额-成本 - final BigDecimal subtract = totalAmount1.subtract(totalPurchasePrice); + final BigDecimal subtract = totalAmount1.subtract(totalPurchasePrice);*/ - thisWeekSale.add(subtract); + thisWeekSale.add(totalAmount1); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java index 6d84262b..52c2d5d4 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java @@ -4,13 +4,11 @@ import cc.hiver.core.common.constant.DealingsRecordConstant; import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.entity.User; import cc.hiver.mall.dao.mapper.PurchaseMapper; -import cc.hiver.mall.entity.DealingsRecord; -import cc.hiver.mall.entity.Purchase; -import cc.hiver.mall.entity.PurchaseDetail; -import cc.hiver.mall.entity.StockLog; +import cc.hiver.mall.entity.*; import cc.hiver.mall.pojo.dto.DebtSupplier; import cc.hiver.mall.pojo.vo.PurchaseQueryVo; import cc.hiver.mall.pojo.vo.PurchaseVo; +import cc.hiver.mall.service.SupplierService; import cc.hiver.mall.service.mybatis.DealingsRecordService; import cc.hiver.mall.service.mybatis.PurchaseDetailService; import cc.hiver.mall.service.mybatis.PurchaseService; @@ -43,6 +41,10 @@ public class PurchaseServiceImpl extends ServiceImpl i @Autowired private SecurityUtil securityUtil; + @Autowired + private SupplierService supplierService; + + @Override public List getDebtByShopId(String shopId) { return purchaseMapper.selectDebtByShopId(shopId); @@ -60,6 +62,7 @@ public class PurchaseServiceImpl extends ServiceImpl i // 计算已付 final BigDecimal newAlreadPay = alreadyPay.add(price); oldPurchase.setAlreadyPay(newAlreadPay); + // purchaseService.saveOrUpdate(oldPurchase); // 保存记录表 final DealingsRecord dealingsRecord = new DealingsRecord(); @@ -97,6 +100,9 @@ public class PurchaseServiceImpl extends ServiceImpl i // 获取采购单信息 final Purchase purchase = purchaseService.getById(id); purchaseVo.setPurchase(purchase); + // 获取供应商信息 + final Supplier supplier = supplierService.get(purchase.getSupplierId()); + purchaseVo.setSupplier(supplier); // 获取商品信息 final List purchaseDetails = purchaseDetailService.getByPurchaseId(id); // 获取规格信息 diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java index 1ad3a7b0..d34d15ff 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java @@ -1,6 +1,7 @@ package cc.hiver.mall.serviceimpl.mybatis; import cc.hiver.core.common.constant.DealingsRecordConstant; +import cc.hiver.core.common.constant.SaleConstant; import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.entity.User; import cc.hiver.mall.dao.mapper.SaleMapper; @@ -27,6 +28,9 @@ public class SaleServiceImpl extends ServiceImpl implements Sa @Autowired private SecurityUtil securityUtil; + @Autowired + private SaleMapper saleMapper; + @Override public void editPayPrice(String id, BigDecimal price, String dealingsWay) { // 修改采购单、实付、未付金额 @@ -39,6 +43,9 @@ public class SaleServiceImpl extends ServiceImpl implements Sa // 计算已付 final BigDecimal newAlreadPay = alreadyPay.add(price); oldSale.setAlreadyEarn(newAlreadPay); + if(newNoPay.compareTo(BigDecimal.ZERO) < 0){ + oldSale.setPayStatus(SaleConstant.PAY_STATUS[1]); + } saleService.saveOrUpdate(oldSale); // 保存记录表 final DealingsRecord dealingsRecord = new DealingsRecord(); @@ -61,4 +68,13 @@ public class SaleServiceImpl extends ServiceImpl implements Sa dealingsRecord.setDealingsWay(dealingsWay); dealingsRecordService.save(dealingsRecord); } + + @Override + public boolean deleteById(String id) { + final int deleteCount = saleMapper.deleteByPrimaryKey(id); + if(deleteCount>0){ + return true; + } + return false; + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java index 5a6231b8..1e9f2230 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java @@ -157,6 +157,7 @@ public class StockServiceImpl extends ServiceImpl implements final Purchase purchase = purchaseVo.getPurchase(); purchase.setShopId(shopId); purchase.setCreateBy(user.getId()); + purchase.setCreateByName(user.getNickname()); purchase.setCreateTime(new Date()); // 先保存一遍,因为后边用到了入库单的id purchaseService.save(purchase); @@ -506,9 +507,10 @@ public class StockServiceImpl extends ServiceImpl implements /** * 获取某店铺的库存管理顶部信息 + * + * @return ShopStockVo * @author 王富康 * @date 2023/11/21 - * @return ShopStockVo */ @Override public ShopStockVo getShopStock() { @@ -554,7 +556,7 @@ public class StockServiceImpl extends ServiceImpl implements stockCost = stockCost.add(thisStockCost); } // 计算库存数 - stockCount += thisStockCount; + stockCount += thisStockCount > 0 ? thisStockCount : 0; // 计算达到库存预警的规格数量 if (tailWarn > thisStockCount) { tailWarnCount++; @@ -568,9 +570,10 @@ public class StockServiceImpl extends ServiceImpl implements /** * 获取该店的库存信息 + * + * @return List * @author 王富康 * @date 2023/11/21 - * @return List */ @Override public List stockListOfShop() { diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/OperatingAreaMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/OperatingAreaMapper.xml new file mode 100644 index 00000000..2f795049 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/OperatingAreaMapper.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + id, create_by, create_time, del_flag, update_by, update_time, shipping_type, shipping_method, shipping_method_id, + province, city, area, charging_standard + + + + + + delete from t_operating_area + where id = #{id,jdbcType=VARCHAR} + + + + insert into t_operating_area + (id, create_by, create_time, del_flag, update_by, update_time,shipping_type, shipping_method, shipping_method_id, + province, city, area, charging_standard) + values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, + #{shippingType,jdbcType=VARCHAR},#{shippingMethod,jdbcType=VARCHAR}, #{shippingMethodId,jdbcType=VARCHAR}, + #{province,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR}, #{area,jdbcType=VARCHAR}, + #{chargingStandard,jdbcType=VARCHAR}) + + + + update t_operating_area + + + id = #{record.id,jdbcType=VARCHAR}, + + + create_by = #{record.createBy,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + del_flag = #{record.delFlag,jdbcType=INTEGER}, + + + update_by = #{record.updateBy,jdbcType=VARCHAR}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + shipping_type = #{record.shippingType,jdbcType=VARCHAR}, + + + shipping_method = #{record.shippingMethod,jdbcType=VARCHAR}, + + + shipping_method_id = #{record.shippingMethodId,jdbcType=VARCHAR}, + + + province = #{record.province,jdbcType=VARCHAR}, + + + city = #{record.city,jdbcType=VARCHAR}, + + + area = #{record.area,jdbcType=VARCHAR}, + + + charging_standard = #{record.chargingStandard,jdbcType=VARCHAR}, + + + + + + update t_operating_area + set id = #{record.id,jdbcType=VARCHAR}, + create_by = #{record.createBy,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + del_flag = #{record.delFlag,jdbcType=INTEGER}, + update_by = #{record.updateBy,jdbcType=VARCHAR}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + shipping_type = #{record.shippingType,jdbcType=VARCHAR}, + shipping_method = #{record.shippingMethod,jdbcType=VARCHAR}, + shipping_method_id = #{record.shippingMethodId,jdbcType=VARCHAR}, + province = #{record.province,jdbcType=VARCHAR}, + city = #{record.city,jdbcType=VARCHAR}, + area = #{record.area,jdbcType=VARCHAR}, + charging_standard = #{record.chargingStandard,jdbcType=VARCHAR} + + + + update t_operating_area + + + create_by = #{createBy,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + del_flag = #{delFlag,jdbcType=INTEGER}, + + + update_by = #{updateBy,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + shipping_type = #{shippingType,jdbcType=VARCHAR}, + + + shipping_method = #{shippingMethod,jdbcType=VARCHAR}, + + + shipping_method_id = #{shippingMethodId,jdbcType=VARCHAR}, + + + province = #{province,jdbcType=VARCHAR}, + + + city = #{city,jdbcType=VARCHAR}, + + + area = #{area,jdbcType=VARCHAR}, + + + charging_standard = #{chargingStandard,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=VARCHAR} + + + + update t_operating_area + set create_by = #{createBy,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + del_flag = #{delFlag,jdbcType=INTEGER}, + update_by = #{updateBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + shipping_type = #{shippingType,jdbcType=VARCHAR}, + shipping_method = #{shippingMethod,jdbcType=VARCHAR}, + shipping_method_id = #{shippingMethodId,jdbcType=VARCHAR}, + province = #{province,jdbcType=VARCHAR}, + city = #{city,jdbcType=VARCHAR}, + area = #{area,jdbcType=VARCHAR}, + charging_standard = #{chargingStandard,jdbcType=VARCHAR} + where id = #{id,jdbcType=VARCHAR} + + + + + + \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml index 0c3d2922..32fa2138 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml @@ -586,6 +586,13 @@ #{item} + + and ( + t.product_name like concat('%',#{queryParams.productName},'%') + or t.product_sn like concat('%',#{queryParams.productSn},'%') + or t.supplier_name like concat('%',#{queryParams.supplierName},'%') + ) + ORDER BY diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml index 9191357b..a1bfa6ca 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml @@ -4,6 +4,7 @@ + @@ -85,7 +86,7 @@ - id, create_by, create_time, del_flag, update_by, update_time, supplier_id,supplier_name, shop_id, + id, create_by,create_by_name, create_time, del_flag, update_by, update_time, supplier_id,supplier_name, shop_id, total_amount, should_pay, already_pay, no_pay,other_pay, in_storage_status,remark @@ -392,24 +407,21 @@ diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml index 290c3ee5..22605053 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml @@ -526,5 +526,12 @@ group by DATE_FORMAT(create_time, '%Y-%m-%d') + + \ No newline at end of file