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
8dc06376
Commit
8dc06376
authored
Sep 28, 2025
by
杨浩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug修复;
采购入库新增调整
parent
745aedec
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
257 additions
and
47 deletions
+257
-47
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/ErpSupplierController.java
+3
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java
+2
-2
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java
+2
-2
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierRespVO.java
+6
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java
+8
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderRespVO.java
+5
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderSaveReqVO.java
+2
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java
+1
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java
+1
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java
+1
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java
+2
-2
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java
+7
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java
+2
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java
+1
-1
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java
+2
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/enums/ErrorCodeConstants.java
+1
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/enums/SaleOrderPickUpStatus.java
+1
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseInServiceImpl.java
+4
-4
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java
+34
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleOrderService.java
+12
-0
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleOrderServiceImpl.java
+49
-19
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleOutServiceImpl.java
+5
-5
foodnexus-module-mall/foodnexus-module-operations/src/main/java/cn/iocoder/foodnexus/module/operations/service/deliverystaff/DeliveryStaffServiceImpl.java
+7
-0
foodnexus-module-mall/foodnexus-module-order-api/src/main/java/cn/iocoder/foodnexus/module/order/api/DeliveryStaffApi.java
+1
-0
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/app/delivery/DeliveryOrderController.java
+96
-3
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/dept/DeptController.java
+2
-2
No files found.
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/ErpSupplierController.java
View file @
8dc06376
...
@@ -83,7 +83,9 @@ public class ErpSupplierController {
...
@@ -83,7 +83,9 @@ public class ErpSupplierController {
@Operation
(
summary
=
"获得供应商精简列表"
,
description
=
"只包含被开启的供应商,主要用于前端的下拉选项"
)
@Operation
(
summary
=
"获得供应商精简列表"
,
description
=
"只包含被开启的供应商,主要用于前端的下拉选项"
)
public
CommonResult
<
List
<
ErpSupplierRespVO
>>
getSupplierSimpleList
()
{
public
CommonResult
<
List
<
ErpSupplierRespVO
>>
getSupplierSimpleList
()
{
List
<
ErpSupplierDO
>
list
=
supplierService
.
getSupplierListByStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
List
<
ErpSupplierDO
>
list
=
supplierService
.
getSupplierListByStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
return
success
(
convertList
(
list
,
supplier
->
new
ErpSupplierRespVO
().
setId
(
supplier
.
getId
())));
return
success
(
convertList
(
list
,
supplier
->
new
ErpSupplierRespVO
().
setId
(
supplier
.
getId
())
.
setSystemDeptId
(
supplier
.
getSystemDeptId
())
.
setName
(
supplier
.
getName
())));
}
}
@GetMapping
(
"/export-excel"
)
@GetMapping
(
"/export-excel"
)
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java
View file @
8dc06376
...
@@ -119,11 +119,11 @@ public class ErpPurchaseInRespVO {
...
@@ -119,11 +119,11 @@ public class ErpPurchaseInRespVO {
private
String
productUnit
;
private
String
productUnit
;
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
private
BigDecimal
productPrice
;
private
Integer
productPrice
;
@Schema
(
description
=
"产品数量"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"100.00"
)
@Schema
(
description
=
"产品数量"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"100.00"
)
@NotNull
(
message
=
"产品数量不能为空"
)
@NotNull
(
message
=
"产品数量不能为空"
)
private
BigDecimal
count
;
private
Integer
count
;
@Schema
(
description
=
"税率,百分比"
,
example
=
"99.88"
)
@Schema
(
description
=
"税率,百分比"
,
example
=
"99.88"
)
private
BigDecimal
taxPercent
;
private
BigDecimal
taxPercent
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java
View file @
8dc06376
...
@@ -70,11 +70,11 @@ public class ErpPurchaseInSaveReqVO {
...
@@ -70,11 +70,11 @@ public class ErpPurchaseInSaveReqVO {
private
String
productUnit
;
private
String
productUnit
;
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
private
BigDecimal
productPrice
;
private
Integer
productPrice
;
@Schema
(
description
=
"产品数量"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"100.00"
)
@Schema
(
description
=
"产品数量"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"100.00"
)
@NotNull
(
message
=
"产品数量不能为空"
)
@NotNull
(
message
=
"产品数量不能为空"
)
private
BigDecimal
count
;
private
Integer
count
;
@Schema
(
description
=
"税率,百分比"
,
example
=
"99.88"
)
@Schema
(
description
=
"税率,百分比"
,
example
=
"99.88"
)
private
BigDecimal
taxPercent
;
private
BigDecimal
taxPercent
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierRespVO.java
View file @
8dc06376
...
@@ -130,4 +130,10 @@ public class ErpSupplierRespVO {
...
@@ -130,4 +130,10 @@ public class ErpSupplierRespVO {
@Schema
(
description
=
"审核意见"
)
@Schema
(
description
=
"审核意见"
)
private
String
auditReason
;
private
String
auditReason
;
/**
* 关联部门id
*/
private
String
systemDeptId
;
}
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java
View file @
8dc06376
package
cn
.
iocoder
.
foodnexus
.
module
.
erp
.
controller
.
admin
.
sale
.
vo
.
order
;
package
cn
.
iocoder
.
foodnexus
.
module
.
erp
.
controller
.
admin
.
sale
.
vo
.
order
;
import
cn.iocoder.foodnexus.framework.common.pojo.PageParam
;
import
cn.iocoder.foodnexus.framework.common.pojo.PageParam
;
import
cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
...
@@ -77,4 +78,10 @@ public class ErpSaleOrderPageReqVO extends PageParam {
...
@@ -77,4 +78,10 @@ public class ErpSaleOrderPageReqVO extends PageParam {
@Schema
(
description
=
"是否可退货"
,
example
=
"true"
)
@Schema
(
description
=
"是否可退货"
,
example
=
"true"
)
private
Boolean
returnEnable
;
private
Boolean
returnEnable
;
@Schema
(
description
=
"配送人员"
)
private
Long
deliveryStaffId
;
@Schema
(
description
=
"拣货状态"
)
private
SaleOrderPickUpStatus
pickUpStatus
;
}
}
\ No newline at end of file
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderRespVO.java
View file @
8dc06376
...
@@ -2,6 +2,7 @@ package cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order;
...
@@ -2,6 +2,7 @@ package cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus
;
import
cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo
;
import
cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo
;
import
cn.iocoder.foodnexus.module.order.enums.DeliveryMode
;
import
cn.iocoder.foodnexus.module.order.enums.DeliveryMode
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
...
@@ -123,6 +124,9 @@ public class ErpSaleOrderRespVO {
...
@@ -123,6 +124,9 @@ public class ErpSaleOrderRespVO {
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
private
CustomerAddressInfo
addressInfo
;
private
CustomerAddressInfo
addressInfo
;
@Schema
(
description
=
"拣货状态"
)
private
SaleOrderPickUpStatus
pickUpStatus
;
@Data
@Data
public
static
class
Item
{
public
static
class
Item
{
...
@@ -178,7 +182,7 @@ public class ErpSaleOrderRespVO {
...
@@ -178,7 +182,7 @@ public class ErpSaleOrderRespVO {
@Schema
(
description
=
"供应商id"
)
@Schema
(
description
=
"供应商id"
)
private
Long
supplierId
;
private
Long
supplierId
;
@Schema
(
description
=
"拣货状态"
)
@Schema
(
description
=
"拣货状态"
)
private
S
tring
pickUpStatus
;
private
S
aleOrderPickUpStatus
pickUpStatus
;
}
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/order/ErpSaleOrderSaveReqVO.java
View file @
8dc06376
package
cn
.
iocoder
.
foodnexus
.
module
.
erp
.
controller
.
admin
.
sale
.
vo
.
order
;
package
cn
.
iocoder
.
foodnexus
.
module
.
erp
.
controller
.
admin
.
sale
.
vo
.
order
;
import
cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus
;
import
cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo
;
import
cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo
;
import
cn.iocoder.foodnexus.module.order.enums.DeliveryMode
;
import
cn.iocoder.foodnexus.module.order.enums.DeliveryMode
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
...
@@ -102,7 +103,7 @@ public class ErpSaleOrderSaveReqVO {
...
@@ -102,7 +103,7 @@ public class ErpSaleOrderSaveReqVO {
private
Long
supplierId
;
private
Long
supplierId
;
@Schema
(
description
=
"拣货状态"
)
@Schema
(
description
=
"拣货状态"
)
private
S
tring
pickUpStatus
;
private
S
aleOrderPickUpStatus
pickUpStatus
;
}
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java
View file @
8dc06376
...
@@ -113,7 +113,7 @@ public class ErpSaleOutRespVO {
...
@@ -113,7 +113,7 @@ public class ErpSaleOutRespVO {
private
Long
productId
;
private
Long
productId
;
@Schema
(
description
=
"产品单位单位"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"3113"
)
@Schema
(
description
=
"产品单位单位"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"3113"
)
private
Long
productUnitId
;
private
String
productUnit
;
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
private
BigDecimal
productPrice
;
private
BigDecimal
productPrice
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java
View file @
8dc06376
...
@@ -64,7 +64,7 @@ public class ErpSaleOutSaveReqVO {
...
@@ -64,7 +64,7 @@ public class ErpSaleOutSaveReqVO {
@Schema
(
description
=
"产品单位单位"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"3113"
)
@Schema
(
description
=
"产品单位单位"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"3113"
)
@NotNull
(
message
=
"产品单位单位不能为空"
)
@NotNull
(
message
=
"产品单位单位不能为空"
)
private
Long
productUnitId
;
private
String
productUnit
;
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
@Schema
(
description
=
"产品单价"
,
example
=
"100.00"
)
private
BigDecimal
productPrice
;
private
BigDecimal
productPrice
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java
View file @
8dc06376
...
@@ -74,7 +74,7 @@ public class ErpPurchaseInDO extends BaseDO {
...
@@ -74,7 +74,7 @@ public class ErpPurchaseInDO extends BaseDO {
/**
/**
* 合计数量
* 合计数量
*/
*/
private
BigDecimal
totalCount
;
private
Integer
totalCount
;
/**
/**
* 最终合计价格,单位:元
* 最终合计价格,单位:元
*
*
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java
View file @
8dc06376
...
@@ -65,11 +65,11 @@ public class ErpPurchaseInItemDO extends BaseDO {
...
@@ -65,11 +65,11 @@ public class ErpPurchaseInItemDO extends BaseDO {
/**
/**
* 产品单位单价,单位:元
* 产品单位单价,单位:元
*/
*/
private
BigDecimal
productPrice
;
private
Integer
productPrice
;
/**
/**
* 数量
* 数量
*/
*/
private
BigDecimal
count
;
private
Integer
count
;
/**
/**
* 总价,单位:元
* 总价,单位:元
*
*
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java
View file @
8dc06376
...
@@ -3,6 +3,7 @@ package cn.iocoder.foodnexus.module.erp.dal.dataobject.sale;
...
@@ -3,6 +3,7 @@ package cn.iocoder.foodnexus.module.erp.dal.dataobject.sale;
import
cn.iocoder.foodnexus.framework.mybatis.core.dataobject.BaseDO
;
import
cn.iocoder.foodnexus.framework.mybatis.core.dataobject.BaseDO
;
import
cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus
;
import
cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.finance.ErpAccountDO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.finance.ErpAccountDO
;
import
cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus
;
import
cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo
;
import
cn.iocoder.foodnexus.module.order.dto.CustomerAddressInfo
;
import
cn.iocoder.foodnexus.module.order.enums.DeliveryMode
;
import
cn.iocoder.foodnexus.module.order.enums.DeliveryMode
;
import
com.baomidou.mybatisplus.annotation.KeySequence
;
import
com.baomidou.mybatisplus.annotation.KeySequence
;
...
@@ -157,4 +158,9 @@ public class ErpSaleOrderDO extends BaseDO {
...
@@ -157,4 +158,9 @@ public class ErpSaleOrderDO extends BaseDO {
*/
*/
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
private
CustomerAddressInfo
addressInfo
;
private
CustomerAddressInfo
addressInfo
;
/**
* 拣货状态
*/
private
SaleOrderPickUpStatus
pickUpStatus
;
}
}
\ No newline at end of file
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java
View file @
8dc06376
...
@@ -106,6 +106,6 @@ public class ErpSaleOrderItemDO extends BaseDO {
...
@@ -106,6 +106,6 @@ public class ErpSaleOrderItemDO extends BaseDO {
*
*
* {@link SaleOrderPickUpStatus}
* {@link SaleOrderPickUpStatus}
*/
*/
private
S
tring
pickUpStatus
;
private
S
aleOrderPickUpStatus
pickUpStatus
;
}
}
\ No newline at end of file
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java
View file @
8dc06376
...
@@ -61,7 +61,7 @@ public class ErpSaleOutItemDO extends BaseDO {
...
@@ -61,7 +61,7 @@ public class ErpSaleOutItemDO extends BaseDO {
*
*
* 冗余 {@link ErpProductDO#getUnitId()}
* 冗余 {@link ErpProductDO#getUnitId()}
*/
*/
private
Long
productUnitId
;
private
String
productUnit
;
/**
/**
* 产品单位单价,单位:元
* 产品单位单价,单位:元
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java
View file @
8dc06376
...
@@ -29,6 +29,8 @@ public interface ErpSaleOrderMapper extends BaseMapperX<ErpSaleOrderDO> {
...
@@ -29,6 +29,8 @@ public interface ErpSaleOrderMapper extends BaseMapperX<ErpSaleOrderDO> {
.
eqIfPresent
(
ErpSaleOrderDO:
:
getStatus
,
reqVO
.
getStatus
())
.
eqIfPresent
(
ErpSaleOrderDO:
:
getStatus
,
reqVO
.
getStatus
())
.
likeIfPresent
(
ErpSaleOrderDO:
:
getRemark
,
reqVO
.
getRemark
())
.
likeIfPresent
(
ErpSaleOrderDO:
:
getRemark
,
reqVO
.
getRemark
())
.
eqIfPresent
(
ErpSaleOrderDO:
:
getCreator
,
reqVO
.
getCreator
())
.
eqIfPresent
(
ErpSaleOrderDO:
:
getCreator
,
reqVO
.
getCreator
())
.
eqIfPresent
(
ErpSaleOrderDO:
:
getDeliveryStaffId
,
reqVO
.
getDeliveryStaffId
())
.
eqIfPresent
(
ErpSaleOrderDO:
:
getPickUpStatus
,
reqVO
.
getPickUpStatus
())
.
orderByDesc
(
ErpSaleOrderDO:
:
getId
);
.
orderByDesc
(
ErpSaleOrderDO:
:
getId
);
// 入库状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报 out_count 错误
// 入库状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报 out_count 错误
if
(
Objects
.
equals
(
reqVO
.
getOutStatus
(),
ErpSaleOrderPageReqVO
.
OUT_STATUS_NONE
))
{
if
(
Objects
.
equals
(
reqVO
.
getOutStatus
(),
ErpSaleOrderPageReqVO
.
OUT_STATUS_NONE
))
{
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/enums/ErrorCodeConstants.java
View file @
8dc06376
...
@@ -69,6 +69,7 @@ ErrorCode PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED = new ErrorCode(1_030_101_00
...
@@ -69,6 +69,7 @@ ErrorCode PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED = new ErrorCode(1_030_101_00
ErrorCode
SALE_ORDER_PROCESS_FAIL_EXISTS_OUT
=
new
ErrorCode
(
1_020_201_008
,
"反审核失败,已存在对应的销售出库单"
);
ErrorCode
SALE_ORDER_PROCESS_FAIL_EXISTS_OUT
=
new
ErrorCode
(
1_020_201_008
,
"反审核失败,已存在对应的销售出库单"
);
ErrorCode
SALE_ORDER_ITEM_RETURN_FAIL_OUT_EXCEED
=
new
ErrorCode
(
1_020_201_009
,
"销售订单项({})超过最大允许退货数量({})"
);
ErrorCode
SALE_ORDER_ITEM_RETURN_FAIL_OUT_EXCEED
=
new
ErrorCode
(
1_020_201_009
,
"销售订单项({})超过最大允许退货数量({})"
);
ErrorCode
SALE_ORDER_PROCESS_FAIL_EXISTS_RETURN
=
new
ErrorCode
(
1_020_201_010
,
"反审核失败,已存在对应的销售退货单"
);
ErrorCode
SALE_ORDER_PROCESS_FAIL_EXISTS_RETURN
=
new
ErrorCode
(
1_020_201_010
,
"反审核失败,已存在对应的销售退货单"
);
ErrorCode
SALE_ORDER_PICKUP_STATUS_FAIL
=
new
ErrorCode
(
1_020_201_011
,
"销售订单状态异常"
);
// ========== ERP 销售出库(1-030-202-000) ==========
// ========== ERP 销售出库(1-030-202-000) ==========
ErrorCode
SALE_OUT_NOT_EXISTS
=
new
ErrorCode
(
1_020_202_000
,
"销售出库单不存在"
);
ErrorCode
SALE_OUT_NOT_EXISTS
=
new
ErrorCode
(
1_020_202_000
,
"销售出库单不存在"
);
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/enums/SaleOrderPickUpStatus.java
View file @
8dc06376
...
@@ -20,6 +20,7 @@ public enum SaleOrderPickUpStatus implements ArrayValuable<String> {
...
@@ -20,6 +20,7 @@ public enum SaleOrderPickUpStatus implements ArrayValuable<String> {
PICK_UP
(
"PICK_UP"
,
"已拣"
),
PICK_UP
(
"PICK_UP"
,
"已拣"
),
ALREADY
(
"ALREADY"
,
"已发货"
),
;
;
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseInServiceImpl.java
View file @
8dc06376
...
@@ -131,7 +131,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
...
@@ -131,7 +131,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
}
}
private
void
calculateTotalPrice
(
ErpPurchaseInDO
purchaseIn
,
List
<
ErpPurchaseInItemDO
>
purchaseInItems
)
{
private
void
calculateTotalPrice
(
ErpPurchaseInDO
purchaseIn
,
List
<
ErpPurchaseInItemDO
>
purchaseInItems
)
{
purchaseIn
.
setTotalCount
(
getSumValue
(
purchaseInItems
,
ErpPurchaseInItemDO:
:
getCount
,
BigDecimal:
:
add
));
purchaseIn
.
setTotalCount
(
purchaseInItems
.
stream
().
mapToInt
(
ErpPurchaseInItemDO:
:
getCount
).
sum
(
));
purchaseIn
.
setTotalProductPrice
(
getSumValue
(
purchaseInItems
,
ErpPurchaseInItemDO:
:
getTotalPrice
,
BigDecimal:
:
add
,
BigDecimal
.
ZERO
));
purchaseIn
.
setTotalProductPrice
(
getSumValue
(
purchaseInItems
,
ErpPurchaseInItemDO:
:
getTotalPrice
,
BigDecimal:
:
add
,
BigDecimal
.
ZERO
));
purchaseIn
.
setTotalTaxPrice
(
getSumValue
(
purchaseInItems
,
ErpPurchaseInItemDO:
:
getTaxPrice
,
BigDecimal:
:
add
,
BigDecimal
.
ZERO
));
purchaseIn
.
setTotalTaxPrice
(
getSumValue
(
purchaseInItems
,
ErpPurchaseInItemDO:
:
getTaxPrice
,
BigDecimal:
:
add
,
BigDecimal
.
ZERO
));
purchaseIn
.
setTotalPrice
(
purchaseIn
.
getTotalProductPrice
().
add
(
purchaseIn
.
getTotalTaxPrice
()));
purchaseIn
.
setTotalPrice
(
purchaseIn
.
getTotalProductPrice
().
add
(
purchaseIn
.
getTotalTaxPrice
()));
...
@@ -180,9 +180,9 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
...
@@ -180,9 +180,9 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
Integer
bizType
=
approve
?
ErpStockRecordBizTypeEnum
.
PURCHASE_IN
.
getType
()
Integer
bizType
=
approve
?
ErpStockRecordBizTypeEnum
.
PURCHASE_IN
.
getType
()
:
ErpStockRecordBizTypeEnum
.
PURCHASE_IN_CANCEL
.
getType
();
:
ErpStockRecordBizTypeEnum
.
PURCHASE_IN_CANCEL
.
getType
();
purchaseInItems
.
forEach
(
purchaseInItem
->
{
purchaseInItems
.
forEach
(
purchaseInItem
->
{
BigDecimal
count
=
approve
?
purchaseInItem
.
getCount
()
:
purchaseInItem
.
getCount
().
negate
();
Integer
count
=
approve
?
purchaseInItem
.
getCount
()
:
-
purchaseInItem
.
getCount
();
stockRecordService
.
createStockRecord
(
new
ErpStockRecordCreateReqBO
(
stockRecordService
.
createStockRecord
(
new
ErpStockRecordCreateReqBO
(
purchaseInItem
.
getProductId
(),
purchaseInItem
.
getWarehouseId
(),
count
,
purchaseInItem
.
getProductId
(),
purchaseInItem
.
getWarehouseId
(),
BigDecimal
.
valueOf
(
count
)
,
bizType
,
purchaseInItem
.
getInId
(),
purchaseInItem
.
getId
(),
purchaseIn
.
getNo
()));
bizType
,
purchaseInItem
.
getInId
(),
purchaseInItem
.
getId
(),
purchaseIn
.
getNo
()));
});
});
}
}
...
@@ -207,7 +207,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
...
@@ -207,7 +207,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
// 2. 转化为 ErpPurchaseInItemDO 列表
// 2. 转化为 ErpPurchaseInItemDO 列表
return
convertList
(
list
,
o
->
BeanUtils
.
toBean
(
o
,
ErpPurchaseInItemDO
.
class
,
item
->
{
return
convertList
(
list
,
o
->
BeanUtils
.
toBean
(
o
,
ErpPurchaseInItemDO
.
class
,
item
->
{
// item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
// item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
item
.
setTotalPrice
(
MoneyUtils
.
priceMultiply
(
item
.
getProductPrice
(),
item
.
getCount
()));
item
.
setTotalPrice
(
BigDecimal
.
valueOf
(
item
.
getProductPrice
()
*
item
.
getCount
()));
if
(
item
.
getTotalPrice
()
==
null
)
{
if
(
item
.
getTotalPrice
()
==
null
)
{
return
;
return
;
}
}
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java
View file @
8dc06376
...
@@ -8,11 +8,13 @@ import cn.iocoder.foodnexus.framework.common.util.number.MoneyUtils;
...
@@ -8,11 +8,13 @@ import cn.iocoder.foodnexus.framework.common.util.number.MoneyUtils;
import
cn.iocoder.foodnexus.framework.common.util.object.BeanUtils
;
import
cn.iocoder.foodnexus.framework.common.util.object.BeanUtils
;
import
cn.iocoder.foodnexus.module.erp.api.PurchaseOrderSplitEvent
;
import
cn.iocoder.foodnexus.module.erp.api.PurchaseOrderSplitEvent
;
import
cn.iocoder.foodnexus.module.erp.api.enums.ErpDeliveryStatus
;
import
cn.iocoder.foodnexus.module.erp.api.enums.ErpDeliveryStatus
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.product.ErpProductDO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.product.ErpProductDO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO
;
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.purchase.ErpPurchaseOrderItemDO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO
;
import
cn.iocoder.foodnexus.module.erp.dal.mysql.purchase.ErpPurchaseOrderItemMapper
;
import
cn.iocoder.foodnexus.module.erp.dal.mysql.purchase.ErpPurchaseOrderItemMapper
;
import
cn.iocoder.foodnexus.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper
;
import
cn.iocoder.foodnexus.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper
;
import
cn.iocoder.foodnexus.module.erp.dal.redis.no.ErpNoRedisDAO
;
import
cn.iocoder.foodnexus.module.erp.dal.redis.no.ErpNoRedisDAO
;
...
@@ -38,6 +40,7 @@ import org.springframework.transaction.event.TransactionalEventListener;
...
@@ -38,6 +40,7 @@ import org.springframework.transaction.event.TransactionalEventListener;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.*
;
import
static
cn
.
iocoder
.
foodnexus
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
import
static
cn
.
iocoder
.
foodnexus
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
...
@@ -61,6 +64,9 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
...
@@ -61,6 +64,9 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
@Resource
@Resource
private
ErpPurchaseOrderItemMapper
purchaseOrderItemMapper
;
private
ErpPurchaseOrderItemMapper
purchaseOrderItemMapper
;
@Autowired
private
ErpPurchaseInService
purchaseInService
;
@Resource
@Resource
private
ErpNoRedisDAO
noRedisDAO
;
private
ErpNoRedisDAO
noRedisDAO
;
...
@@ -355,6 +361,34 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
...
@@ -355,6 +361,34 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
purchaseOrderMapper
.
update
(
Wrappers
.<
ErpPurchaseOrderDO
>
lambdaUpdate
()
purchaseOrderMapper
.
update
(
Wrappers
.<
ErpPurchaseOrderDO
>
lambdaUpdate
()
.
set
(
ErpPurchaseOrderDO:
:
getDeliveryStatus
,
updateStatus
)
.
set
(
ErpPurchaseOrderDO:
:
getDeliveryStatus
,
updateStatus
)
.
in
(
ErpPurchaseOrderDO:
:
getId
,
ids
));
.
in
(
ErpPurchaseOrderDO:
:
getId
,
ids
));
if
(
updateStatus
.
equals
(
ErpDeliveryStatus
.
ARRIVAL
))
{
orderList
.
forEach
(
purchaseOrder
->
{
// 新增采购入库单
ErpPurchaseInSaveReqVO
inSaveReqVO
=
new
ErpPurchaseInSaveReqVO
();
inSaveReqVO
.
setInTime
(
LocalDateTime
.
now
());
inSaveReqVO
.
setOrderId
(
purchaseOrder
.
getId
());
inSaveReqVO
.
setFileUrl
(
purchaseOrder
.
getFileUrl
());
inSaveReqVO
.
setRemark
(
purchaseOrder
.
getRemark
());
List
<
ErpPurchaseOrderItemDO
>
purchaseOrderItems
=
purchaseOrderItemMapper
.
selectListByOrderId
(
purchaseOrder
.
getId
());
inSaveReqVO
.
setItems
(
CommonUtil
.
listConvert
(
purchaseOrderItems
,
purchaseOrderItem
->
getItem
(
purchaseOrderItem
,
customerOrderApi
.
queryById
(
purchaseOrderItem
.
getCustomerOrderId
()))));
purchaseInService
.
createPurchaseIn
(
inSaveReqVO
);
});
}
}
private
static
ErpPurchaseInSaveReqVO
.
Item
getItem
(
ErpPurchaseOrderItemDO
purchaseOrderItemDO
,
CustomerOrderDTO
customerOrder
)
{
ErpPurchaseInSaveReqVO
.
Item
item
=
new
ErpPurchaseInSaveReqVO
.
Item
();
item
.
setOrderItemId
(
purchaseOrderItemDO
.
getId
());
item
.
setWarehouseId
(
customerOrder
.
getWarehouseAreaId
());
item
.
setProductId
(
purchaseOrderItemDO
.
getProductId
());
item
.
setProductUnit
(
purchaseOrderItemDO
.
getProductUnit
());
item
.
setProductPrice
(
purchaseOrderItemDO
.
getProductPrice
());
item
.
setCount
(
purchaseOrderItemDO
.
getCount
());
item
.
setTaxPercent
(
purchaseOrderItemDO
.
getTaxPercent
());
item
.
setRemark
(
purchaseOrderItemDO
.
getRemark
());
return
item
;
}
}
@Override
@Override
...
...
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleOrderService.java
View file @
8dc06376
...
@@ -114,5 +114,16 @@ public interface ErpSaleOrderService {
...
@@ -114,5 +114,16 @@ public interface ErpSaleOrderService {
*/
*/
boolean
updateDeliveryStaff
(
Long
id
,
Long
deliveryStaffId
);
boolean
updateDeliveryStaff
(
Long
id
,
Long
deliveryStaffId
);
/**
* 更新拣货
* @param id
* @param itemId
*/
void
updatePickUp
(
Long
id
,
Long
itemId
);
void
updatePickUp
(
Long
id
,
Long
itemId
);
/**
* 配送
* @param id
*/
void
delivery
(
Long
id
,
Long
deliveryStaffId
);
}
}
\ No newline at end of file
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleOrderServiceImpl.java
View file @
8dc06376
...
@@ -10,6 +10,7 @@ import cn.iocoder.foodnexus.module.erp.api.vo.warehouse.WarehouseInfo;
...
@@ -10,6 +10,7 @@ import cn.iocoder.foodnexus.module.erp.api.vo.warehouse.WarehouseInfo;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.product.ErpProductDO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.product.ErpProductDO
;
import
cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO
;
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.erp.dal.dataobject.sale.ErpSaleOrderDO
;
...
@@ -89,6 +90,9 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
...
@@ -89,6 +90,9 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
@Autowired
@Autowired
private
DeliveryStaffApi
deliveryStaffApi
;
private
DeliveryStaffApi
deliveryStaffApi
;
@Autowired
private
ErpSaleOutService
saleOutService
;
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Long
createSaleOrder
(
ErpSaleOrderSaveReqVO
createReqVO
)
{
public
Long
createSaleOrder
(
ErpSaleOrderSaveReqVO
createReqVO
)
{
...
@@ -360,14 +364,7 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
...
@@ -360,14 +364,7 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
.
eq
(
ErpSaleOrderItemDO:
:
getId
,
itemId
));
.
eq
(
ErpSaleOrderItemDO:
:
getId
,
itemId
));
// 插入采购入库单
// 插入采购入库单
ErpPurchaseInSaveReqVO
inSaveReqVO
=
new
ErpPurchaseInSaveReqVO
();
inSaveReqVO
.
setInTime
(
LocalDateTime
.
now
());
inSaveReqVO
.
setOrderId
(
saleOrder
.
getCustomerOrderId
());
inSaveReqVO
.
setSaleOrderId
(
saleOrder
.
getId
());
inSaveReqVO
.
setSaleOrderItemId
(
saleItemOrder
.
getId
());
ErpPurchaseInSaveReqVO
.
Item
item
=
getItem
(
saleItemOrder
,
customerOrder
);
inSaveReqVO
.
setItems
(
CommonUtil
.
asList
(
item
));
purchaseInService
.
createPurchaseIn
(
inSaveReqVO
);
Long
allCount
=
saleOrderItemMapper
.
selectCount
(
ErpSaleOrderItemDO:
:
getOrderId
,
saleOrder
.
getId
());
Long
allCount
=
saleOrderItemMapper
.
selectCount
(
ErpSaleOrderItemDO:
:
getOrderId
,
saleOrder
.
getId
());
...
@@ -375,6 +372,10 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
...
@@ -375,6 +372,10 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
.
eq
(
ErpSaleOrderItemDO:
:
getOrderId
,
saleOrder
.
getId
())
.
eq
(
ErpSaleOrderItemDO:
:
getOrderId
,
saleOrder
.
getId
())
.
eq
(
ErpSaleOrderItemDO:
:
getPickUpStatus
,
SaleOrderPickUpStatus
.
PICK_UP
.
getType
()));
.
eq
(
ErpSaleOrderItemDO:
:
getPickUpStatus
,
SaleOrderPickUpStatus
.
PICK_UP
.
getType
()));
if
(
allCount
>
0
&&
Objects
.
equals
(
pickUpCount
,
allCount
))
{
if
(
allCount
>
0
&&
Objects
.
equals
(
pickUpCount
,
allCount
))
{
saleOrderMapper
.
update
(
Wrappers
.<
ErpSaleOrderDO
>
lambdaUpdate
()
.
set
(
ErpSaleOrderDO:
:
getPickUpStatus
,
SaleOrderPickUpStatus
.
PICK_UP
.
getType
())
.
eq
(
ErpSaleOrderDO:
:
getId
,
saleOrder
.
getId
()));
String
deliveryName
=
deliveryStaffApi
.
queryNameByStaffId
(
saleOrder
.
getDeliveryStaffId
());
String
deliveryName
=
deliveryStaffApi
.
queryNameByStaffId
(
saleOrder
.
getDeliveryStaffId
());
String
warehouseName
=
Optional
.
ofNullable
(
customerOrder
.
getWarehouseInfo
()).
map
(
WarehouseInfo:
:
getName
).
orElse
(
""
);
String
warehouseName
=
Optional
.
ofNullable
(
customerOrder
.
getWarehouseInfo
()).
map
(
WarehouseInfo:
:
getName
).
orElse
(
""
);
ErpPurchaseOrderDO
purchaseOrder
=
purchaseOrderService
.
getPurchaseOrder
(
saleItemOrder
.
getPurchaseOrderId
());
ErpPurchaseOrderDO
purchaseOrder
=
purchaseOrderService
.
getPurchaseOrder
(
saleItemOrder
.
getPurchaseOrderId
());
...
@@ -388,17 +389,46 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
...
@@ -388,17 +389,46 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
}
}
private
static
ErpPurchaseInSaveReqVO
.
Item
getItem
(
ErpSaleOrderItemDO
saleItemOrder
,
CustomerOrderDTO
customerOrder
)
{
/**
ErpPurchaseInSaveReqVO
.
Item
item
=
new
ErpPurchaseInSaveReqVO
.
Item
();
* 配送
item
.
setOrderItemId
(
saleItemOrder
.
getPurchaseOrderId
());
*
item
.
setWarehouseId
(
customerOrder
.
getWarehouseAreaId
());
* @param id
item
.
setProductId
(
saleItemOrder
.
getProductId
());
*/
item
.
setProductUnit
(
saleItemOrder
.
getProductUnit
());
@Override
item
.
setProductPrice
(
saleItemOrder
.
getProductPrice
());
public
void
delivery
(
Long
id
,
Long
deliveryStaffId
)
{
item
.
setCount
(
saleItemOrder
.
getCount
());
ErpSaleOrderDO
saleOrder
=
this
.
validateSaleOrder
(
id
);
item
.
setTaxPercent
(
saleItemOrder
.
getTaxPercent
());
if
(!
SaleOrderPickUpStatus
.
PICK_UP
.
equals
(
saleOrder
.
getPickUpStatus
()))
{
item
.
setRemark
(
saleItemOrder
.
getRemark
());
throw
exception
(
SALE_ORDER_PICKUP_STATUS_FAIL
);
return
item
;
}
saleOrderMapper
.
update
(
Wrappers
.<
ErpSaleOrderDO
>
lambdaUpdate
()
.
set
(
ErpSaleOrderDO:
:
getPickUpStatus
,
SaleOrderPickUpStatus
.
ALREADY
.
getType
())
.
set
(
ErpSaleOrderDO:
:
getDeliveryStaffId
,
deliveryStaffId
)
.
eq
(
ErpSaleOrderDO:
:
getId
,
saleOrder
.
getId
()));
List
<
ErpSaleOrderItemDO
>
saleOrderItems
=
saleOrderItemMapper
.
selectListByOrderId
(
id
);
// 新增销售出库单
ErpSaleOutSaveReqVO
saleOutSaveReqVO
=
new
ErpSaleOutSaveReqVO
();
saleOutSaveReqVO
.
setSaleUserId
(
saleOrder
.
getSaleUserId
());
saleOutSaveReqVO
.
setAccountId
(
saleOrder
.
getAccountId
());
saleOutSaveReqVO
.
setOutTime
(
LocalDateTime
.
now
());
saleOutSaveReqVO
.
setOrderId
(
saleOrder
.
getId
());
saleOutSaveReqVO
.
setDiscountPercent
(
saleOrder
.
getDiscountPercent
());
saleOutSaveReqVO
.
setFileUrl
(
saleOrder
.
getFileUrl
());
saleOutSaveReqVO
.
setRemark
(
saleOrder
.
getRemark
());
saleOutSaveReqVO
.
setItems
(
CommonUtil
.
listConvert
(
saleOrderItems
,
saleOrderItem
->
{
ErpSaleOutSaveReqVO
.
Item
item
=
new
ErpSaleOutSaveReqVO
.
Item
();
item
.
setOrderItemId
(
saleOrderItem
.
getId
());
// item.setWarehouseId();
item
.
setProductId
(
saleOrderItem
.
getProductId
());
item
.
setProductUnit
(
saleOrderItem
.
getProductUnit
());
item
.
setProductPrice
(
saleOrderItem
.
getProductPrice
());
item
.
setCount
(
saleOrderItem
.
getCount
());
item
.
setTaxPercent
(
saleOrderItem
.
getTaxPercent
());
item
.
setRemark
(
saleOrderItem
.
getRemark
());
return
item
;
}));
saleOutService
.
createSaleOut
(
saleOutSaveReqVO
);
}
}
}
}
foodnexus-module-erp/src/main/java/cn/iocoder/foodnexus/module/erp/service/sale/ErpSaleOutServiceImpl.java
View file @
8dc06376
...
@@ -20,6 +20,8 @@ import cn.iocoder.foodnexus.module.erp.service.finance.ErpAccountService;
...
@@ -20,6 +20,8 @@ import cn.iocoder.foodnexus.module.erp.service.finance.ErpAccountService;
import
cn.iocoder.foodnexus.module.erp.service.product.ErpProductService
;
import
cn.iocoder.foodnexus.module.erp.service.product.ErpProductService
;
import
cn.iocoder.foodnexus.module.erp.service.stock.ErpStockRecordService
;
import
cn.iocoder.foodnexus.module.erp.service.stock.ErpStockRecordService
;
import
cn.iocoder.foodnexus.module.erp.service.stock.bo.ErpStockRecordCreateReqBO
;
import
cn.iocoder.foodnexus.module.erp.service.stock.bo.ErpStockRecordCreateReqBO
;
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.AdminUserApi
;
import
jakarta.annotation.Resource
;
import
jakarta.annotation.Resource
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.context.annotation.Lazy
;
...
@@ -57,7 +59,7 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
...
@@ -57,7 +59,7 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
private
ErpNoRedisDAO
noRedisDAO
;
private
ErpNoRedisDAO
noRedisDAO
;
@Resource
@Resource
private
ErpProductService
product
Service
;
private
ProductSpuService
productSpu
Service
;
@Resource
@Resource
@Lazy
// 延迟加载,避免循环依赖
@Lazy
// 延迟加载,避免循环依赖
private
ErpSaleOrderService
saleOrderService
;
private
ErpSaleOrderService
saleOrderService
;
...
@@ -209,12 +211,10 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
...
@@ -209,12 +211,10 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
private
List
<
ErpSaleOutItemDO
>
validateSaleOutItems
(
List
<
ErpSaleOutSaveReqVO
.
Item
>
list
)
{
private
List
<
ErpSaleOutItemDO
>
validateSaleOutItems
(
List
<
ErpSaleOutSaveReqVO
.
Item
>
list
)
{
// 1. 校验产品存在
// 1. 校验产品存在
List
<
ErpProductDO
>
productList
=
productService
.
validProductList
(
Map
<
Long
,
ProductSpuDO
>
productMap
=
productSpuService
.
getSpuMap
(
convertSet
(
list
,
ErpSaleOutSaveReqVO
.
Item
::
getProductId
));
convertSet
(
list
,
ErpSaleOutSaveReqVO
.
Item
::
getProductId
));
Map
<
Long
,
ErpProductDO
>
productMap
=
convertMap
(
productList
,
ErpProductDO:
:
getId
);
// 2. 转化为 ErpSaleOutItemDO 列表
// 2. 转化为 ErpSaleOutItemDO 列表
return
convertList
(
list
,
o
->
BeanUtils
.
toBean
(
o
,
ErpSaleOutItemDO
.
class
,
item
->
{
return
convertList
(
list
,
o
->
BeanUtils
.
toBean
(
o
,
ErpSaleOutItemDO
.
class
,
item
->
{
item
.
setProductUnit
Id
(
productMap
.
get
(
item
.
getProductId
()).
getUnitId
());
item
.
setProductUnit
(
productMap
.
get
(
item
.
getProductId
()).
getUnitName
());
item
.
setTotalPrice
(
MoneyUtils
.
priceMultiply
(
item
.
getProductPrice
(),
item
.
getCount
()));
item
.
setTotalPrice
(
MoneyUtils
.
priceMultiply
(
item
.
getProductPrice
(),
item
.
getCount
()));
if
(
item
.
getTotalPrice
()
==
null
)
{
if
(
item
.
getTotalPrice
()
==
null
)
{
return
;
return
;
...
...
foodnexus-module-mall/foodnexus-module-operations/src/main/java/cn/iocoder/foodnexus/module/operations/service/deliverystaff/DeliveryStaffServiceImpl.java
View file @
8dc06376
...
@@ -152,4 +152,10 @@ public class DeliveryStaffServiceImpl implements DeliveryStaffService, DeliveryS
...
@@ -152,4 +152,10 @@ public class DeliveryStaffServiceImpl implements DeliveryStaffService, DeliveryS
public
String
queryNameByStaffId
(
Long
staffId
)
{
public
String
queryNameByStaffId
(
Long
staffId
)
{
return
Optional
.
ofNullable
(
deliveryStaffMapper
.
selectById
(
staffId
)).
map
(
DeliveryStaffDO:
:
getName
).
orElse
(
""
);
return
Optional
.
ofNullable
(
deliveryStaffMapper
.
selectById
(
staffId
)).
map
(
DeliveryStaffDO:
:
getName
).
orElse
(
""
);
}
}
@Override
public
Long
queryStaffIdByUserId
(
Long
loginUserId
)
{
return
Optional
.
ofNullable
(
deliveryStaffMapper
.
selectOne
(
DeliveryStaffDO:
:
getUserId
,
loginUserId
))
.
map
(
DeliveryStaffDO:
:
getId
).
orElse
(
null
);
}
}
}
\ No newline at end of file
foodnexus-module-mall/foodnexus-module-order-api/src/main/java/cn/iocoder/foodnexus/module/order/api/DeliveryStaffApi.java
View file @
8dc06376
...
@@ -9,4 +9,5 @@ public interface DeliveryStaffApi {
...
@@ -9,4 +9,5 @@ public interface DeliveryStaffApi {
String
queryNameByStaffId
(
Long
staffId
);
String
queryNameByStaffId
(
Long
staffId
);
Long
queryStaffIdByUserId
(
Long
loginUserId
);
}
}
foodnexus-module-mall/foodnexus-module-order/src/main/java/cn/iocoder/foodnexus/module/order/controller/app/delivery/DeliveryOrderController.java
View file @
8dc06376
package
cn
.
iocoder
.
foodnexus
.
module
.
order
.
controller
.
app
.
delivery
;
package
cn
.
iocoder
.
foodnexus
.
module
.
order
.
controller
.
app
.
delivery
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.iocoder.foodnexus.framework.common.enums.UserSystemEnum
;
import
cn.iocoder.foodnexus.framework.common.enums.UserSystemEnum
;
import
cn.iocoder.foodnexus.framework.common.pojo.CommonResult
;
import
cn.iocoder.foodnexus.framework.common.pojo.PageResult
;
import
cn.iocoder.foodnexus.framework.common.util.collection.MapUtils
;
import
cn.iocoder.foodnexus.framework.common.util.object.BeanUtils
;
import
cn.iocoder.foodnexus.framework.security.core.util.SecurityFrameworkUtils
;
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.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.sale.ErpCustomerService
;
import
cn.iocoder.foodnexus.module.erp.service.sale.ErpSaleOrderService
;
import
cn.iocoder.foodnexus.module.order.api.DeliveryStaffApi
;
import
cn.iocoder.foodnexus.module.system.annotations.AppSystemAuth
;
import
cn.iocoder.foodnexus.module.system.annotations.AppSystemAuth
;
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
;
import
io.swagger.v3.oas.annotations.Parameter
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
jakarta.annotation.Resource
;
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.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
java.util.Map
;
import
static
cn
.
iocoder
.
foodnexus
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
import
static
cn
.
iocoder
.
foodnexus
.
framework
.
common
.
util
.
collection
.
CollectionUtils
.
convertMultiMap
;
import
static
cn
.
iocoder
.
foodnexus
.
framework
.
common
.
util
.
collection
.
CollectionUtils
.
convertSet
;
/**
/**
* @author : yanghao
* @author : yanghao
* create at: 2025/9/26 09:49
* create at: 2025/9/26 09:49
* @description: 订单 - 配送
* @description: 订单 - 配送
*/
*/
@Tag
(
name
=
"
管理后台
- 订单 - 配送"
)
@Tag
(
name
=
"
配送员
- 订单 - 配送"
)
@RestController
@RestController
@RequestMapping
(
"/delivery/order"
)
@RequestMapping
(
"/delivery/order"
)
@Validated
@Validated
@AppSystemAuth
(
UserSystemEnum
.
DELIVERY
)
@AppSystemAuth
(
UserSystemEnum
.
DELIVERY
)
public
class
DeliveryOrderController
{
public
class
DeliveryOrderController
{
@Autowired
private
DeliveryStaffApi
deliveryStaffApi
;
@Autowired
private
ErpSaleOrderService
saleOrderService
;
@Resource
private
ErpProductService
productService
;
@Resource
private
ErpCustomerService
customerService
;
@Resource
private
AdminUserApi
adminUserApi
;
// 查询所有已拣销售订单
@GetMapping
(
"/page"
)
@Operation
(
summary
=
"获得销售订单分页"
)
public
CommonResult
<
PageResult
<
ErpSaleOrderRespVO
>>
getSaleOrderPage
(
@Valid
ErpSaleOrderPageReqVO
pageReqVO
)
{
pageReqVO
.
setDeliveryStaffId
(
deliveryStaffApi
.
queryStaffIdByUserId
(
SecurityFrameworkUtils
.
getLoginUserId
()));
pageReqVO
.
setPickUpStatus
(
SaleOrderPickUpStatus
.
PICK_UP
);
PageResult
<
ErpSaleOrderDO
>
pageResult
=
saleOrderService
.
getSaleOrderPage
(
pageReqVO
);
return
success
(
buildSaleOrderVOPageResult
(
pageResult
));
}
// 配送订单,生成销售出库单
@PostMapping
(
"/delivery"
)
@Operation
(
summary
=
"配送订单"
)
@Parameter
(
name
=
"id"
,
description
=
"销售订单id"
,
required
=
true
)
public
CommonResult
<
Boolean
>
delivery
(
@RequestParam
(
"id"
)
Long
id
)
{
saleOrderService
.
delivery
(
id
,
deliveryStaffApi
.
queryStaffIdByUserId
(
SecurityFrameworkUtils
.
getLoginUserId
()));
return
success
(
Boolean
.
TRUE
);
}
// 订单修改
private
PageResult
<
ErpSaleOrderRespVO
>
buildSaleOrderVOPageResult
(
PageResult
<
ErpSaleOrderDO
>
pageResult
)
{
if
(
CollUtil
.
isEmpty
(
pageResult
.
getList
()))
{
return
PageResult
.
empty
(
pageResult
.
getTotal
());
}
// 1.1 订单项
List
<
ErpSaleOrderItemDO
>
saleOrderItemList
=
saleOrderService
.
getSaleOrderItemListByOrderIds
(
convertSet
(
pageResult
.
getList
(),
ErpSaleOrderDO:
:
getId
));
Map
<
Long
,
List
<
ErpSaleOrderItemDO
>>
saleOrderItemMap
=
convertMultiMap
(
saleOrderItemList
,
ErpSaleOrderItemDO:
:
getOrderId
);
// 1.2 产品信息
Map
<
Long
,
ErpProductRespVO
>
productMap
=
productService
.
getProductVOMap
(
convertSet
(
saleOrderItemList
,
ErpSaleOrderItemDO:
:
getProductId
));
// 1.3 客户信息
Map
<
Long
,
ErpCustomerDO
>
customerMap
=
customerService
.
getCustomerMap
(
convertSet
(
pageResult
.
getList
(),
ErpSaleOrderDO:
:
getCustomerId
));
// 1.4 管理员信息
Map
<
Long
,
AdminUserRespDTO
>
userMap
=
adminUserApi
.
getUserMap
(
convertSet
(
pageResult
.
getList
(),
saleOrder
->
Long
.
parseLong
(
saleOrder
.
getCreator
())));
// 2. 开始拼接
return
BeanUtils
.
toBean
(
pageResult
,
ErpSaleOrderRespVO
.
class
,
saleOrder
->
{
saleOrder
.
setItems
(
BeanUtils
.
toBean
(
saleOrderItemMap
.
get
(
saleOrder
.
getId
()),
ErpSaleOrderRespVO
.
Item
.
class
,
item
->
MapUtils
.
findAndThen
(
productMap
,
item
.
getProductId
(),
product
->
item
.
setProductName
(
product
.
getName
())
.
setProductBarCode
(
product
.
getBarCode
()).
setProductUnitName
(
product
.
getUnitName
()))));
saleOrder
.
setProductNames
(
CollUtil
.
join
(
saleOrder
.
getItems
(),
","
,
ErpSaleOrderRespVO
.
Item
::
getProductName
));
MapUtils
.
findAndThen
(
customerMap
,
saleOrder
.
getCustomerId
(),
supplier
->
saleOrder
.
setCustomerName
(
supplier
.
getName
()));
MapUtils
.
findAndThen
(
userMap
,
Long
.
parseLong
(
saleOrder
.
getCreator
()),
user
->
saleOrder
.
setCreatorName
(
user
.
getNickname
()));
});
}
}
}
foodnexus-module-system/src/main/java/cn/iocoder/foodnexus/module/system/controller/admin/dept/DeptController.java
View file @
8dc06376
...
@@ -75,9 +75,9 @@ public class DeptController {
...
@@ -75,9 +75,9 @@ public class DeptController {
@GetMapping
(
value
=
{
"/list-all-simple"
,
"/simple-list"
})
@GetMapping
(
value
=
{
"/list-all-simple"
,
"/simple-list"
})
@Operation
(
summary
=
"获取部门精简信息列表"
,
description
=
"只包含被开启的部门,主要用于前端的下拉选项"
)
@Operation
(
summary
=
"获取部门精简信息列表"
,
description
=
"只包含被开启的部门,主要用于前端的下拉选项"
)
public
CommonResult
<
List
<
DeptSimpleRespVO
>>
getSimpleDeptList
()
{
public
CommonResult
<
List
<
DeptSimpleRespVO
>>
getSimpleDeptList
(
@RequestParam
(
value
=
"userSystem"
,
required
=
false
)
String
userSystem
)
{
List
<
DeptDO
>
list
=
deptService
.
getDeptList
(
List
<
DeptDO
>
list
=
deptService
.
getDeptList
(
new
DeptListReqVO
().
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
()));
new
DeptListReqVO
().
set
UserSystem
(
userSystem
).
set
Status
(
CommonStatusEnum
.
ENABLE
.
getStatus
()));
return
success
(
BeanUtils
.
toBean
(
list
,
DeptSimpleRespVO
.
class
));
return
success
(
BeanUtils
.
toBean
(
list
,
DeptSimpleRespVO
.
class
));
}
}
...
...
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