Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
foodNexus-admin
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
副食品筹措管理平台
foodNexus-admin
Commits
e7d23e39
Commit
e7d23e39
authored
Oct 29, 2025
by
杨浩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
后台展示修改
parent
c1eb784e
Hide whitespace changes
Inline
Side-by-side
Showing
50 changed files
with
540 additions
and
82 deletions
+540
-82
foodnexus-framework/foodnexus-common/src/main/java/cn/iocoder/foodnexus/framework/common/enums/CustomerTypeEnum.java
+36
-0
foodnexus-module-erp-api/src/main/java/cn/iocoder/foodnexus/module/erp/api/service/ErpCustomerApi.java
+2
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java
+33
-18
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/ErpSupplierController.java
+8
-4
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java
+49
-7
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java
+7
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierEnableReqVO.java
+20
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/ErpSaleOrderController.java
+0
-6
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/ErpSaleReturnController.java
+36
-5
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/DeliveryOrderPageReqVO.java
+5
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java
+12
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java
+7
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java
+16
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/stock/ErpStockController.java
+29
-6
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java
+7
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java
+7
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java
+7
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java
+5
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java
+11
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java
+8
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/enums/SaleOrderPickUpStatus.java
+6
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/product/ErpProductServiceImpl.java
+1
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/product/ProductSupplierService.java
+5
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/product/ProductSupplierServiceImpl.java
+21
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseReturnService.java
+5
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java
+12
-6
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpSupplierService.java
+2
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpSupplierServiceImpl.java
+8
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpCustomerServiceImpl.java
+23
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleReturnServiceImpl.java
+8
-2
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/stock/ErpStockServiceImpl.java
+4
-3
foodnexus-module-mall/foodnexus-module-operations/src/main/java/cn/iocoder/foodnexus/module/operations/service/inquireprice/InquirePriceServiceImpl.java
+19
-10
foodnexus-module-mall/foodnexus-module-order-api/src/main/java/cn/iocoder/foodnexus/module/order/api/CustomerOrderApi.java
+2
-0
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/admin/customerorder/vo/CustomerOrderPageReqVO.java
+12
-0
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/app/customeraddress/CustomerAddressController.java
+8
-0
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/app/delivery/DeliverySaleOrderController.java
+3
-6
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/dal/mysql/customerorder/CustomerOrderMapper.java
+9
-1
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/service/customeraddress/CustomerAddressService.java
+2
-0
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/service/customeraddress/CustomerAddressServiceImpl.java
+16
-0
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/service/customerorder/CustomerOrderServiceImpl.java
+9
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/auth/vo/AuthLoginRespVO.java
+3
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java
+3
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/user/vo/user/UserRespVO.java
+3
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/app/auth/AppAuthController.java
+6
-2
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/dal/dataobject/user/AdminUserDO.java
+6
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/enums/ErrorCodeConstants.java
+1
-1
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/dept/DeptService.java
+2
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/dept/DeptServiceImpl.java
+13
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/user/AdminUserService.java
+2
-0
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/user/AdminUserServiceImpl.java
+21
-1
No files found.
foodnexus-framework/foodnexus-common/src/main/java/cn/iocoder/foodnexus/framework/common/enums/CustomerTypeEnum.java
0 → 100644
View file @
e7d23e39
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
;
}
}
foodnexus-module-erp-api/src/main/java/cn/iocoder/foodnexus/module/erp/api/service/ErpCustomerApi.java
View file @
e7d23e39
...
...
@@ -26,4 +26,6 @@ public interface ErpCustomerApi {
Map
<
Long
,
String
>
queryNameMapByIds
(
Collection
<
Long
>
collection
);
String
queryNameStrById
(
Long
customerId
);
Integer
queryCustomerTypeByUserId
(
Long
userId
);
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java
View file @
e7d23e39
...
...
@@ -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
);
});
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/ErpSupplierController.java
View file @
e7d23e39
...
...
@@ -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
)
{
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java
View file @
e7d23e39
...
...
@@ -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
;
// 该字段仅仅在“详情”和“编辑”时使用
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierEnableReqVO.java
0 → 100644
View file @
e7d23e39
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
;
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/ErpSaleOrderController.java
View file @
e7d23e39
...
...
@@ -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
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/ErpSaleReturnController.java
View file @
e7d23e39
...
...
@@ -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
);
});
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/DeliveryOrderPageReqVO.java
View file @
e7d23e39
...
...
@@ -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
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java
View file @
e7d23e39
...
...
@@ -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
;
}
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/stock/ErpStockController.java
View file @
e7d23e39
...
...
@@ -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
=
product
Service
.
getProductVOMap
(
Map
<
Long
,
ProductSpuDO
>
productMap
=
productSpu
Service
.
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
);
});
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java
View file @
e7d23e39
...
...
@@ -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
=
"李四"
)
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java
View file @
e7d23e39
...
...
@@ -103,6 +103,11 @@ public class ErpSaleReturnItemDO extends BaseDO {
private
Long
supplierId
;
/**
* 采购退货单
*/
private
Long
purchaseReturnOrderId
;
/**
* 商品信息
*/
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java
View file @
e7d23e39
...
...
@@ -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
);
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java
View file @
e7d23e39
...
...
@@ -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
);
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/enums/SaleOrderPickUpStatus.java
View file @
e7d23e39
...
...
@@ -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
());
}
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/product/ErpProductServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
.
getAudit
Reason
())
.
set
(
ErpProductDO:
:
getAuditStatus
,
auditReqVO
.
getAudit
Status
())
.
eq
(
ErpProductDO:
:
getId
,
id
));
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/product/ProductSupplierService.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/product/ProductSupplierServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseReturnService.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
);
}
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpSupplierService.java
View file @
e7d23e39
...
...
@@ -100,4 +100,5 @@ public interface ErpSupplierService {
List
<
ProductSpuDO
>
queryBindProduct
(
Long
id
);
void
enable
(
Long
id
,
Integer
status
);
}
\ No newline at end of file
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpSupplierServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
.
getAudit
Reason
())
.
set
(
ErpSupplierDO:
:
getAuditStatus
,
auditReqVO
.
getAudit
Status
())
.
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 --------------- */
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpCustomerServiceImpl.java
View file @
e7d23e39
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
();
}
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleReturnServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
));
});
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/stock/ErpStockServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
ErpProduct
Service
productService
;
private
ProductSpu
Service
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
.
get
Product
(
productId
).
getName
(),
throw
exception
(
STOCK_COUNT_NEGATIVE
,
productService
.
get
Spu
(
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
.
get
Product
(
productId
).
getName
(),
throw
exception
(
STOCK_COUNT_NEGATIVE2
,
productService
.
get
Spu
(
productId
).
getName
(),
warehouseService
.
getWarehouse
(
warehouseId
).
getName
());
}
...
...
foodnexus-module-mall/foodnexus-module-operations/src/main/java/cn/iocoder/foodnexus/module/operations/service/inquireprice/InquirePriceServiceImpl.java
View file @
e7d23e39
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
productSpu
Service
;
private
ErpSupplierService
supplier
Service
;
@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
);
...
...
foodnexus-module-mall/foodnexus-module-order-api/src/main/java/cn/iocoder/foodnexus/module/order/api/CustomerOrderApi.java
View file @
e7d23e39
...
...
@@ -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
);
}
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/admin/customerorder/vo/CustomerOrderPageReqVO.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/app/customeraddress/CustomerAddressController.java
View file @
e7d23e39
...
...
@@ -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
)
...
...
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/app/delivery/DeliverySaleOrderController.java
View file @
e7d23e39
...
...
@@ -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"
)
...
...
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/dal/mysql/customerorder/CustomerOrderMapper.java
View file @
e7d23e39
...
...
@@ -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
LambdaQuery
WrapperX
<
CustomerOrderDO
>()
MPJLambdaWrapperX
<
CustomerOrderDO
>
queryWrapperX
=
new
MPJLambda
WrapperX
<
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
);
}
...
...
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/service/customeraddress/CustomerAddressService.java
View file @
e7d23e39
...
...
@@ -30,6 +30,8 @@ public interface CustomerAddressService {
*/
void
updateCustomerAddress
(
@Valid
CustomerAddressSaveReqVO
updateReqVO
);
void
updateAddressDefault
(
Long
id
,
Long
loginUserId
);
/**
* 删除客户 - 我的地址
*
...
...
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/service/customeraddress/CustomerAddressServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
);
...
...
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/service/customerorder/CustomerOrderServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/auth/vo/AuthLoginRespVO.java
View file @
e7d23e39
...
...
@@ -27,4 +27,7 @@ public class AuthLoginRespVO {
@Schema
(
description
=
"过期时间"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
LocalDateTime
expiresTime
;
@Schema
(
description
=
"0-客户 1-司务长(灶点) (只针对客户)"
)
private
Integer
customerType
;
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java
View file @
e7d23e39
...
...
@@ -56,6 +56,9 @@ public class AuthPermissionInfoRespVO {
@Schema
(
description
=
"用户体系"
,
example
=
"OPER"
)
private
String
userSystem
;
@Schema
(
description
=
"客户类型"
)
private
Integer
customerType
;
}
@Schema
(
description
=
"管理后台 - 登录用户的菜单信息 Response VO"
)
...
...
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/user/vo/user/UserRespVO.java
View file @
e7d23e39
...
...
@@ -77,4 +77,7 @@ public class UserRespVO{
@Schema
(
description
=
"创建时间"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"时间戳格式"
)
private
LocalDateTime
createTime
;
@Schema
(
description
=
"0-客户 1-司务长(灶点) (只针对客户)"
)
private
Integer
customerType
;
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/app/auth/AppAuthController.java
View file @
e7d23e39
...
...
@@ -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"
)
...
...
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/dal/dataobject/user/AdminUserDO.java
View file @
e7d23e39
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
;
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/enums/ErrorCodeConstants.java
View file @
e7d23e39
...
...
@@ -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
,
"部门({})不处于开启状态,不允许选择"
);
...
...
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/dept/DeptService.java
View file @
e7d23e39
...
...
@@ -123,4 +123,6 @@ public interface DeptService {
void
validateDeptList
(
Collection
<
Long
>
ids
);
DeptDO
getTopDept
(
Long
deptId
);
boolean
isTop
(
Long
deptId
);
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/dept/DeptServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
());
}
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/user/AdminUserService.java
View file @
e7d23e39
...
...
@@ -214,4 +214,6 @@ public interface AdminUserService {
*/
boolean
isPasswordMatch
(
String
rawPassword
,
String
encodedPassword
);
Integer
queryCustomerType
(
Long
userId
);
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/service/user/AdminUserServiceImpl.java
View file @
e7d23e39
...
...
@@ -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
();
}
/**
* 对密码进行加密
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment