Commit e7d23e39 by 杨浩

后台展示修改

parent c1eb784e
package cn.iocoder.foodnexus.framework.common.enums;
import cn.iocoder.foodnexus.framework.common.core.ArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* @author : yanghao
* create at: 2025/10/29 09:52
* @description: 客户类型
*/
@Getter
@AllArgsConstructor
public enum CustomerTypeEnum implements ArrayValuable<Integer> {
CUSTOMER(0, "客户"),
CHIEF(1, "司务长"),
;
private final Integer key;
private final String value;
public static final Integer[] ARRAYS = Arrays.stream(values()).map(CustomerTypeEnum::getKey).toArray(Integer[]::new);
/**
* @return 数组
*/
@Override
public Integer[] array() {
return ARRAYS;
}
}
......@@ -26,4 +26,6 @@ public interface ErpCustomerApi {
Map<Long, String> queryNameMapByIds(Collection<Long> collection);
String queryNameStrById(Long customerId);
Integer queryCustomerTypeByUserId(Long userId);
}
......@@ -5,21 +5,28 @@ import cn.iocoder.foodnexus.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.foodnexus.framework.common.pojo.CommonResult;
import cn.iocoder.foodnexus.framework.common.pojo.PageParam;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.collection.MapUtils;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpCustomerApi;
import cn.iocoder.foodnexus.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnRespVO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpSupplierDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.foodnexus.module.erp.service.product.ErpProductService;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpPurchaseReturnService;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.foodnexus.module.erp.service.stock.ErpStockService;
import cn.iocoder.foodnexus.module.order.api.CustomerOrderApi;
import cn.iocoder.foodnexus.module.order.dto.CustomerOrderDTO;
import cn.iocoder.foodnexus.module.product.api.dto.ProductInfo;
import cn.iocoder.foodnexus.module.system.api.user.AdminUserApi;
import cn.iocoder.foodnexus.module.system.api.user.dto.AdminUserRespDTO;
import io.swagger.v3.oas.annotations.Operation;
......@@ -28,6 +35,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -36,6 +44,7 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static cn.iocoder.foodnexus.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.foodnexus.framework.common.pojo.CommonResult.success;
......@@ -53,13 +62,18 @@ public class ErpPurchaseReturnController {
@Resource
private ErpStockService stockService;
@Resource
private ErpProductService productService;
@Resource
private ErpSupplierService supplierService;
@Resource
private AdminUserApi adminUserApi;
@Autowired
private CustomerOrderApi customerOrderApi;
@Autowired
private ErpCustomerApi customerApi;
/*@PostMapping("/create")
@Operation(summary = "创建采购退货")
@PreAuthorize("@ss.hasPermission('erp:purchase-return:create')")
......@@ -103,15 +117,16 @@ public class ErpPurchaseReturnController {
return success(null);
}
List<ErpPurchaseReturnItemDO> purchaseReturnItemList = purchaseReturnService.getPurchaseReturnItemListByReturnId(id);
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
convertSet(purchaseReturnItemList, ErpPurchaseReturnItemDO::getProductId));
return success(BeanUtils.toBean(purchaseReturn, ErpPurchaseReturnRespVO.class, purchaseReturnVO ->
purchaseReturnVO.setItems(BeanUtils.toBean(purchaseReturnItemList, ErpPurchaseReturnRespVO.Item.class, item -> {
ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
.setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
}))));
return success(BeanUtils.toBean(purchaseReturn, ErpPurchaseReturnRespVO.class, purchaseReturnVO ->{
String supplierName = Optional.ofNullable(supplierService.getSupplier(purchaseReturnVO.getSupplierId())).map(ErpSupplierDO::getName).orElse("");
String orderCode = Optional.ofNullable(customerOrderApi.queryById(purchaseReturnVO.getCustomerOrderId())).map(CustomerOrderDTO::getCode).orElse("");
purchaseReturnVO.setSupplierName(supplierName);
purchaseReturnVO.setCustomerOrderCode(orderCode);
purchaseReturnVO.setItems(BeanUtils.toBean(purchaseReturnItemList, ErpPurchaseReturnRespVO.Item.class, item -> {
ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
}));
}));
}
@GetMapping("/page")
......@@ -142,23 +157,23 @@ public class ErpPurchaseReturnController {
List<ErpPurchaseReturnItemDO> purchaseReturnItemList = purchaseReturnService.getPurchaseReturnItemListByReturnIds(
convertSet(pageResult.getList(), ErpPurchaseReturnDO::getId));
Map<Long, List<ErpPurchaseReturnItemDO>> purchaseReturnItemMap = convertMultiMap(purchaseReturnItemList, ErpPurchaseReturnItemDO::getReturnId);
// 1.2 产品信息
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
convertSet(purchaseReturnItemList, ErpPurchaseReturnItemDO::getProductId));
// 1.3 供应商信息
Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
convertSet(pageResult.getList(), ErpPurchaseReturnDO::getSupplierId));
// 1.4 管理员信息
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(pageResult.getList(), purchaseReturn -> Long.parseLong(purchaseReturn.getCreator())));
Map<Long, String> customerOrderCodeMap = customerOrderApi.getCodeMap(CommonUtil.listConvert(pageResult.getList(), ErpPurchaseReturnDO::getCustomerOrderId));
Map<Long, String> customerNameMap = customerApi.queryNameMapByIds(CommonUtil.listConvertSet(pageResult.getList(), ErpPurchaseReturnDO::getCustomerId));
// 2. 开始拼接
return BeanUtils.toBean(pageResult, ErpPurchaseReturnRespVO.class, purchaseReturn -> {
purchaseReturn.setItems(BeanUtils.toBean(purchaseReturnItemMap.get(purchaseReturn.getId()), ErpPurchaseReturnRespVO.Item.class,
item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
.setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
purchaseReturn.setProductNames(CollUtil.join(purchaseReturn.getItems(), ",", ErpPurchaseReturnRespVO.Item::getProductName));
purchaseReturn.setItems(BeanUtils.toBean(purchaseReturnItemMap.get(purchaseReturn.getId()), ErpPurchaseReturnRespVO.Item.class));
purchaseReturn.setProductNames(CollUtil.join(purchaseReturn.getItems(), ",", item ->
Optional.ofNullable(item.getProductInfo()).map(ProductInfo::getName).orElse("")));
MapUtils.findAndThen(supplierMap, purchaseReturn.getSupplierId(), supplier -> purchaseReturn.setSupplierName(supplier.getName()));
MapUtils.findAndThen(userMap, Long.parseLong(purchaseReturn.getCreator()), user -> purchaseReturn.setCreatorName(user.getNickname()));
MapUtils.findAndThen(customerOrderCodeMap, purchaseReturn.getCustomerOrderId(), purchaseReturn::setCustomerOrderCode);
MapUtils.findAndThen(customerNameMap, purchaseReturn.getCustomerId(), purchaseReturn::setCustomerName);
});
}
......
......@@ -10,10 +10,7 @@ import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils;
import cn.iocoder.foodnexus.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpSupplierApi;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpProductSupplierBindReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierSaveReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.*;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpSupplierDO;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.foodnexus.module.product.controller.admin.spu.vo.ProductSpuRespVO;
......@@ -90,6 +87,13 @@ public class ErpSupplierController {
return success(BeanUtils.toBean(supplier, ErpSupplierRespVO.class));
}
@PostMapping("/enable")
@Operation(summary = "是否启用")
public CommonResult<Boolean> enable(@RequestBody @Valid ErpSupplierEnableReqVO reqVO) {
supplierService.enable(reqVO.getId(), reqVO.getStatus());
return success(Boolean.TRUE);
}
@PostMapping("/bind-product")
@Operation(summary = "供应商绑定商品")
public CommonResult<Boolean> bindProduct(@Valid @RequestBody ErpProductSupplierBindReqVO reqVO) {
......
......@@ -2,6 +2,10 @@ package cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import cn.iocoder.foodnexus.module.erp.api.vo.warehouse.WarehouseInfo;
import cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus;
import cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo;
import cn.iocoder.foodnexus.module.product.api.dto.ProductInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
......@@ -94,6 +98,47 @@ public class ErpPurchaseReturnRespVO {
@ExcelProperty("产品信息")
private String productNames;
/**
* 枚举 {@link SaleOrderPickUpStatus}
*/
@Schema(description = "退货状态")
private String returnsStatus;
@Schema(description = "客户收货地址id")
private Long addressId;
@Schema(description = "客户收货地址info")
private CustomerAddressInfo addressInfo;
@Schema(description = "收获仓库id")
private Long warehouseId;
@Schema(description = "收获库区id")
private Long warehouseAreaId;
@Schema(description = "仓库信息")
private WarehouseInfo warehouseInfo;
/**
* DeliveryStaffDO
*/
private Long deliveryStaffId;
@Schema(description = "客户订单id")
private Long customerOrderId;
@Schema(description = "客户订单编号")
private String customerOrderCode;
@Schema(description = "销售订单id")
private Long saleOrderId;
@Schema(description = "客户编号", example = "29399")
private Long customerId;
@Schema(description = "客户名称", example = "小番茄公司")
private String customerName;
@Data
public static class Item {
......@@ -128,14 +173,11 @@ public class ErpPurchaseReturnRespVO {
@Schema(description = "备注", example = "随便")
private String remark;
// ========== 关联字段 ==========
@Schema(description = "商品信息")
private ProductInfo productInfo;
@Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力")
private String productName;
@Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
private String productBarCode;
@Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒")
private String productUnitName;
@Schema(description = "客户子订单")
private Long customerOrderItemId;
@Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用
......
......@@ -73,6 +73,9 @@ public class ErpPurchaseReturnSaveReqVO {
@Schema(description = "销售订单id")
private Long saleOrderId;
@Schema(description = "客户id")
private Long customerId;
@Schema(description = "退货清单列表")
private List<Item> items;
......@@ -111,6 +114,9 @@ public class ErpPurchaseReturnSaveReqVO {
@Schema(description = "商品信息")
private ProductInfo productInfo;
@Schema(description = "客户子订单")
private Long customerOrderItemId;
}
}
\ No newline at end of file
package cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @author : yanghao
* create at: 2025/10/27 16:16
* @description:
*/
@Data
public class ErpSupplierEnableReqVO {
@NotNull(message = "id不能为空")
private Long id;
@NotNull(message = "status不能为空")
private Integer status;
}
......@@ -10,19 +10,14 @@ import cn.iocoder.foodnexus.framework.common.util.collection.MapUtils;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpSupplierApi;
import cn.iocoder.foodnexus.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpCustomerDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO;
import cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus;
import cn.iocoder.foodnexus.module.erp.service.product.ErpProductService;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpPurchaseOrderService;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.foodnexus.module.erp.service.sale.ErpCustomerService;
import cn.iocoder.foodnexus.module.erp.service.sale.ErpSaleOrderService;
import cn.iocoder.foodnexus.module.erp.service.stock.ErpStockService;
......@@ -32,7 +27,6 @@ import cn.iocoder.foodnexus.module.order.dto.CustomerOrderDTO;
import cn.iocoder.foodnexus.module.order.dto.CustomerOrderItemDTO;
import cn.iocoder.foodnexus.module.order.dto.DeliveryStaffSimpleInfo;
import cn.iocoder.foodnexus.module.product.api.dto.ProductInfo;
import cn.iocoder.foodnexus.module.product.dal.dataobject.spu.ProductSpuDO;
import cn.iocoder.foodnexus.module.product.service.spu.ProductSpuService;
import cn.iocoder.foodnexus.module.system.api.user.AdminUserApi;
import cn.iocoder.foodnexus.module.system.api.user.dto.AdminUserRespDTO;
......
......@@ -5,9 +5,11 @@ import cn.iocoder.foodnexus.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.foodnexus.framework.common.pojo.CommonResult;
import cn.iocoder.foodnexus.framework.common.pojo.PageParam;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.collection.MapUtils;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpSupplierApi;
import cn.iocoder.foodnexus.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnRespVO;
......@@ -17,9 +19,14 @@ import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.foodnexus.module.erp.service.product.ErpProductService;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpPurchaseReturnService;
import cn.iocoder.foodnexus.module.erp.service.sale.ErpCustomerService;
import cn.iocoder.foodnexus.module.erp.service.sale.ErpSaleReturnService;
import cn.iocoder.foodnexus.module.erp.service.stock.ErpStockService;
import cn.iocoder.foodnexus.module.order.api.CustomerOrderApi;
import cn.iocoder.foodnexus.module.order.api.DeliveryStaffApi;
import cn.iocoder.foodnexus.module.order.dto.CustomerOrderDTO;
import cn.iocoder.foodnexus.module.order.dto.DeliveryStaffSimpleInfo;
import cn.iocoder.foodnexus.module.product.api.dto.ProductInfo;
import cn.iocoder.foodnexus.module.system.api.user.AdminUserApi;
import cn.iocoder.foodnexus.module.system.api.user.dto.AdminUserRespDTO;
......@@ -29,6 +36,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -60,6 +68,16 @@ public class ErpSaleReturnController {
@Resource
private AdminUserApi adminUserApi;
@Autowired
private DeliveryStaffApi deliveryStaffApi;
@Autowired
private ErpSupplierApi supplierApi;
@Autowired
private ErpPurchaseReturnService purchaseReturnService;
@PostMapping("/create")
@Operation(summary = "创建销售退货")
@PreAuthorize("@ss.hasPermission('erp:sale-return:create')")
......@@ -103,11 +121,21 @@ public class ErpSaleReturnController {
return success(null);
}
List<ErpSaleReturnItemDO> saleReturnItemList = saleReturnService.getSaleReturnItemListByReturnId(id);
return success(BeanUtils.toBean(saleReturn, ErpSaleReturnRespVO.class, saleReturnVO ->
saleReturnVO.setItems(BeanUtils.toBean(saleReturnItemList, ErpSaleReturnRespVO.Item.class, item -> {
ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
}))));
Map<Long, String> supplierMap = supplierApi.queryNameMapByIds(CommonUtil.listConvertSet(saleReturnItemList, ErpSaleReturnItemDO::getSupplierId));
Map<Long, String> prNoMap = purchaseReturnService.queryNoMap(CommonUtil.listConvertSet(saleReturnItemList, ErpSaleReturnItemDO::getPurchaseReturnOrderId));
return success(BeanUtils.toBean(saleReturn, ErpSaleReturnRespVO.class, saleReturnVO -> {
String customerName = Optional.ofNullable(customerService.getCustomer(saleReturnVO.getCustomerId())).map(ErpCustomerDO::getName).orElse("");
String creatorName = Optional.ofNullable(adminUserApi.getUser(Long.parseLong(saleReturnVO.getCreator()))).map(AdminUserRespDTO::getNickname).orElse("");
saleReturnVO.setCustomerName(customerName);
saleReturnVO.setCreatorName(creatorName);
saleReturnVO.setDeliveryStaffInfo(deliveryStaffApi.querybyStaffId(saleReturnVO.getDeliveryStaffId()));
saleReturnVO.setItems(BeanUtils.toBean(saleReturnItemList, ErpSaleReturnRespVO.Item.class, item -> {
ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
MapUtils.findAndThen(supplierMap, item.getSupplierId(), item::setSupplierName);
MapUtils.findAndThen(prNoMap, item.getPurchaseReturnOrderId(), item::setPurchaseReturnOrderNo);
}));
}));
}
@GetMapping("/page")
......@@ -144,6 +172,8 @@ public class ErpSaleReturnController {
// 1.4 管理员信息
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(pageResult.getList(), saleReturn -> Long.parseLong(saleReturn.getCreator())));
Map<Long, DeliveryStaffSimpleInfo> deliveryMap = deliveryStaffApi.getMap(CommonUtil.listConvertSet(pageResult.getList(), ErpSaleReturnDO::getDeliveryStaffId));
// 2. 开始拼接
return BeanUtils.toBean(pageResult, ErpSaleReturnRespVO.class, saleReturn -> {
saleReturn.setItems(BeanUtils.toBean(saleReturnItemMap.get(saleReturn.getId()), ErpSaleReturnRespVO.Item.class));
......@@ -151,6 +181,7 @@ public class ErpSaleReturnController {
Optional.ofNullable(item.getProductInfo()).map(ProductInfo::getName).orElse("")));
MapUtils.findAndThen(customerMap, saleReturn.getCustomerId(), supplier -> saleReturn.setCustomerName(supplier.getName()));
MapUtils.findAndThen(userMap, Long.parseLong(saleReturn.getCreator()), user -> saleReturn.setCreatorName(user.getNickname()));
MapUtils.findAndThen(deliveryMap, saleReturn.getDeliveryStaffId(), saleReturn::setDeliveryStaffInfo);
});
}
......
......@@ -20,7 +20,11 @@ public class DeliveryOrderPageReqVO extends PageParam {
@Schema(description = "接单时间段")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] acceptTime;
private LocalDateTime acceptTimeBegin;
@Schema(description = "接单时间段")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime acceptTimeEnd;
@Schema(description = "拣货状态")
private SaleOrderPickUpStatus pickUpStatus;
......
......@@ -97,4 +97,15 @@ public class ErpSaleOrderPageReqVO extends PageParam {
@Schema(description = "接单时间段")
private LocalDateTime[] acceptTime;
@Schema(description = "订单类型(1-配送单 2-退货单)")
private Integer type;
@Schema(description = "接单时间段")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime acceptTimeBegin;
@Schema(description = "接单时间段")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime acceptTimeEnd;
}
\ No newline at end of file
......@@ -43,6 +43,9 @@ public class ErpSaleReturnPageReqVO extends PageParam {
@Schema(description = "产品编号", example = "1")
private Long productId;
@Schema(description = "产品名称")
private String productName;
@Schema(description = "仓库编号", example = "1")
private Long warehouseId;
......@@ -58,4 +61,7 @@ public class ErpSaleReturnPageReqVO extends PageParam {
@Schema(description = "是否可退款", example = "true")
private Boolean refundEnable; // 对应 refundStatus = [0, 1]
@Schema(description = "客户订单id")
private Long customerOrderId;
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import cn.iocoder.foodnexus.module.erp.api.vo.warehouse.WarehouseInfo;
import cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo;
import cn.iocoder.foodnexus.module.order.dto.DeliveryStaffSimpleInfo;
import cn.iocoder.foodnexus.module.product.api.dto.ProductInfo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
......@@ -117,6 +118,9 @@ public class ErpSaleReturnRespVO {
@Schema(description = "配送人员")
private Long deliveryStaffId;
@Schema(description = "配送人员名称")
private DeliveryStaffSimpleInfo deliveryStaffInfo;
@Schema(description = "客户收货地址id")
private Long addressId;
......@@ -173,6 +177,18 @@ public class ErpSaleReturnRespVO {
@Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用
@Schema(description = "供应商")
private Long supplierId;
@Schema(description = "供应商名称")
private String supplierName;
@Schema(description = "采购退货单")
private Long purchaseReturnOrderId;
@Schema(description = "采购退后单编号")
private String purchaseReturnOrderNo;
}
}
......@@ -14,8 +14,12 @@ import cn.iocoder.foodnexus.module.erp.controller.admin.stock.vo.stock.ErpStockR
import cn.iocoder.foodnexus.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.stock.ErpWarehouseDO;
import cn.iocoder.foodnexus.module.erp.service.product.ErpProductService;
import cn.iocoder.foodnexus.module.erp.service.product.ProductSupplierService;
import cn.iocoder.foodnexus.module.erp.service.stock.ErpStockService;
import cn.iocoder.foodnexus.module.erp.service.stock.ErpWarehouseService;
import cn.iocoder.foodnexus.module.product.dal.dataobject.spu.ProductSpuDO;
import cn.iocoder.foodnexus.module.product.service.category.ProductCategoryService;
import cn.iocoder.foodnexus.module.product.service.spu.ProductSpuService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
......@@ -23,6 +27,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -34,6 +39,7 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static cn.iocoder.foodnexus.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.foodnexus.framework.common.pojo.CommonResult.success;
......@@ -47,10 +53,14 @@ public class ErpStockController {
@Resource
private ErpStockService stockService;
@Resource
private ErpProductService productService;
@Autowired
private ProductSpuService productSpuService;
@Autowired
private ProductCategoryService productCategoryService;
@Resource
private ErpWarehouseService warehouseService;
@Autowired
private ProductSupplierService productSupplierService;
@GetMapping("/get")
@Operation(summary = "获得产品库存")
......@@ -63,8 +73,16 @@ public class ErpStockController {
public CommonResult<ErpStockRespVO> getStock(@RequestParam(value = "id", required = false) Long id,
@RequestParam(value = "productId", required = false) Long productId,
@RequestParam(value = "warehouseId", required = false) Long warehouseId) {
ErpStockDO stock = id != null ? stockService.getStock(id) : stockService.getStock(productId, warehouseId);
return success(BeanUtils.toBean(stock, ErpStockRespVO.class));
ErpStockDO stockDO = id != null ? stockService.getStock(id) : stockService.getStock(productId, warehouseId);
return success(BeanUtils.toBean(stockDO, ErpStockRespVO.class, stock -> {
ProductSpuDO product = productSpuService.getSpu(stock.getProductId());
stock.setProductName(product.getName())
.setUnitName(product.getUnitName())
.setIntroduction(product.getIntroduction());
stock.setCategoryName(productCategoryService.queryNameById(product.getCategoryId()));
stock.setWarehouseName(Optional.ofNullable(warehouseService.getWarehouse(stock.getWarehouseId())).map(ErpWarehouseDO::getName).orElse(""));
stock.setProductSupplierCount(productSupplierService.getCountByProductId(stock.getProductId()));
}));
}
@GetMapping("/get-count")
......@@ -98,14 +116,19 @@ public class ErpStockController {
if (CollUtil.isEmpty(pageResult.getList())) {
return PageResult.empty(pageResult.getTotal());
}
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
Map<Long, ProductSpuDO> productMap = productSpuService.getProductVOMap(
convertSet(pageResult.getList(), ErpStockDO::getProductId));
Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(pageResult.getList(), ErpStockDO::getWarehouseId));
Map<Long, String> categoryMap = productCategoryService.getMap(productMap.keySet());
Map<Long, Long> supplierCountMap = productSupplierService.getCountMap(productMap.keySet());
return BeanUtils.toBean(pageResult, ErpStockRespVO.class, stock -> {
MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName())
.setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName()));
.setUnitName(product.getUnitName())
.setIntroduction(product.getIntroduction()));
MapUtils.findAndThen(categoryMap, stock.getProductId(), stock::setCategoryName);
MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName()));
MapUtils.findAndThen(supplierCountMap, stock.getProductId(), stock::setProductSupplierCount);
});
}
......
......@@ -40,6 +40,13 @@ public class ErpStockRespVO {
@ExcelProperty("单位")
private String unitName;
@Schema(description = "商品规格", requiredMode = Schema.RequiredMode.REQUIRED, example = "清凉小短袖简介")
@ExcelProperty("商品规格")
private String introduction;
@Schema(description = "关联供应商数")
private Long productSupplierCount;
// ========== 仓库信息 ==========
@Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
......
......@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
......@@ -178,4 +179,9 @@ public class ErpPurchaseReturnDO extends BaseDO {
*/
private Long saleOrderId;
/**
* 客户id
*/
private Long customerId;
}
\ No newline at end of file
......@@ -18,7 +18,7 @@ import java.math.BigDecimal;
*
* @author 芋道源码
*/
@TableName("erp_purchase_return_items")
@TableName(value = "erp_purchase_return_items", autoResultMap = true)
@KeySequence("erp_purchase_return_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
......@@ -98,4 +98,9 @@ public class ErpPurchaseReturnItemDO extends BaseDO {
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private ProductInfo productInfo;
/**
* 客户子订单
*/
private Long customerOrderItemId;
}
\ No newline at end of file
......@@ -103,6 +103,11 @@ public class ErpSaleReturnItemDO extends BaseDO {
private Long supplierId;
/**
* 采购退货单
*/
private Long purchaseReturnOrderId;
/**
* 商品信息
*/
@TableField(typeHandler = JacksonTypeHandler.class)
......
......@@ -10,11 +10,13 @@ import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrd
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO;
import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus;
import cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.yulichang.query.MPJQueryWrapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
......@@ -37,6 +39,8 @@ public interface ErpSaleOrderMapper extends BaseMapperX<ErpSaleOrderDO> {
.eqIfPresent(ErpSaleOrderDO::getCreator, reqVO.getCreator())
// .eqIfPresent(ErpSaleOrderDO::getDeliveryStaffId, reqVO.getDeliveryStaffId())
.betweenIfPresent(ErpSaleOrderDO::getAcceptTime, reqVO.getAcceptTime())
.geIfPresent(ErpSaleOrderDO::getAcceptTime, reqVO.getAcceptTimeBegin())
.leIfPresent(ErpSaleOrderDO::getAcceptTime, reqVO.getAcceptTimeEnd())
.eqIfPresent(ErpSaleOrderDO::getPickUpStatus, reqVO.getPickUpStatus())
.inIfPresent(ErpSaleOrderDO::getPickUpStatus, reqVO.getPickUpStatusList())
.eqIfPresent(ErpSaleOrderDO::getCustomerDeptId, reqVO.getCustomerDeptId())
......@@ -79,6 +83,13 @@ public interface ErpSaleOrderMapper extends BaseMapperX<ErpSaleOrderDO> {
.eq(reqVO.getProductId() != null, ErpSaleOrderItemDO::getProductId, reqVO.getProductId())
.groupBy(ErpSaleOrderDO::getId); // 避免 1 对多查询,产生相同的 1
}
if (CommonUtil.isNotEmpty(reqVO.getType())) {
if (reqVO.getType() == 1) {
query.in(ErpSaleOrderDO::getPickUpStatus, SaleOrderPickUpStatus.getList(Boolean.TRUE));
} else if (reqVO.getType() == 2) {
query.in(ErpSaleOrderDO::getPickUpStatus, SaleOrderPickUpStatus.getList(Boolean.FALSE));
}
}
return selectJoinPage(reqVO, ErpSaleOrderDO.class, query);
}
......
......@@ -2,6 +2,7 @@ package cn.iocoder.foodnexus.module.erp.dal.mysql.sale;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.foodnexus.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO;
......@@ -9,6 +10,7 @@ import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOutDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus;
import cn.iocoder.foodnexus.module.product.dal.dataobject.spu.ProductSpuDO;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper;
......@@ -33,6 +35,7 @@ public interface ErpSaleReturnMapper extends BaseMapperX<ErpSaleReturnDO> {
.eqIfPresent(ErpSaleReturnDO::getCreator, reqVO.getCreator())
.eqIfPresent(ErpSaleReturnDO::getAccountId, reqVO.getAccountId())
.likeIfPresent(ErpSaleReturnDO::getOrderNo, reqVO.getOrderNo())
.eqIfPresent(ErpSaleReturnDO::getCustomerOrderId, reqVO.getCustomerOrderId())
.orderByDesc(ErpSaleReturnDO::getId);
// 退款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误
if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_NONE)) {
......@@ -51,6 +54,11 @@ public interface ErpSaleReturnMapper extends BaseMapperX<ErpSaleReturnDO> {
.eq(reqVO.getWarehouseId() != null, ErpSaleReturnItemDO::getWarehouseId, reqVO.getWarehouseId())
.eq(reqVO.getProductId() != null, ErpSaleReturnItemDO::getProductId, reqVO.getProductId())
.groupBy(ErpSaleReturnDO::getId); // 避免 1 对多查询,产生相同的 1
} else if (CommonUtil.isNotBlank(reqVO.getProductName())) {
query.leftJoin(ErpSaleReturnItemDO.class, ErpSaleReturnItemDO::getReturnId, ErpSaleReturnDO::getId)
.leftJoin(ProductSpuDO.class, ProductSpuDO::getId, ErpSaleReturnItemDO::getProductId)
.like(ProductSpuDO::getName, reqVO.getProductName())
.groupBy(ErpSaleReturnDO::getId);
}
return selectJoinPage(reqVO, ErpSaleReturnDO.class, query);
}
......
......@@ -6,6 +6,8 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author : yanghao
......@@ -87,4 +89,8 @@ public enum SaleOrderPickUpStatus implements ArrayValuable<String> {
public String[] array() {
return ARRAYS;
}
public static List<String> getList(boolean isReturns) {
return Arrays.stream(values()).filter(item->item.isReturns == isReturns).map(SaleOrderPickUpStatus::getType).collect(Collectors.toList());
}
}
......@@ -170,7 +170,7 @@ public class ErpProductServiceImpl implements ErpProductService {
.set(ErpProductDO::getAuditor, WebFrameworkUtils.getLoginUserId())
.set(ErpProductDO::getAuditReason, CommonUtil.getEls(auditReqVO.getAuditReason(), ""))
.set(ErpProductDO::getAuditTime, LocalDateTime.now())
.set(ErpProductDO::getAuditStatus, auditReqVO.getAuditReason())
.set(ErpProductDO::getAuditStatus, auditReqVO.getAuditStatus())
.eq(ErpProductDO::getId, id));
}
......
......@@ -72,4 +72,8 @@ public interface ProductSupplierService {
List<Long> queryByProductId(Long productId);
Map<Long, List<ProductSupplierDO>> groupBySupplierId(Collection<Long> productIds);
Map<Long, Long> getCountMap(Collection<Long> productIds);
Long getCountByProductId(Long productId);
}
\ No newline at end of file
......@@ -111,9 +111,29 @@ public class ProductSupplierServiceImpl implements ProductSupplierService {
@Override
public Map<Long, List<ProductSupplierDO>> groupBySupplierId(Collection<Long> productIds) {
if (CommonUtil.isEmpty(productIds)) {
return new HashMap<>();
}
List<ProductSupplierDO> productSupplierDOS = productSupplierMapper.selectList(Wrappers.<ProductSupplierDO>lambdaQuery()
.in(ProductSupplierDO::getProductId, productIds));
return CommonUtil.listConvertListMap(productSupplierDOS, ProductSupplierDO::getSupplierId);
}
@Override
public Map<Long, Long> getCountMap(Collection<Long> productIds) {
if (CommonUtil.isEmpty(productIds)) {
return new HashMap<>();
}
Map<Long, Long> result = new HashMap<>();
productIds.forEach(productId -> {
result.put(productId, getCountByProductId(productId));
});
return result;
}
@Override
public Long getCountByProductId(Long productId) {
return productSupplierMapper.selectCount(ProductSupplierDO::getProductId, productId);
}
}
\ No newline at end of file
......@@ -10,6 +10,8 @@ import jakarta.validation.Valid;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* ERP 采购退货 Service 接口
......@@ -98,4 +100,6 @@ public interface ErpPurchaseReturnService {
*/
List<ErpPurchaseReturnItemDO> getPurchaseReturnItemListByReturnIds(Collection<Long> returnIds);
Map<Long, String> queryNoMap(Collection<Long> longs);
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package cn.iocoder.foodnexus.module.erp.service.purchase;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.number.MoneyUtils;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
......@@ -29,10 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import static cn.iocoder.foodnexus.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.foodnexus.framework.common.util.collection.CollectionUtils.*;
......@@ -135,8 +133,8 @@ public class ErpPurchaseReturnServiceImpl implements ErpPurchaseReturnService {
if (purchaseReturn.getDiscountPercent() == null) {
purchaseReturn.setDiscountPercent(BigDecimal.ZERO);
}
purchaseReturn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(purchaseReturn.getTotalPrice(), purchaseReturn.getDiscountPercent()));
purchaseReturn.setTotalPrice(purchaseReturn.getTotalPrice().subtract(purchaseReturn.getDiscountPrice()).add(purchaseReturn.getOtherPrice()));
// purchaseReturn.setDiscountPrice(BigDecimal.ZERO);
// purchaseReturn.setTotalPrice(purchaseReturn.getTotalPrice());
}
private void updatePurchaseOrderReturnCount(Long orderId) {
......@@ -301,4 +299,12 @@ public class ErpPurchaseReturnServiceImpl implements ErpPurchaseReturnService {
return purchaseReturnItemMapper.selectListByReturnIds(returnIds);
}
@Override
public Map<Long, String> queryNoMap(Collection<Long> ids) {
if (CommonUtil.isEmpty(ids)) {
return new HashMap<>();
}
return CommonUtil.listConvertMap(purchaseReturnMapper.selectByIds(ids), ErpPurchaseReturnDO::getId, ErpPurchaseReturnDO::getNo);
}
}
......@@ -100,4 +100,5 @@ public interface ErpSupplierService {
List<ProductSpuDO> queryBindProduct(Long id);
void enable(Long id, Integer status);
}
\ No newline at end of file
......@@ -150,7 +150,7 @@ public class ErpSupplierServiceImpl implements ErpSupplierService, ErpSupplierAp
.set(ErpSupplierDO::getAuditor, WebFrameworkUtils.getLoginUserId())
.set(ErpSupplierDO::getAuditReason, CommonUtil.getEls(auditReqVO.getAuditReason(), ""))
.set(ErpSupplierDO::getAuditTime, LocalDateTime.now())
.set(ErpSupplierDO::getAuditStatus, auditReqVO.getAuditReason())
.set(ErpSupplierDO::getAuditStatus, auditReqVO.getAuditStatus())
.eq(ErpSupplierDO::getId, id));
}
......@@ -175,6 +175,13 @@ public class ErpSupplierServiceImpl implements ErpSupplierService, ErpSupplierAp
return productSpuService.getSpuList(CommonUtil.listConvertSet(productSupplierDOS, ProductSupplierDO::getProductId));
}
@Override
public void enable(Long id, Integer status) {
supplierMapper.update(Wrappers.<ErpSupplierDO>lambdaUpdate()
.set(ErpSupplierDO::getStatus, status)
.eq(ErpSupplierDO::getId, id));
}
/* --------------- api --------------- */
......
package cn.iocoder.foodnexus.module.erp.service.sale;
import cn.iocoder.foodnexus.framework.common.enums.CommonStatusEnum;
import cn.iocoder.foodnexus.framework.common.enums.CustomerTypeEnum;
import cn.iocoder.foodnexus.framework.common.exception.ServiceException;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
......@@ -253,4 +254,26 @@ public class ErpCustomerServiceImpl implements ErpCustomerService, ErpCustomerAp
public String queryNameStrById(Long customerId) {
return Optional.ofNullable(customerMapper.selectById(customerId)).map(ErpCustomerDO::getName).orElse("");
}
@Override
public Integer queryCustomerTypeByUserId(Long userId) {
AdminUserDO user = userService.getUser(userId);
if (!UserSystemEnum.CUSTOMER.getKey().equals(user.getUserSystem())) {
return null;
}
DeptDO topDept = deptService.getTopDept(user.getDeptId());
ErpCustomerDO customer = customerMapper.selectOne(ErpCustomerDO::getSystemDeptId, topDept.getId());
if (CommonUtil.isEmpty(customer)) {
throw exception(CUSTOMER_NOT_EXISTS);
}
if (CommonStatusEnum.isDisable(customer.getStatus())) {
throw exception(CUSTOMER_NOT_ENABLE, customer.getName());
}
DeptDO dept = deptService.getDept(user.getDeptId());
if (DeptDO.PARENT_ID_ROOT.equals(dept.getParentId())) {
return CustomerTypeEnum.CUSTOMER.getKey();
}
return CustomerTypeEnum.CHIEF.getKey();
}
}
......@@ -258,13 +258,15 @@ public class ErpSaleReturnServiceImpl implements ErpSaleReturnService {
purchaseReturnSave.setDeliveryStaffId(saleReturn.getDeliveryStaffId());
purchaseReturnSave.setCustomerOrderId(saleReturn.getCustomerOrderId());
purchaseReturnSave.setSaleOrderId(saleReturn.getOrderId());
purchaseReturnSave.setCustomerId(saleReturn.getCustomerId());
Map<Long, ErpPurchaseOrderItemDO> purchaseOrderMap = CommonUtil.listConvertMap(purchaseOrderItems, ErpPurchaseOrderItemDO::getCustomerOrderItemId);
for (ErpSaleReturnItemDO saleReturnsItem : saleReturnsItems) {
ErpPurchaseReturnSaveReqVO.Item item = new ErpPurchaseReturnSaveReqVO.Item();
if (purchaseOrderMap.containsKey(saleReturnsItem.getCustomerOrderItemId())) {
if (!purchaseOrderMap.containsKey(saleReturnsItem.getCustomerOrderItemId())) {
throw exception(PURCHASE_ORDER_NOT_EXISTS);
}
item.setOrderItemId(purchaseOrderMap.get(saleReturnsItem.getCustomerOrderItemId()).getId());
item.setCustomerOrderItemId(saleReturnsItem.getCustomerOrderItemId());
item.setWarehouseId(saleReturnsItem.getWarehouseId());
item.setProductId(saleReturnsItem.getProductId());
item.setProductUnit(saleReturnsItem.getProductUnit());
......@@ -275,7 +277,11 @@ public class ErpSaleReturnServiceImpl implements ErpSaleReturnService {
purchaseReturnitems.add(item);
}
purchaseReturnSave.setItems(purchaseReturnitems);
purchaseReturnService.createPurchaseReturn(purchaseReturnSave);
Long purchaseReturnOrderId = purchaseReturnService.createPurchaseReturn(purchaseReturnSave);
saleReturnItemMapper.update(Wrappers.<ErpSaleReturnItemDO>lambdaUpdate()
.eq(ErpSaleReturnItemDO::getReturnId, saleReturn.getId())
.eq(ErpSaleReturnItemDO::getSupplierId, supplierId)
.set(ErpSaleReturnItemDO::getPurchaseReturnOrderId, purchaseReturnOrderId));
});
}
......
......@@ -5,6 +5,7 @@ import cn.iocoder.foodnexus.module.erp.controller.admin.stock.vo.stock.ErpStockP
import cn.iocoder.foodnexus.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.foodnexus.module.erp.dal.mysql.stock.ErpStockMapper;
import cn.iocoder.foodnexus.module.erp.service.product.ErpProductService;
import cn.iocoder.foodnexus.module.product.service.spu.ProductSpuService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
......@@ -32,7 +33,7 @@ public class ErpStockServiceImpl implements ErpStockService {
private static final Boolean NEGATIVE_STOCK_COUNT_ENABLE = false;
@Resource
private ErpProductService productService;
private ProductSpuService productService;
@Resource
private ErpWarehouseService warehouseService;
......@@ -70,7 +71,7 @@ public class ErpStockServiceImpl implements ErpStockService {
}
// 1.2 校验库存是否充足
if (!NEGATIVE_STOCK_COUNT_ENABLE && stock.getCount().add(count).compareTo(BigDecimal.ZERO) < 0) {
throw exception(STOCK_COUNT_NEGATIVE, productService.getProduct(productId).getName(),
throw exception(STOCK_COUNT_NEGATIVE, productService.getSpu(productId).getName(),
warehouseService.getWarehouse(warehouseId).getName(), stock.getCount(), count);
}
......@@ -78,7 +79,7 @@ public class ErpStockServiceImpl implements ErpStockService {
int updateCount = stockMapper.updateCountIncrement(stock.getId(), count, NEGATIVE_STOCK_COUNT_ENABLE);
if (updateCount == 0) {
// 此时不好去查询最新库存,所以直接抛出该提示,不提供具体库存数字
throw exception(STOCK_COUNT_NEGATIVE2, productService.getProduct(productId).getName(),
throw exception(STOCK_COUNT_NEGATIVE2, productService.getSpu(productId).getName(),
warehouseService.getWarehouse(warehouseId).getName());
}
......
package cn.iocoder.foodnexus.module.operations.service.inquireprice;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.foodnexus.framework.common.enums.CommonStatusEnum;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.product.ProductSupplierDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpSupplierDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpCustomerDO;
import cn.iocoder.foodnexus.module.erp.service.product.ProductSupplierService;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.foodnexus.module.erp.service.sale.ErpCustomerService;
import cn.iocoder.foodnexus.module.operations.controller.admin.inquirecustomerpush.vo.InquireCustomerPushSaveReqVO;
import cn.iocoder.foodnexus.module.operations.controller.admin.inquiresupplierpush.vo.InquireSupplierPushSaveReqVO;
......@@ -35,6 +39,8 @@ import cn.iocoder.foodnexus.module.operations.dal.mysql.inquireprice.InquirePric
import static cn.iocoder.foodnexus.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.foodnexus.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.foodnexus.framework.common.util.collection.CollectionUtils.diffList;
import static cn.iocoder.foodnexus.module.erp.enums.ErrorCodeConstants.SUPPLIER_NOT_ENABLE;
import static cn.iocoder.foodnexus.module.erp.enums.ErrorCodeConstants.SUPPLIER_NOT_EXISTS;
import static cn.iocoder.foodnexus.module.operations.enums.ErrorCodeConstants.*;
/**
......@@ -60,7 +66,7 @@ public class InquirePriceServiceImpl implements InquirePriceService {
private ProductSupplierService productSupplierService;
@Autowired
private ProductSpuService productSpuService;
private ErpSupplierService supplierService;
@Autowired
private InquireCustomerPushService customerPushService;
......@@ -173,15 +179,18 @@ public class InquirePriceServiceImpl implements InquirePriceService {
List<InquireSupplierPushSaveReqVO> totalSupplierPush = new ArrayList<>();
supplierGroupMap.forEach((supplierId, items) -> {
for (ProductSupplierDO productSupplier : items) {
InquirePriceItemDO inquirePriceItemDO = productToItemMap.get(productSupplier.getProductId());
InquireSupplierPushSaveReqVO supplierPush = new InquireSupplierPushSaveReqVO();
supplierPush.setSupplierId(supplierId);
supplierPush.setInquirePriceId(pushReqVO.getId());
supplierPush.setInquirePriceItemId(inquirePriceItemDO.getId());
supplierPush.setProductId(productSupplier.getProductId());
supplierPush.setCategoryId(inquirePriceItemDO.getCategoryId());
supplierPush.setConfirm(Boolean.FALSE);
totalSupplierPush.add(supplierPush);
ErpSupplierDO supplier = supplierService.getSupplier(supplierId);
if (CommonUtil.isNotEmpty(supplier) && String.valueOf(ErpAuditStatus.APPROVE.getStatus()).equals(supplier.getAuditStatus()) && CommonStatusEnum.isEnable(supplier.getStatus())) {
InquirePriceItemDO inquirePriceItemDO = productToItemMap.get(productSupplier.getProductId());
InquireSupplierPushSaveReqVO supplierPush = new InquireSupplierPushSaveReqVO();
supplierPush.setSupplierId(supplierId);
supplierPush.setInquirePriceId(pushReqVO.getId());
supplierPush.setInquirePriceItemId(inquirePriceItemDO.getId());
supplierPush.setProductId(productSupplier.getProductId());
supplierPush.setCategoryId(inquirePriceItemDO.getCategoryId());
supplierPush.setConfirm(Boolean.FALSE);
totalSupplierPush.add(supplierPush);
}
}
});
supplierPushService.addBatch(totalSupplierPush);
......
......@@ -27,4 +27,6 @@ public interface CustomerOrderApi {
List<CustomerOrderItemDTO> queryItemsByIds(Collection<Long> orderItems);
void updateItems(List<CustomerOrderItemDTO> updateItems);
Map<Long, String> getCodeMap(Collection<Long> longs);
}
......@@ -72,6 +72,10 @@ public class CustomerOrderPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "配送时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] deliveryTime;
@Schema(hidden = true)
private Long creator;
......@@ -84,4 +88,11 @@ public class CustomerOrderPageReqVO extends PageParam {
@Schema(description = "是否已评价")
private Boolean hasScore;
@Schema(description = "联系人")
private String contactUser;
@Schema(description = "联系号码")
private String contactPhone;
}
\ No newline at end of file
......@@ -60,6 +60,14 @@ public class CustomerAddressController {
return success(true);
}
@PostMapping("/default")
@Operation(summary = "设置默认地址")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> updateAddressDefault(@RequestParam("id") Long id) {
customerAddressService.updateAddressDefault(id, SecurityFrameworkUtils.getLoginUserId());
return success(Boolean.TRUE);
}
@DeleteMapping("/delete")
@Operation(summary = "删除客户 - 我的地址")
@Parameter(name = "id", description = "编号", required = true)
......
......@@ -86,12 +86,9 @@ public class DeliverySaleOrderController {
@GetMapping("/my-page")
@Operation(summary = "个人中心 - 订单")
public CommonResult<PageResult<DeliverySaleOrderRespVO>> queryMyPage(@Valid DeliveryOrderPageReqVO reqVO) {
if (reqVO.getType() == 1) {
reqVO.setDeliveryStaffId(deliveryStaffApi.queryStaffIdByUserId(getLoginUserId()));
ErpSaleOrderPageReqVO pageReqVO = BeanUtils.toBean(reqVO, ErpSaleOrderPageReqVO.class);
return success(BeanUtils.toBean(saleOrderService.getSaleOrderPage(pageReqVO), DeliverySaleOrderRespVO.class));
}
return success(new PageResult<>());
reqVO.setDeliveryStaffId(deliveryStaffApi.queryStaffIdByUserId(getLoginUserId()));
ErpSaleOrderPageReqVO pageReqVO = BeanUtils.toBean(reqVO, ErpSaleOrderPageReqVO.class);
return success(BeanUtils.toBean(saleOrderService.getSaleOrderPage(pageReqVO), DeliverySaleOrderRespVO.class));
}
@GetMapping("/page")
......
......@@ -6,8 +6,10 @@ import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.foodnexus.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.foodnexus.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.foodnexus.framework.mybatis.core.query.QueryWrapperX;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerMonthOrderRespVO;
import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerMonthOrderTotalRespVO;
import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerYearOrderPageReqVO;
......@@ -27,7 +29,7 @@ import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.*;
public interface CustomerOrderMapper extends BaseMapperX<CustomerOrderDO> {
default PageResult<CustomerOrderDO> selectPage(CustomerOrderPageReqVO reqVO) {
LambdaQueryWrapperX<CustomerOrderDO> queryWrapperX = new LambdaQueryWrapperX<CustomerOrderDO>()
MPJLambdaWrapperX<CustomerOrderDO> queryWrapperX = new MPJLambdaWrapperX<CustomerOrderDO>()
.inIfPresent(CustomerOrderDO::getId, reqVO.getIds())
.eqIfPresent(CustomerOrderDO::getCode, reqVO.getCode())
.eqIfPresent(CustomerOrderDO::getOrderStatus, reqVO.getOrderStatus())
......@@ -47,6 +49,8 @@ public interface CustomerOrderMapper extends BaseMapperX<CustomerOrderDO> {
.betweenIfPresent(CustomerOrderDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(CustomerOrderDO::getCreator, reqVO.getCreator())
.eqIfPresent(CustomerOrderDO::getHasScore, reqVO.getHasScore())
.likeIfPresent(CustomerOrderDO::getAddressInfo, reqVO.getContactPhone())
.likeIfPresent(CustomerOrderDO::getAddressInfo, reqVO.getContactUser())
.orderByDesc(CustomerOrderDO::getId);
if (CommonUtil.isNotBlank(reqVO.getCreateYearMonth())) {
String createMonth = reqVO.getCreateYearMonth().trim();
......@@ -66,6 +70,10 @@ public interface CustomerOrderMapper extends BaseMapperX<CustomerOrderDO> {
queryWrapperX.in(CustomerOrderDO::getOrderStatus, CommonUtil.asList(CustomerOrderStatus.SIGN_RECEIPT.getKey(),
CustomerOrderStatus.FINISH.getKey()));
}
if (CommonUtil.isNotEmpty(reqVO.getDeliveryTime())) {
queryWrapperX.leftJoin(ErpSaleOrderDO.class, ErpSaleOrderDO::getCustomerOrderId, CustomerOrderDO::getId);
queryWrapperX.betweenIfPresent(ErpSaleOrderDO::getDeliveryTime, reqVO.getDeliveryTime());
}
return selectPage(reqVO, queryWrapperX);
}
......
......@@ -30,6 +30,8 @@ public interface CustomerAddressService {
*/
void updateCustomerAddress(@Valid CustomerAddressSaveReqVO updateReqVO);
void updateAddressDefault(Long id, Long loginUserId);
/**
* 删除客户 - 我的地址
*
......
......@@ -64,6 +64,22 @@ public class CustomerAddressServiceImpl implements CustomerAddressService {
}
@Override
public void updateAddressDefault(Long id, Long loginUserId) {
CustomerAddressDO customerAddressDO = validateCustomerAddressExists(id);
if (!customerAddressDO.getIsDefault()) {
customerAddressMapper.update(Wrappers.<CustomerAddressDO>lambdaUpdate()
.set(CustomerAddressDO::getIsDefault, Boolean.FALSE)
.eq(CustomerAddressDO::getIsDefault, Boolean.TRUE)
.eq(CustomerAddressDO::getCreator, loginUserId));
}
// 更新
CustomerAddressDO updateObj = new CustomerAddressDO();
updateObj.setId(id);
updateObj.setIsDefault(Boolean.TRUE);
customerAddressMapper.updateById(updateObj);
}
@Override
public void deleteCustomerAddress(Long id) {
// 校验存在
validateCustomerAddressExists(id);
......
......@@ -837,4 +837,12 @@ public class CustomerOrderServiceImpl implements CustomerOrderService, CustomerO
}
}
@Override
public Map<Long, String> getCodeMap(Collection<Long> ids) {
if (CommonUtil.isEmpty(ids)) {
return new HashMap<>();
}
return CommonUtil.listConvertMap(customerOrderMapper.selectByIds(ids), CustomerOrderDO::getId, CustomerOrderDO::getCode);
}
}
\ No newline at end of file
......@@ -27,4 +27,7 @@ public class AuthLoginRespVO {
@Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime expiresTime;
@Schema(description = "0-客户 1-司务长(灶点) (只针对客户)")
private Integer customerType;
}
......@@ -56,6 +56,9 @@ public class AuthPermissionInfoRespVO {
@Schema(description = "用户体系", example = "OPER")
private String userSystem;
@Schema(description = "客户类型")
private Integer customerType;
}
@Schema(description = "管理后台 - 登录用户的菜单信息 Response VO")
......
......@@ -77,4 +77,7 @@ public class UserRespVO{
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
private LocalDateTime createTime;
@Schema(description = "0-客户 1-司务长(灶点) (只针对客户)")
private Integer customerType;
}
......@@ -66,7 +66,9 @@ public class AppAuthController {
@PermitAll
@Operation(summary = "使用账号密码登录")
public CommonResult<AuthLoginRespVO> login(@RequestBody @Valid AuthLoginReqVO reqVO) {
return success(authService.appLogin(reqVO));
AuthLoginRespVO loginResult = authService.appLogin(reqVO);
loginResult.setCustomerType(userService.queryCustomerType(loginResult.getUserId()));
return success(loginResult);
}
@PostMapping("/logout")
......@@ -86,7 +88,9 @@ public class AppAuthController {
@Operation(summary = "刷新令牌")
@Parameter(name = "refreshToken", description = "刷新令牌", required = true)
public CommonResult<AuthLoginRespVO> refreshToken(@RequestParam("refreshToken") String refreshToken) {
return success(authService.refreshToken(refreshToken));
AuthLoginRespVO loginResult = authService.refreshToken(refreshToken);
loginResult.setCustomerType(userService.queryCustomerType(loginResult.getUserId()));
return success(loginResult);
}
@GetMapping("/get-permission-info")
......
package cn.iocoder.foodnexus.module.system.dal.dataobject.user;
import cn.iocoder.foodnexus.framework.common.enums.CommonStatusEnum;
import cn.iocoder.foodnexus.framework.common.enums.CustomerTypeEnum;
import cn.iocoder.foodnexus.framework.tenant.core.db.TenantBaseDO;
import cn.iocoder.foodnexus.framework.common.enums.UserSystemEnum;
import cn.iocoder.foodnexus.module.system.enums.common.SexEnum;
......@@ -99,4 +100,9 @@ public class AdminUserDO extends TenantBaseDO {
* 枚举类 {@link UserSystemEnum}
*/
private String userSystem;
/**
* 客户类型
* {@link CustomerTypeEnum}
*/
private Integer customerType;
}
......@@ -54,7 +54,7 @@ public interface ErrorCodeConstants {
// ========== 部门模块 1-002-004-000 ==========
ErrorCode DEPT_NAME_DUPLICATE = new ErrorCode(1_002_004_000, "已经存在该名字的部门");
ErrorCode DEPT_PARENT_NOT_EXITS = new ErrorCode(1_002_004_001,"父级部门不存在");
ErrorCode DEPT_NOT_FOUND = new ErrorCode(1_002_004_002, "当前部门不存在");
ErrorCode DEPT_NOT_FOUND = new ErrorCode(1_002_004_002, "部门不存在");
ErrorCode DEPT_EXITS_CHILDREN = new ErrorCode(1_002_004_003, "存在子部门,无法删除");
ErrorCode DEPT_PARENT_ERROR = new ErrorCode(1_002_004_004, "不能设置自己为父部门");
ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1_002_004_006, "部门({})不处于开启状态,不允许选择");
......
......@@ -123,4 +123,6 @@ public interface DeptService {
void validateDeptList(Collection<Long> ids);
DeptDO getTopDept(Long deptId);
boolean isTop(Long deptId);
}
......@@ -278,10 +278,23 @@ public class DeptServiceImpl implements DeptService {
@DataPermission(enable = false)
public DeptDO getTopDept(Long deptId) {
DeptDO deptDO = deptMapper.selectOne(DeptDO::getId, deptId);
if (CommonUtil.isEmpty(deptDO)) {
throw exception(DEPT_NOT_FOUND);
}
if (!DeptDO.PARENT_ID_ROOT.equals(deptDO.getParentId())) {
return this.getTopDept(deptDO.getParentId());
}
return deptDO;
}
@Override
@DataPermission(enable = false)
public boolean isTop(Long deptId) {
DeptDO deptDO = deptMapper.selectOne(DeptDO::getId, deptId);
if (CommonUtil.isEmpty(deptDO)) {
return false;
}
return DeptDO.PARENT_ID_ROOT.equals(deptDO.getParentId());
}
}
......@@ -214,4 +214,6 @@ public interface AdminUserService {
*/
boolean isPasswordMatch(String rawPassword, String encodedPassword);
Integer queryCustomerType(Long userId);
}
......@@ -5,12 +5,15 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.foodnexus.framework.common.enums.CommonStatusEnum;
import cn.iocoder.foodnexus.framework.common.enums.CustomerTypeEnum;
import cn.iocoder.foodnexus.framework.common.enums.UserSystemEnum;
import cn.iocoder.foodnexus.framework.common.exception.ServiceException;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.collection.CollectionUtils;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.common.util.validation.ValidationUtils;
import cn.iocoder.foodnexus.framework.datapermission.core.util.DataPermissionUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpCustomerApi;
import cn.iocoder.foodnexus.module.infra.api.config.ConfigApi;
import cn.iocoder.foodnexus.module.system.controller.admin.auth.vo.AuthRegisterReqVO;
import cn.iocoder.foodnexus.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
......@@ -35,6 +38,7 @@ import com.mzt.logapi.starter.annotation.LogRecord;
import jakarta.annotation.Resource;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
......@@ -101,6 +105,9 @@ public class AdminUserServiceImpl implements AdminUserService {
AdminUserDO user = BeanUtils.toBean(createReqVO, AdminUserDO.class);
user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码
if (UserSystemEnum.CUSTOMER.getKey().equals(user.getUserSystem())) {
user.setCustomerType(deptService.isTop(user.getDeptId()) ? CustomerTypeEnum.CUSTOMER.getKey() : CustomerTypeEnum.CHIEF.getKey());
}
userMapper.insert(user);
// 2.2 插入关联岗位
if (CollectionUtil.isNotEmpty(user.getPostIds())) {
......@@ -133,6 +140,9 @@ public class AdminUserServiceImpl implements AdminUserService {
AdminUserDO user = BeanUtils.toBean(registerReqVO, AdminUserDO.class);
user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
user.setPassword(encodePassword(registerReqVO.getPassword())); // 加密密码
if (UserSystemEnum.CUSTOMER.getKey().equals(user.getUserSystem())) {
user.setCustomerType(deptService.isTop(user.getDeptId()) ? CustomerTypeEnum.CUSTOMER.getKey() : CustomerTypeEnum.CHIEF.getKey());
}
userMapper.insert(user);
return user.getId();
}
......@@ -149,6 +159,9 @@ public class AdminUserServiceImpl implements AdminUserService {
// 2.1 更新用户
AdminUserDO updateObj = BeanUtils.toBean(updateReqVO, AdminUserDO.class);
if (UserSystemEnum.CUSTOMER.getKey().equals(updateObj.getUserSystem())) {
updateObj.setCustomerType(deptService.isTop(updateObj.getDeptId()) ? CustomerTypeEnum.CUSTOMER.getKey() : CustomerTypeEnum.CHIEF.getKey());
}
userMapper.updateById(updateObj);
// 2.2 更新岗位
updateUserPost(updateReqVO, updateObj);
......@@ -493,7 +506,8 @@ public class AdminUserServiceImpl implements AdminUserService {
AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
if (existUser == null) {
userMapper.insert(BeanUtils.toBean(importUser, AdminUserDO.class)
.setPassword(encodePassword(initPassword)).setPostIds(new HashSet<>())); // 设置默认密码及空岗位编号数组
.setPassword(encodePassword(initPassword)).setPostIds(new HashSet<>())
.setCustomerType(deptService.isTop(importUser.getDeptId()) ? CustomerTypeEnum.CUSTOMER.getKey() : CustomerTypeEnum.CHIEF.getKey())); // 设置默认密码及空岗位编号数组
respVO.getCreateUsernames().add(importUser.getUsername());
return;
}
......@@ -520,6 +534,12 @@ public class AdminUserServiceImpl implements AdminUserService {
return passwordEncoder.matches(rawPassword, encodedPassword);
}
@Override
public Integer queryCustomerType(Long userId) {
AdminUserDO user = getUser(userId);
return user.getCustomerType();
}
/**
* 对密码进行加密
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment