Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-api-boot-master
Commits
2de7268e
Commit
2de7268e
authored
Sep 06, 2024
by
332784038@qq.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/release' into release
parents
8fed62d8
f6e3039d
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
228 additions
and
24 deletions
+228
-24
20240830.sql
sql/v2.1/20240830.sql
+50
-0
20240903.sql
sql/v2.1/20240903.sql
+7
-0
20240904.sql
sql/v2.1/20240904.sql
+7
-2
CustomerFollowupServiceImpl.java
...service/customerFollowup/CustomerFollowupServiceImpl.java
+93
-0
CustomerOperateTypeEnum.java
...coder/yudao/module/ecw/enums/CustomerOperateTypeEnum.java
+4
-0
AppRegionController.java
...module/ecw/controller/app/region/AppRegionController.java
+6
-7
OrderDO.java
...oder/yudao/module/order/dal/dataobject/order/OrderDO.java
+1
-1
OrderBackInfoDto.java
...a/cn/iocoder/yudao/module/order/dto/OrderBackInfoDto.java
+1
-1
PickStateEnum.java
...va/cn/iocoder/yudao/module/order/enums/PickStateEnum.java
+21
-0
OrderPickupServiceImpl.java
...ule/order/service/orderPickup/OrderPickupServiceImpl.java
+27
-6
OrderBackPageVO.java
.../iocoder/yudao/module/order/vo/order/OrderBackPageVO.java
+1
-1
OrderBackVO.java
...a/cn/iocoder/yudao/module/order/vo/order/OrderBackVO.java
+1
-1
OrderBaseVO.java
...a/cn/iocoder/yudao/module/order/vo/order/OrderBaseVO.java
+1
-1
OrderQueryVO.java
.../cn/iocoder/yudao/module/order/vo/order/OrderQueryVO.java
+4
-4
ProductMapper.java
...yudao/module/product/dal/mysql/product/ProductMapper.java
+1
-0
ProductExportReqVO.java
...r/yudao/module/product/vo/product/ProductExportReqVO.java
+3
-0
No files found.
sql/v2.1/20240830.sql
View file @
2de7268e
...
...
@@ -82,6 +82,44 @@ VALUES (1, '1', '等待消息', 'Waiting for message', 'customer_followup_result
-- ----------------------------
-- Table structure for ecw_customer_followup
-- ----------------------------
DROP
TABLE
IF
EXISTS
`ecw_customer_followup`
;
CREATE
TABLE
`ecw_customer_followup`
(
`id`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键'
,
`number`
varchar
(
64
)
NULL
DEFAULT
NULL
COMMENT
'编号'
,
`parent_number`
varchar
(
64
)
NULL
DEFAULT
NULL
COMMENT
'上一级跟进单号'
,
`status`
int
NULL
DEFAULT
NULL
COMMENT
'状态 字典customer_followup_status'
,
`customer_id`
bigint
NULL
DEFAULT
NULL
COMMENT
'客户编号'
,
`offer_id`
bigint
NULL
DEFAULT
NULL
COMMENT
'报价单'
,
`follow_type`
tinyint
NULL
DEFAULT
NULL
COMMENT
'跟进类型 字典customer_followup_type'
,
`follow_time`
datetime
NULL
DEFAULT
NULL
COMMENT
'跟进时间'
,
`contact_name`
varchar
(
63
)
NULL
DEFAULT
NULL
COMMENT
'联系人'
,
`follow_method`
tinyint
NULL
DEFAULT
NULL
COMMENT
'跟进方式 字典customer_followup_method'
,
`follow_user_id`
bigint
NULL
DEFAULT
NULL
COMMENT
'客户经理/跟进业务员id'
,
`purpose`
varchar
(
512
)
NULL
DEFAULT
NULL
COMMENT
'目的'
,
`result_type`
tinyint
NULL
DEFAULT
NULL
COMMENT
'跟进结果 字典customer_followup_result_type'
,
`feedback`
varchar
(
2048
)
NULL
DEFAULT
NULL
COMMENT
'客户反馈'
,
`attatchment`
varchar
(
2048
)
NULL
DEFAULT
NULL
COMMENT
'附件 多个以逗号分隔'
,
`next_time`
datetime
NULL
DEFAULT
NULL
COMMENT
'下次跟进时间'
,
`next_plan`
varchar
(
2048
)
NULL
DEFAULT
NULL
COMMENT
'下次跟进计划'
,
`creator`
varchar
(
63
)
NOT
NULL
DEFAULT
''
COMMENT
'创建者'
,
`create_time`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updater`
varchar
(
63
)
NULL
DEFAULT
''
COMMENT
'更新者'
,
`update_time`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
`deleted`
bit
(
1
)
NOT
NULL
DEFAULT
b
'0'
COMMENT
'是否删除'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
COMMENT
=
'客户跟进表'
;
-- 下面为刷新数据的sql
-- 更新客户角色
update
ecw_customer
set
roles
=
'2'
where
FIND_IN_SET
(
2
,
type
)
!=
0
;
update
ecw_customer
set
roles
=
'3'
where
FIND_IN_SET
(
3
,
type
)
!=
0
;
...
...
@@ -96,3 +134,15 @@ update ecw_customer a
set
a
.
customer_service_confirmed_time
=
b
.
maxtime
where
a
.
deleted
=
0
;
-- 刷新客户跟进数据
insert
into
ecw_customer_followup
(
id
,
number
,
parent_number
,
`status`
,
customer_id
,
offer_id
,
follow_type
,
follow_time
,
contact_name
,
follow_method
,
follow_user_id
,
purpose
,
result_type
,
feedback
,
attatchment
,
next_time
,
next_plan
,
creator
,
create_time
,
updater
,
update_time
,
deleted
)
select
null
,
null
,
null
,
1
,
customer_id
,
null
,
1
,
follow_time
,
contact_name
,
follow_method
,
follow_user_id
,
null
,
1
,
CONCAT
(
'【客户反馈:】
\r\n
'
,
feedback
,
'
\r\n\r\n
【处理结果:】
\r\n
'
,
result
),
null
,
null
,
null
,
creator
,
create_time
,
updater
,
update_time
,
deleted
from
ecw_customer_follow
;
-- 更新客户跟进编号
update
ecw_customer_followup
set
number
=
CONCAT
(
'GJ'
,
2024000000
+
id
);
sql/v2.1/20240903.sql
View file @
2de7268e
...
...
@@ -5,3 +5,10 @@ INSERT INTO `system_dict_data` (`sort`, `value`, `label`, `label_en`, `dict_type
VALUES
(
23
,
'23'
,
'设置默认付款'
,
'Set Customer Default Pay'
,
'customer_operate_type'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
now
(),
'115'
,
now
(),
b
'0'
);
INSERT
INTO
`system_dict_data`
(
`sort`
,
`value`
,
`label`
,
`label_en`
,
`dict_type`
,
`status`
,
`color_type`
,
`css_class`
,
`remark`
,
`creator`
,
`create_time`
,
`updater`
,
`update_time`
,
`deleted`
)
VALUES
(
24
,
'24'
,
'设置默认开票'
,
'Set Customer Default Billing'
,
'customer_operate_type'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
now
(),
'115'
,
now
(),
b
'0'
);
INSERT
INTO
`system_dict_data`
(
`sort`
,
`value`
,
`label`
,
`label_en`
,
`dict_type`
,
`status`
,
`color_type`
,
`css_class`
,
`remark`
,
`creator`
,
`create_time`
,
`updater`
,
`update_time`
,
`deleted`
)
VALUES
(
25
,
'25'
,
'新增跟进纪录'
,
'Create Customer Followup'
,
'customer_operate_type'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
now
(),
'115'
,
now
(),
b
'0'
);
INSERT
INTO
`system_dict_data`
(
`sort`
,
`value`
,
`label`
,
`label_en`
,
`dict_type`
,
`status`
,
`color_type`
,
`css_class`
,
`remark`
,
`creator`
,
`create_time`
,
`updater`
,
`update_time`
,
`deleted`
)
VALUES
(
26
,
'26'
,
'编辑跟进纪录'
,
'Update Customer Followup'
,
'customer_operate_type'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
now
(),
'115'
,
now
(),
b
'0'
);
INSERT
INTO
`system_dict_data`
(
`sort`
,
`value`
,
`label`
,
`label_en`
,
`dict_type`
,
`status`
,
`color_type`
,
`css_class`
,
`remark`
,
`creator`
,
`create_time`
,
`updater`
,
`update_time`
,
`deleted`
)
VALUES
(
27
,
'27'
,
'提交跟进纪录'
,
'Commit Customer Followup'
,
'customer_operate_type'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
now
(),
'115'
,
now
(),
b
'0'
);
sql/v2.1/20240904.sql
View file @
2de7268e
...
...
@@ -12,6 +12,11 @@ alter table `ecw_order_consignee`
alter
table
`ecw_order`
add
column
`pick_state`
tinyint
DEFAULT
0
COMMENT
'提货状态:0 未提货 1 部分提货 2 已提货'
;
alter
table
`ecw_order`
add
column
`pick_ratio`
int
DEFAULT
0
COMMENT
'提货率'
;
add
column
`pick_ratio`
decimal
(
5
,
2
)
DEFAULT
'0.00'
COMMENT
'提货率'
;
alter
table
`ecw_order`
add
column
`pick_num`
int
DEFAULT
0
COMMENT
'提货箱数'
;
-- 批量刷新订单提货数量、提货率、提货状态
update
ecw_order
t
LEFT
JOIN
(
select
a
.
order_id
,
sum
(
a
.
pick_num
)
as
pickNum
from
ecw_order_pickup
a
where
a
.
deleted
=
0
GROUP
BY
a
.
order_id
)
t1
on
t
.
order_no
=
t1
.
order_id
set
t
.
pick_num
=
t1
.
pickNum
,
t
.
pick_ratio
=
ROUND
(
t1
.
pickNum
/
t
.
sum_num
,
2
)
*
100
,
t
.
pick_state
=
(
case
when
t1
.
pickNum
is
null
then
0
when
t1
.
pickNum
=
t
.
sum_num
then
3
else
2
end
);
-- 已提货和部分提货的订单批量刷新订单主状态
update
ecw_order
t
set
t
.
`status`
=
16
where
t
.
`status`
in
(
20
,
21
);
\ No newline at end of file
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/service/customerFollowup/CustomerFollowupServiceImpl.java
View file @
2de7268e
...
...
@@ -9,8 +9,14 @@ import javax.annotation.Resource;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.framework.security.core.LoginUser
;
import
cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO
;
import
cn.iocoder.yudao.module.customer.dal.mysql.customer.CustomerMapper
;
import
cn.iocoder.yudao.module.customer.service.customerOperateLog.CustomerOperateLogService
;
import
cn.iocoder.yudao.module.customer.vo.customerOperateLog.CustomerOperateLogCreateReqVO
;
import
cn.iocoder.yudao.module.ecw.enums.CustomerFollowupStatusEnum
;
import
cn.iocoder.yudao.module.ecw.enums.CustomerOperateTypeEnum
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
...
...
@@ -36,6 +42,13 @@ public class CustomerFollowupServiceImpl extends AbstractService<CustomerFollowu
@Resource
private
CustomerFollowupMapper
followupMapper
;
@Resource
private
CustomerOperateLogService
customerOperateLogService
;
@Resource
private
CustomerMapper
customerMapper
;
/**
* 跟进单编号生成方式:GJ+年份+六位数字,按年份累计
* @return
...
...
@@ -66,6 +79,31 @@ public class CustomerFollowupServiceImpl extends AbstractService<CustomerFollowu
// 插入
CustomerFollowupDO
followup
=
CustomerFollowupConvert
.
INSTANCE
.
convert
(
createReqVO
);
followupMapper
.
insert
(
followup
);
Long
customerId
=
createReqVO
.
getCustomerId
();
if
(
customerId
!=
null
)
{
CustomerDO
customer
=
customerMapper
.
selectById
(
customerId
);
if
(
customer
==
null
)
{
// 插入日志
LoginUser
loginUser
=
SecurityFrameworkUtils
.
getLoginUser
();
//保存客户捞取记录
CustomerOperateLogCreateReqVO
customerOperateLogCreateReqVO
=
new
CustomerOperateLogCreateReqVO
()
.
setOperator
(
loginUser
==
null
?
null
:
loginUser
.
getId
())
.
setOperatorName
(
loginUser
==
null
?
null
:
loginUser
.
getNickname
())
.
setCustomerId
(
customer
.
getId
())
.
setNumber
(
customer
.
getNumber
())
.
setName
(
customer
.
getName
())
.
setNewCustomerService
(
customer
.
getCustomerService
())
.
setOldCustomerService
(
customer
.
getCustomerService
())
.
setOldEstimateEnterOpenSeaTime
(
customer
.
getEstimateEnterOpenSeaTime
())
.
setNewEstimateEnterOpenSeaTime
(
customer
.
getEstimateEnterOpenSeaTime
())
.
setOperateType
(
CustomerOperateTypeEnum
.
FOLLOWUP_CREATE
.
getValue
())
.
setRemark
(
"新增跟进纪录"
+
(
CustomerFollowupStatusEnum
.
UnCommited
.
getValue
().
equals
(
createReqVO
.
getStatus
())
?
""
:
",并提交"
));
customerOperateLogService
.
createOperateLog
(
customerOperateLogCreateReqVO
);
}
}
// 返回
return
followup
.
getId
();
}
...
...
@@ -84,6 +122,30 @@ public class CustomerFollowupServiceImpl extends AbstractService<CustomerFollowu
// 更新
CustomerFollowupDO
updateObj
=
CustomerFollowupConvert
.
INSTANCE
.
convert
(
updateReqVO
);
followupMapper
.
updateById
(
updateObj
);
Long
customerId
=
updateReqVO
.
getCustomerId
();
if
(
customerId
!=
null
)
{
CustomerDO
customer
=
customerMapper
.
selectById
(
customerId
);
if
(
customer
==
null
)
{
// 插入日志
LoginUser
loginUser
=
SecurityFrameworkUtils
.
getLoginUser
();
//保存客户捞取记录
CustomerOperateLogCreateReqVO
customerOperateLogCreateReqVO
=
new
CustomerOperateLogCreateReqVO
()
.
setOperator
(
loginUser
==
null
?
null
:
loginUser
.
getId
())
.
setOperatorName
(
loginUser
==
null
?
null
:
loginUser
.
getNickname
())
.
setCustomerId
(
customer
.
getId
())
.
setNumber
(
customer
.
getNumber
())
.
setName
(
customer
.
getName
())
.
setNewCustomerService
(
customer
.
getCustomerService
())
.
setOldCustomerService
(
customer
.
getCustomerService
())
.
setOldEstimateEnterOpenSeaTime
(
customer
.
getEstimateEnterOpenSeaTime
())
.
setNewEstimateEnterOpenSeaTime
(
customer
.
getEstimateEnterOpenSeaTime
())
.
setOperateType
(
CustomerOperateTypeEnum
.
FOLLOWUP_UPDATE
.
getValue
())
.
setRemark
(
"更新跟进纪录"
+
(
CustomerFollowupStatusEnum
.
UnCommited
.
getValue
().
equals
(
updateReqVO
.
getStatus
())
?
""
:
",并提交"
));
customerOperateLogService
.
createOperateLog
(
customerOperateLogCreateReqVO
);
}
}
}
@Override
...
...
@@ -94,8 +156,39 @@ public class CustomerFollowupServiceImpl extends AbstractService<CustomerFollowu
if
(
customerFollowupDO
==
null
)
{
throw
exception
(
FOLLOWUP_NOT_EXISTS
);
}
if
(
CustomerFollowupStatusEnum
.
Commited
.
getValue
().
equals
(
customerFollowupDO
.
getStatus
()))
{
throw
exception
(
FOLLOWUP_ALREADY_SUBMITTED
);
}
customerFollowupDO
.
setStatus
(
updateStatusReqVO
.
getStatus
());
followupMapper
.
updateById
(
customerFollowupDO
);
Long
customerId
=
customerFollowupDO
.
getCustomerId
();
if
(
customerId
!=
null
)
{
CustomerDO
customer
=
customerMapper
.
selectById
(
customerId
);
if
(
customer
==
null
)
{
// 插入日志
LoginUser
loginUser
=
SecurityFrameworkUtils
.
getLoginUser
();
//保存客户捞取记录
CustomerOperateLogCreateReqVO
customerOperateLogCreateReqVO
=
new
CustomerOperateLogCreateReqVO
()
.
setOperator
(
loginUser
==
null
?
null
:
loginUser
.
getId
())
.
setOperatorName
(
loginUser
==
null
?
null
:
loginUser
.
getNickname
())
.
setCustomerId
(
customer
.
getId
())
.
setNumber
(
customer
.
getNumber
())
.
setName
(
customer
.
getName
())
.
setNewCustomerService
(
customer
.
getCustomerService
())
.
setOldCustomerService
(
customer
.
getCustomerService
())
.
setOldEstimateEnterOpenSeaTime
(
customer
.
getEstimateEnterOpenSeaTime
())
.
setNewEstimateEnterOpenSeaTime
(
customer
.
getEstimateEnterOpenSeaTime
())
.
setOperateType
(
CustomerOperateTypeEnum
.
FOLLOWUP_COMMIT
.
getValue
())
.
setRemark
(
"提交跟进纪录"
);
customerOperateLogService
.
createOperateLog
(
customerOperateLogCreateReqVO
);
}
}
}
@Override
...
...
yudao-module-ecw/yudao-module-ecw-api/src/main/java/cn/iocoder/yudao/module/ecw/enums/CustomerOperateTypeEnum.java
View file @
2de7268e
...
...
@@ -54,6 +54,10 @@ public enum CustomerOperateTypeEnum {
CHANGE_DEFAULT_BILLING
(
24
,
"设置默认开票"
),
FOLLOWUP_CREATE
(
25
,
"新增跟进纪录"
),
FOLLOWUP_UPDATE
(
26
,
"编辑跟进纪录"
),
FOLLOWUP_COMMIT
(
27
,
"提交跟进纪录"
),
DELETE
(
100
,
"删除"
),
...
...
yudao-module-ecw/yudao-module-ecw-impl/src/main/java/cn/iocoder/yudao/module/ecw/controller/app/region/AppRegionController.java
View file @
2de7268e
...
...
@@ -40,7 +40,6 @@ public class AppRegionController {
@GetMapping
(
"/get"
)
@ApiOperation
(
"获得区域设置"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@PreAuthorize
(
"@ss.hasPermission('ecw:region:query')"
)
public
CommonResult
<
RegionRespVO
>
getRegion
(
@RequestParam
(
"id"
)
Long
id
)
{
RegionDO
region
=
regionService
.
getRegion
(
id
);
return
success
(
RegionConvert
.
INSTANCE
.
convert
(
region
));
...
...
@@ -50,7 +49,7 @@ public class AppRegionController {
@GetMapping
(
"/list"
)
@ApiOperation
(
"获得区域设置列表"
)
@PreAuthenticated
//
@PreAuthenticated
public
CommonResult
<
List
<
RegionRespVO
>>
getRegionList
(
RegionListReqVO
reqVO
)
{
List
<
RegionDO
>
list
=
regionService
.
getSimpleDepts
(
reqVO
);
list
.
sort
(
Comparator
.
comparing
(
RegionDO:
:
getSort
));
...
...
@@ -59,7 +58,7 @@ public class AppRegionController {
@GetMapping
(
"/page"
)
@ApiOperation
(
"获得区域设置分页"
)
@PreAuthenticated
//
@PreAuthenticated
public
CommonResult
<
PageResult
<
RegionRespVO
>>
getRegionPage
(
@Valid
RegionPageReqVO
pageVO
)
{
PageResult
<
RegionDO
>
pageResult
=
regionService
.
getRegionPage
(
pageVO
);
return
success
(
RegionConvert
.
INSTANCE
.
convertPage
(
pageResult
));
...
...
@@ -68,7 +67,7 @@ public class AppRegionController {
@GetMapping
(
"/getTree"
)
@ApiOperation
(
"获得区域子列表"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@PreAuthenticated
//
@PreAuthenticated
public
CommonResult
<
RegionRespVO
>
getTree
(
@RequestParam
(
"id"
)
Long
id
)
{
List
<
RegionDO
>
list
=
regionService
.
getByParent
(
id
);
List
<
RegionRespVO
>
dataList
=
RegionConvert
.
INSTANCE
.
convertList
(
list
);
...
...
@@ -83,7 +82,7 @@ public class AppRegionController {
@GetMapping
(
"/getListTree"
)
@ApiOperation
(
"获得区域设置列表"
)
@PreAuthenticated
//
@PreAuthenticated
public
CommonResult
<
List
<
RegionRespVO
>>
listTree
(
RegionListReqVO
reqVO
)
{
List
<
RegionDO
>
list
=
regionService
.
getSimpleDepts
(
reqVO
);
list
.
sort
(
Comparator
.
comparing
(
RegionDO:
:
getSort
));
...
...
@@ -108,7 +107,7 @@ public class AppRegionController {
@GetMapping
(
"/getCityList"
)
@ApiOperation
(
"获得区域城市列表"
)
@PreAuthenticated
//
@PreAuthenticated
public
CommonResult
<
List
<
RegionRespVO
>>
getCityList
()
{
List
<
RegionDO
>
cityList
=
regionService
.
getCityList
();
return
success
(
RegionConvert
.
INSTANCE
.
convertList
(
cityList
));
...
...
@@ -116,7 +115,7 @@ public class AppRegionController {
@GetMapping
(
"/getTradeCityList"
)
@ApiOperation
(
"获得始发、目的城市列表"
)
@PreAuthenticated
//
@PreAuthenticated
public
CommonResult
<
List
<
RegionRespVO
>>
getTradeCityList
(
TradeRegionListReqVO
reqVO
)
{
if
(
Objects
.
nonNull
(
reqVO
.
getChannelId
())){
// 如果有渠道信息,则查询可出目的地国家下的目的地城市
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/dal/dataobject/order/OrderDO.java
View file @
2de7268e
...
...
@@ -538,7 +538,7 @@ public class OrderDO extends BaseDO {
private
Integer
pickState
;
@ApiModelProperty
(
value
=
"'提货率'"
)
private
String
pickRatio
;
private
BigDecimal
pickRatio
;
@ApiModelProperty
(
value
=
"'提货箱数'"
)
private
Integer
pickNum
;
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/dto/OrderBackInfoDto.java
View file @
2de7268e
...
...
@@ -534,7 +534,7 @@ public class OrderBackInfoDto {
private
Integer
pickState
;
@ApiModelProperty
(
value
=
"'提货率'"
)
private
Integer
pickRatio
;
private
BigDecimal
pickRatio
;
@ApiModelProperty
(
value
=
"'提货箱数'"
)
private
Integer
pickNum
;
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/enums/PickStateEnum.java
0 → 100644
View file @
2de7268e
package
cn
.
iocoder
.
yudao
.
module
.
order
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
@AllArgsConstructor
@Getter
public
enum
PickStateEnum
{
unpick
(
0
,
"待提货"
),
picking
(
1
,
"提货中"
),
partPick
(
2
,
"部分提货"
),
picked
(
3
,
"已提货"
);
private
Integer
pickState
;
private
String
pickStateStr
;
}
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/orderPickup/OrderPickupServiceImpl.java
View file @
2de7268e
...
...
@@ -29,6 +29,7 @@ import cn.iocoder.yudao.module.order.vo.orderPickup.*;
import
cn.iocoder.yudao.module.order.vo.orderTime.OrderTimeQueryVO
;
import
cn.iocoder.yudao.module.system.service.user.AdminUserService
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -38,6 +39,7 @@ import org.springframework.validation.annotation.Validated;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -122,7 +124,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
orderPickup
.
setOrderStatus
(
orderDO
.
getStatus
());
}
orderPickupMapper
.
insert
(
orderPickup
);
orderService
.
updateStatus
(
null
,
createReqVO
.
getOrderId
(),
OrderStatusEnum
.
PICKED_UP
.
getValue
(),
null
,
null
,
null
,
null
,
null
,
createReqVO
.
getPickTime
(),
false
);
//
orderService.updateStatus(null, createReqVO.getOrderId(), OrderStatusEnum.PICKED_UP.getValue(), null, null, null, null, null, createReqVO.getPickTime(), false);
//升级客户vip等级
updateCustomerLevelUp
(
orderDO
);
...
...
@@ -188,6 +190,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
}
}
}
dealDeliveryRate
(
createReqVO
.
getOrderId
(),
orderDO
.
getSumNum
(),
PickStateEnum
.
picked
.
getPickState
());
// 返回
return
orderPickup
.
getId
();
}
...
...
@@ -204,6 +207,19 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
return
orderDO
.
getSumNum
()
-
allPickNum
;
}
private
void
dealDeliveryRate
(
String
orderNo
,
Integer
sumNum
,
Integer
pickState
)
{
List
<
OrderPickupDO
>
orderPickupDOS
=
orderPickupMapper
.
selectList
(
OrderPickupDO:
:
getOrderId
,
orderNo
);
int
pickedSum
=
orderPickupDOS
.
stream
().
mapToInt
(
OrderPickupDO:
:
getPickNum
).
sum
();
BigDecimal
pickRatio
=
new
BigDecimal
((
double
)
pickedSum
/
sumNum
*
100
);
pickRatio
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
orderService
.
update
(
new
LambdaUpdateWrapper
<
OrderDO
>()
.
set
(
OrderDO:
:
getPickNum
,
pickedSum
)
.
set
(
OrderDO:
:
getPickRatio
,
pickRatio
)
.
set
(
OrderDO:
:
getPickState
,
pickState
)
.
eq
(
OrderDO:
:
getOrderNo
,
orderNo
)
);
}
private
void
deleteCustomLevelAndCreditLevelLog
(
OrderPickupDO
orderPickupDO
)
{
OrderBackInfoDto
info
=
orderQueryService
.
info
(
orderService
.
selectOne
(
OrderDO:
:
getOrderNo
,
orderPickupDO
.
getOrderId
()).
getOrderId
());
if
(
info
.
getSumNum
()
!=
0
)
{
...
...
@@ -317,12 +333,14 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
// 获取未撤销的提货记录
List
<
OrderPickupDO
>
pickupDOList
=
orderPickupMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderPickupDO
>().
eq
(
OrderPickupDO:
:
getOrderId
,
orderPickupDO
.
getOrderId
()).
orderByDesc
(
OrderPickupDO:
:
getPickTime
));
if
(
CollectionUtil
.
isNotEmpty
(
pickupDOList
)
&&
pickupDOList
.
size
()
>
0
)
{
orderService
.
updateStatus
(
one
.
getOrderId
(),
null
,
OrderStatusEnum
.
PART_PICKED_UP
.
getValue
(),
null
,
null
,
null
,
null
,
null
);
// orderService.updateStatus(one.getOrderId(), null, OrderStatusEnum.PART_PICKED_UP.getValue(), null, null, null, null, null);
dealDeliveryRate
(
one
.
getOrderNo
(),
one
.
getSumNum
(),
PickStateEnum
.
partPick
.
getPickState
());
}
else
{
// 找到已删除 订单状态大于0的数据来恢复订单状态
OrderPickupDO
delOrderPickupDO
=
orderPickupMapper
.
selectDeletedPickup
(
orderPickupDO
.
getOrderId
());
// 这里需要考虑到老数据的空指针异常
orderService
.
updateStatus
(
one
.
getOrderId
(),
null
,
Objects
.
nonNull
(
delOrderPickupDO
)
?
delOrderPickupDO
.
getOrderStatus
()
:
16
,
null
,
null
,
null
,
null
,
null
);
// orderService.updateStatus(one.getOrderId(), null, Objects.nonNull(delOrderPickupDO) ? delOrderPickupDO.getOrderStatus() : 16, null, null, null, null, null);
dealDeliveryRate
(
one
.
getOrderNo
(),
one
.
getSumNum
(),
PickStateEnum
.
picked
.
getPickState
());
}
if
(
Objects
.
equals
(
one
.
getTransportId
(),
TransportTypeShortEnum
.
AIR_FREIGHT_LINE
.
getValue
()))
{
...
...
@@ -473,7 +491,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
orderPickup
.
setOrderStatus
(
orderDO
.
getStatus
());
}
orderPickupMapper
.
insert
(
orderPickup
);
orderService
.
updateStatus
(
null
,
orderDO
.
getOrderNo
(),
OrderStatusEnum
.
PICKED_UP
.
getValue
(),
null
,
null
,
null
,
null
,
null
,
createReqVO
.
getPickTime
(),
false
);
//
orderService.updateStatus(null, orderDO.getOrderNo(), OrderStatusEnum.PICKED_UP.getValue(), null, null, null, null, null, createReqVO.getPickTime(), false);
//升级客户vip等级
updateCustomerLevelUp
(
orderDO
);
...
...
@@ -516,6 +534,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
}
}
}
dealDeliveryRate
(
createReqVO
.
getOrderId
(),
orderDO
.
getSumNum
(),
PickStateEnum
.
picked
.
getPickState
());
}
}
}
...
...
@@ -630,7 +649,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
orderPickup
.
setOrderStatus
(
orderDO
.
getStatus
());
}
orderPickupMapper
.
insert
(
orderPickup
);
orderService
.
updateStatus
(
null
,
createReqVO
.
getOrderId
(),
OrderStatusEnum
.
PART_PICKED_UP
.
getValue
(),
null
,
null
,
null
,
null
,
null
,
createReqVO
.
getPickTime
(),
false
);
//
orderService.updateStatus(null, createReqVO.getOrderId(), OrderStatusEnum.PART_PICKED_UP.getValue(), null, null, null, null, null, createReqVO.getPickTime(), false);
//发送站内信
sendMsg
(
orderDO
.
getOrderNo
(),
orderDO
.
getMarks
(),
String
.
valueOf
(
orderPickup
.
getPickNum
()),
DateUtils
.
formatDate
(
orderPickup
.
getPickTime
()),
Long
.
valueOf
(
orderPickup
.
getCreator
()));
...
...
@@ -638,6 +657,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
OrderDO
orderDO1
=
new
OrderDO
();
BeanUtils
.
copyProperties
(
orderDO
,
orderDO1
);
insertCustomLevelAndCreditLevelLog
(
orderPickup
,
orderDO1
,
false
);
dealDeliveryRate
(
createReqVO
.
getOrderId
(),
orderDO
.
getSumNum
(),
PickStateEnum
.
partPick
.
getPickState
());
}
else
if
(
num
<
0
)
{
//如果分批提的数量加上已分批提的数量超过了总量 则重新计算成剩余的量
throw
exception
(
PICK_UP_TOO_MORE
);
...
...
@@ -652,7 +672,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
orderPickup
.
setOrderStatus
(
orderDO
.
getStatus
());
}
orderPickupMapper
.
insert
(
orderPickup
);
orderService
.
updateStatus
(
null
,
createReqVO
.
getOrderId
(),
OrderStatusEnum
.
PICKED_UP
.
getValue
(),
null
,
null
,
null
,
null
,
null
,
createReqVO
.
getPickTime
(),
false
);
//
orderService.updateStatus(null, createReqVO.getOrderId(), OrderStatusEnum.PICKED_UP.getValue(), null, null, null, null, null, createReqVO.getPickTime(), false);
//发送站内信
sendMsg
(
orderDO
.
getOrderNo
(),
orderDO
.
getMarks
(),
String
.
valueOf
(
orderPickup
.
getPickNum
()),
DateUtils
.
formatDate
(
orderPickup
.
getPickTime
()),
Long
.
valueOf
(
orderPickup
.
getCreator
()));
...
...
@@ -662,6 +682,7 @@ public class OrderPickupServiceImpl extends AbstractService<OrderPickupMapper, O
BeanUtils
.
copyProperties
(
orderDO
,
orderDO1
);
insertCustomLevelAndCreditLevelLog
(
orderPickup
,
orderDO1
,
true
);
updateCustomerLevelUp
(
orderDO1
);
dealDeliveryRate
(
createReqVO
.
getOrderId
(),
orderDO
.
getSumNum
(),
PickStateEnum
.
picked
.
getPickState
());
}
orderBusinessService
.
addOrderOperateLog
(
orderDO
.
getOrderId
(),
""
,
"分批提货"
,
""
);
if
(
Objects
.
equals
(
orderDO
.
getTransportId
(),
TransportTypeShortEnum
.
AIR_FREIGHT_LINE
.
getValue
()))
{
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/order/OrderBackPageVO.java
View file @
2de7268e
...
...
@@ -375,7 +375,7 @@ public class OrderBackPageVO {
private
Integer
pickState
;
@ApiModelProperty
(
value
=
"'提货率'"
)
private
Integer
pickRatio
;
private
BigDecimal
pickRatio
;
@ApiModelProperty
(
value
=
"'提货箱数'"
)
private
Integer
pickNum
;
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/order/OrderBackVO.java
View file @
2de7268e
...
...
@@ -631,7 +631,7 @@ public class OrderBackVO {
private
Integer
pickState
;
@ApiModelProperty
(
value
=
"'提货率'"
)
private
Integer
pickRatio
;
private
BigDecimal
pickRatio
;
@ApiModelProperty
(
value
=
"'提货箱数'"
)
private
Integer
pickNum
;
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/order/OrderBaseVO.java
View file @
2de7268e
...
...
@@ -359,7 +359,7 @@ public class OrderBaseVO {
private
Integer
pickState
;
@ApiModelProperty
(
value
=
"'提货率'"
)
private
Integer
pickRatio
;
private
BigDecimal
pickRatio
;
@ApiModelProperty
(
value
=
"'提货箱数'"
)
private
Integer
pickNum
;
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/order/OrderQueryVO.java
View file @
2de7268e
...
...
@@ -542,16 +542,16 @@ public class OrderQueryVO {
private
Integer
pickState
;
@ApiModelProperty
(
value
=
"'提货率'"
)
private
Integer
pickRatio
;
private
BigDecimal
pickRatio
;
@ApiModelProperty
(
value
=
"小于等于提货率"
)
private
String
lePickRatio
;
private
BigDecimal
lePickRatio
;
@ApiModelProperty
(
value
=
"等于提货率"
)
private
String
eqPickRatio
;
private
BigDecimal
eqPickRatio
;
@ApiModelProperty
(
value
=
"大于等于提货率"
)
private
String
gePickRatio
;
private
BigDecimal
gePickRatio
;
@ApiModelProperty
(
value
=
"'提货箱数'"
)
private
Integer
pickNum
;
...
...
yudao-module-product/yudao-module-product-core/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/product/ProductMapper.java
View file @
2de7268e
...
...
@@ -300,6 +300,7 @@ public interface ProductMapper extends BaseMapperX<ProductDO> {
.
likeIfPresent
(
ProductDO:
:
getProductCode
,
reqVO
.
getProductCode
())
.
likeIfPresent
(
ProductDO:
:
getCustomsCode
,
reqVO
.
getCustomsCode
())
.
eqIfPresent
(
ProductDO:
:
getTypeId
,
reqVO
.
getTypeId
())
.
inIfPresent
(
ProductDO:
:
getTypeId
,
reqVO
.
getTypeIds
())
.
eqIfPresent
(
ProductDO:
:
getAuditStatus
,
reqVO
.
getAuditStatus
())
.
eqIfPresent
(
ProductDO:
:
getStatus
,
reqVO
.
getStatus
())
.
inIfPresent
(
ProductDO:
:
getId
,
idList
)
...
...
yudao-module-product/yudao-module-product-core/src/main/java/cn/iocoder/yudao/module/product/vo/product/ProductExportReqVO.java
View file @
2de7268e
...
...
@@ -16,6 +16,9 @@ public class ProductExportReqVO {
@ApiModelProperty
(
value
=
"商品类型id"
)
private
Long
typeId
;
@ApiModelProperty
(
value
=
"商品类型ids"
)
private
List
<
Long
>
typeIds
;
@ApiModelProperty
(
value
=
"商品属性id"
)
private
String
attrId
;
...
...
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