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
45b054a5
Commit
45b054a5
authored
Mar 03, 2025
by
honghy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
需求116 后台-集运-包裹列表-操作-跟进
parent
72c5d985
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
309 additions
and
57 deletions
+309
-57
CodeUtils.java
...n/iocoder/yudao/framework/common/util/code/CodeUtils.java
+33
-0
ConsFollowupDO.java
...ule/order/dal/dataobject/consFollowup/ConsFollowupDO.java
+7
-1
ConsFollowupMapper.java
...dule/order/dal/mysql/consFollowup/ConsFollowupMapper.java
+17
-30
ConsExceptionServiceImpl.java
...order/service/consException/ConsExceptionServiceImpl.java
+0
-1
ConsFollowupService.java
...odule/order/service/consFollowup/ConsFollowupService.java
+3
-2
ConsFollowupServiceImpl.java
...e/order/service/consFollowup/ConsFollowupServiceImpl.java
+93
-5
ConsFollowupBackVO.java
...udao/module/order/vo/consFollowup/ConsFollowupBackVO.java
+38
-7
ConsFollowupBaseVO.java
...udao/module/order/vo/consFollowup/ConsFollowupBaseVO.java
+16
-3
ConsFollowupQueryVO.java
...dao/module/order/vo/consFollowup/ConsFollowupQueryVO.java
+24
-4
ConsFollowupMapper.xml
...ore/src/main/resources/mapper/cons/ConsFollowupMapper.xml
+76
-0
ConsFollowupController.java
...controller/admin/consFollowup/ConsFollowupController.java
+2
-4
No files found.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/code/CodeUtils.java
View file @
45b054a5
...
@@ -272,6 +272,39 @@ public class CodeUtils {
...
@@ -272,6 +272,39 @@ public class CodeUtils {
return
newOddNumber
;
return
newOddNumber
;
}
}
/**
* 功能描述: 自动生成集运跟进单单号. 格式: GJ+年份YYYY+六位数
*
* @param maxOddNumbers 数据库中的最新单号
* @return java.lang.String
*/
public
static
String
getConsFollowupNumbers
(
String
maxOddNumbers
)
{
// 格式: GJ+年份YYYY+六位数
int
numberLength
=
12
;
//获取当前日期并将其进行格式化
String
formatYear
=
getDateTime
(
"yyyy"
);
int
newEndIntNum
;
//判断数据中的最大单号是否存在,是否包含当前日期
if
(
StringUtils
.
isNotEmpty
(
maxOddNumbers
)
&&
maxOddNumbers
.
length
()
==
numberLength
&&
maxOddNumbers
.
substring
(
2
,
6
).
equals
(
formatYear
))
{
//截取后四位数
String
endNum
=
maxOddNumbers
.
substring
(
maxOddNumbers
.
length
()
-
6
);
//把截取的最后六位数解析为int
int
endIntNum
=
Integer
.
parseInt
(
endNum
);
//在将其加1(自增1)
newEndIntNum
=
endIntNum
+
1
;
}
else
{
// 如果为空(第一次生成)或者当前最大订单号的日期与当前日期不一致说明需要重新计数生成单号
newEndIntNum
=
1
;
}
//生成单号
String
newOddNumber
=
String
.
format
(
"%s%s%06d"
,
"CF"
,
formatYear
,
newEndIntNum
);
//将单号返回
return
newOddNumber
;
}
/**
/**
* 功能描述: 自动生成收款单单单号
* 功能描述: 自动生成收款单单单号
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/dal/dataobject/consFollowup/ConsFollowupDO.java
View file @
45b054a5
...
@@ -4,6 +4,10 @@ import lombok.*;
...
@@ -4,6 +4,10 @@ import lombok.*;
import
java.util.*
;
import
java.util.*
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.*
;
import
cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
;
import
cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
/**
/**
* 操作跟进 DO
* 操作跟进 DO
...
@@ -43,7 +47,8 @@ public class ConsFollowupDO extends BaseDO {
...
@@ -43,7 +47,8 @@ public class ConsFollowupDO extends BaseDO {
/**
/**
* 跟进时间
* 跟进时间
*/
*/
private
Long
followTime
;
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
private
Date
followTime
;
/**
/**
* 跟进人
* 跟进人
*/
*/
...
@@ -51,6 +56,7 @@ public class ConsFollowupDO extends BaseDO {
...
@@ -51,6 +56,7 @@ public class ConsFollowupDO extends BaseDO {
/**
/**
* 下次跟进时间
* 下次跟进时间
*/
*/
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
private
Date
nextFollowTime
;
private
Date
nextFollowTime
;
/**
/**
* 下次跟进内容
* 下次跟进内容
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/dal/mysql/consFollowup/ConsFollowupMapper.java
View file @
45b054a5
...
@@ -5,54 +5,41 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
...
@@ -5,54 +5,41 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupBackVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 操作跟进 Mapper
* 操作跟进 Mapper
*
* @author jayden
* @author jayden
*/
*/
@Mapper
@Mapper
public
interface
ConsFollowupMapper
extends
AbstractMapper
<
ConsFollowupDO
>
{
public
interface
ConsFollowupMapper
extends
AbstractMapper
<
ConsFollowupDO
>
{
@Override
default
PageResult
<
ConsFollowupDO
>
selectPage
(
PageVO
page
,
Object
object
)
{
if
(
object
instanceof
ConsFollowupQueryVO
)
{
ConsFollowupQueryVO
vo
=
(
ConsFollowupQueryVO
)
object
;
return
selectPage
(
page
,
new
LambdaQuery
<
ConsFollowupDO
>()
.
eqIfPresent
(
ConsFollowupDO:
:
getConsId
,
vo
.
getConsId
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getCreateTime
,
vo
.
getBeginCreateTime
(),
vo
.
getEndCreateTime
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowNumber
,
vo
.
getFollowNumber
())
.
eqIfPresent
(
ConsFollowupDO:
:
getStatus
,
vo
.
getStatus
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowContent
,
vo
.
getFollowContent
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getFollowTime
,
vo
.
getBeginFollowTime
(),
vo
.
getEndFollowTime
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowUserId
,
vo
.
getFollowUserId
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getNextFollowTime
,
vo
.
getBeginNextFollowTime
(),
vo
.
getEndNextFollowTime
())
.
eqIfPresent
(
ConsFollowupDO:
:
getNextFollowContent
,
vo
.
getNextFollowContent
())
.
orderByDesc
(
ConsFollowupDO:
:
getId
));
}
return
null
;
}
@Override
@Override
default
List
<
ConsFollowupDO
>
selectList
(
Object
object
)
{
default
List
<
ConsFollowupDO
>
selectList
(
Object
object
)
{
if
(
object
instanceof
ConsFollowupQueryVO
)
{
if
(
object
instanceof
ConsFollowupQueryVO
)
{
ConsFollowupQueryVO
vo
=
(
ConsFollowupQueryVO
)
object
;
ConsFollowupQueryVO
vo
=
(
ConsFollowupQueryVO
)
object
;
return
selectList
(
new
LambdaQuery
<
ConsFollowupDO
>()
return
selectList
(
new
LambdaQuery
<
ConsFollowupDO
>()
.
eqIfPresent
(
ConsFollowupDO:
:
getConsId
,
vo
.
getConsId
())
.
eqIfPresent
(
ConsFollowupDO:
:
getConsId
,
vo
.
getConsId
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getCreateTime
,
vo
.
getBeginCreateTime
(),
vo
.
getEndCreateTime
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getCreateTime
,
vo
.
getBeginCreateTime
(),
vo
.
getEndCreateTime
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowNumber
,
vo
.
getFollowNumber
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowNumber
,
vo
.
getFollowNumber
())
.
eqIfPresent
(
ConsFollowupDO:
:
getStatus
,
vo
.
getStatus
())
.
eqIfPresent
(
ConsFollowupDO:
:
getStatus
,
vo
.
getStatus
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowContent
,
vo
.
getFollowContent
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowContent
,
vo
.
getFollowContent
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getFollowTime
,
vo
.
getBeginFollowTime
(),
vo
.
getEndFollowTime
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getFollowTime
,
vo
.
getBeginFollowTime
(),
vo
.
getEndFollowTime
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowUserId
,
vo
.
getFollowUserId
())
.
eqIfPresent
(
ConsFollowupDO:
:
getFollowUserId
,
vo
.
getFollowUserId
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getNextFollowTime
,
vo
.
getBeginNextFollowTime
(),
vo
.
getEndNextFollowTime
())
.
betweenIfPresent
(
ConsFollowupDO:
:
getNextFollowTime
,
vo
.
getBeginNextFollowTime
(),
vo
.
getEndNextFollowTime
())
.
eqIfPresent
(
ConsFollowupDO:
:
getNextFollowContent
,
vo
.
getNextFollowContent
())
.
eqIfPresent
(
ConsFollowupDO:
:
getNextFollowContent
,
vo
.
getNextFollowContent
())
.
orderByDesc
(
ConsFollowupDO:
:
getId
));
.
orderByDesc
(
ConsFollowupDO:
:
getId
));
}
}
return
null
;
return
null
;
}
}
Long
myCount
(
@Param
(
"query"
)
ConsFollowupQueryVO
query
);
List
<
ConsFollowupBackVO
>
myPageList
(
@Param
(
"start"
)
int
start
,
@Param
(
"size"
)
int
size
,
@Param
(
"query"
)
ConsFollowupQueryVO
query
);
}
}
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/consException/ConsExceptionServiceImpl.java
View file @
45b054a5
...
@@ -44,7 +44,6 @@ public class ConsExceptionServiceImpl extends AbstractService<ConsExceptionMappe
...
@@ -44,7 +44,6 @@ public class ConsExceptionServiceImpl extends AbstractService<ConsExceptionMappe
List
<
String
>
exceptionUrls
=
createReqVO
.
getExceptionUrls
();
List
<
String
>
exceptionUrls
=
createReqVO
.
getExceptionUrls
();
for
(
String
exceptionUrl
:
exceptionUrls
)
{
for
(
String
exceptionUrl
:
exceptionUrls
)
{
ConsMediaDO
consMediaDO
=
new
ConsMediaDO
()
ConsMediaDO
consMediaDO
=
new
ConsMediaDO
()
.
setId
(
id
)
.
setMediaBusinessType
(
createReqVO
.
getMediaBusinessType
())
.
setMediaBusinessType
(
createReqVO
.
getMediaBusinessType
())
.
setTableName
(
"ecw_cons_exception"
)
.
setTableName
(
"ecw_cons_exception"
)
.
setColumnName
(
"files"
)
.
setColumnName
(
"files"
)
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/consFollowup/ConsFollowupService.java
View file @
45b054a5
...
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
...
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import
cn.iocoder.yudao.framework.mybatis.core.service.IService
;
import
cn.iocoder.yudao.framework.mybatis.core.service.IService
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupBackVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupCreateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupCreateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupUpdateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupUpdateReqVO
;
...
@@ -46,7 +47,7 @@ public interface ConsFollowupService extends IService<ConsFollowupDO> {
...
@@ -46,7 +47,7 @@ public interface ConsFollowupService extends IService<ConsFollowupDO> {
* @param id 编号
* @param id 编号
* @return 操作跟进
* @return 操作跟进
*/
*/
ConsFollowup
D
O
getConsFollowup
(
Long
id
);
ConsFollowup
BackV
O
getConsFollowup
(
Long
id
);
/**
/**
* 获得操作跟进列表
* 获得操作跟进列表
...
@@ -63,7 +64,7 @@ public interface ConsFollowupService extends IService<ConsFollowupDO> {
...
@@ -63,7 +64,7 @@ public interface ConsFollowupService extends IService<ConsFollowupDO> {
* @param query 查询
* @param query 查询
* @return 操作跟进分页
* @return 操作跟进分页
*/
*/
PageResult
<
ConsFollowup
D
O
>
getConsFollowupPage
(
ConsFollowupQueryVO
query
,
PageVO
page
);
PageResult
<
ConsFollowup
BackV
O
>
getConsFollowupPage
(
ConsFollowupQueryVO
query
,
PageVO
page
);
/**
/**
* 获得操作跟进列表, 用于 Excel 导出
* 获得操作跟进列表, 用于 Excel 导出
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/consFollowup/ConsFollowupServiceImpl.java
View file @
45b054a5
package
cn
.
iocoder
.
yudao
.
module
.
order
.
service
.
consFollowup
;
package
cn
.
iocoder
.
yudao
.
module
.
order
.
service
.
consFollowup
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
cn.iocoder.yudao.framework.apollo.core.event.Order.OrderNumberLogEvent
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.util.code.CodeUtils
;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.mybatis.core.service.AbstractService
;
import
cn.iocoder.yudao.framework.mybatis.core.service.AbstractService
;
import
cn.iocoder.yudao.module.customer.vo.customerFollowup.CustomerFollowupNumberBackVO
;
import
cn.iocoder.yudao.module.order.convert.consFollowup.ConsFollowupConvert
;
import
cn.iocoder.yudao.module.order.convert.consFollowup.ConsFollowupConvert
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO
;
import
cn.iocoder.yudao.module.order.dal.mysql.consFollowup.ConsFollowupMapper
;
import
cn.iocoder.yudao.module.order.dal.mysql.consFollowup.ConsFollowupMapper
;
import
cn.iocoder.yudao.module.order.dal.mysql.consMedia.ConsMediaMapper
;
import
cn.iocoder.yudao.module.order.vo.cons.ConsBackVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupBackVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupCreateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupCreateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupUpdateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupUpdateReqVO
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
...
@@ -24,22 +36,88 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
...
@@ -24,22 +36,88 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
@Validated
@Validated
public
class
ConsFollowupServiceImpl
extends
AbstractService
<
ConsFollowupMapper
,
ConsFollowupDO
>
implements
ConsFollowupService
{
public
class
ConsFollowupServiceImpl
extends
AbstractService
<
ConsFollowupMapper
,
ConsFollowupDO
>
implements
ConsFollowupService
{
/**
* 最新跟进单号缓存
*/
private
static
final
String
FOLLOWUP_NEW_NUMBER
=
"cons:followup:new:number"
;
@Resource
@Resource
private
ConsFollowupMapper
consFollowupMapper
;
private
ConsFollowupMapper
consFollowupMapper
;
@Resource
private
ConsMediaMapper
consMediaMapper
;
// 注入applicationContext
@Resource
private
ApplicationContext
applicationContext
;
/**
* 跟进单编号生成方式:GJ+年份+六位数字,按年份累计
*
* @return
*/
public
String
getConsFollowupNumbers
()
{
// 跟进单号生成
OrderNumberLogEvent
event
=
new
OrderNumberLogEvent
();
event
.
setType
(
6
);
event
.
setNumberKey
(
FOLLOWUP_NEW_NUMBER
);
applicationContext
.
publishEvent
(
event
);
return
CodeUtils
.
getOddFollowupNumbers
(
event
.
getNumber
());
}
@Transactional
@Override
@Override
public
Long
createConsFollowup
(
ConsFollowupCreateReqVO
createReqVO
)
{
public
Long
createConsFollowup
(
ConsFollowupCreateReqVO
createReqVO
)
{
// 插入
// 插入
ConsFollowupDO
consFollowup
=
ConsFollowupConvert
.
INSTANCE
.
convert
(
createReqVO
);
ConsFollowupDO
consFollowup
=
ConsFollowupConvert
.
INSTANCE
.
convert
(
createReqVO
);
consFollowup
.
setFollowNumber
(
getConsFollowupNumbers
());
consFollowupMapper
.
insert
(
consFollowup
);
consFollowupMapper
.
insert
(
consFollowup
);
// 返回
Long
id
=
consFollowup
.
getId
();
if
(
createReqVO
.
getExceptionUrls
()
!=
null
&&
!
createReqVO
.
getExceptionUrls
().
isEmpty
())
{
List
<
String
>
exceptionUrls
=
createReqVO
.
getExceptionUrls
();
for
(
String
exceptionUrl
:
exceptionUrls
)
{
ConsMediaDO
consMediaDO
=
new
ConsMediaDO
()
.
setMediaBusinessType
(
createReqVO
.
getMediaBusinessType
())
.
setTableName
(
"ecw_cons_followup"
)
.
setColumnName
(
"files"
)
.
setMediaUrl
(
exceptionUrl
)
.
setBizId
(
id
)
.
setConsId
(
createReqVO
.
getConsId
());
consMediaMapper
.
insert
(
consMediaDO
);
}
}
return
consFollowup
.
getId
();
return
consFollowup
.
getId
();
}
}
@Transactional
@Override
@Override
public
void
updateConsFollowup
(
ConsFollowupUpdateReqVO
updateReqVO
)
{
public
void
updateConsFollowup
(
ConsFollowupUpdateReqVO
updateReqVO
)
{
// 更新
// 更新
ConsFollowupDO
updateObj
=
ConsFollowupConvert
.
INSTANCE
.
convert
(
updateReqVO
);
ConsFollowupDO
updateObj
=
ConsFollowupConvert
.
INSTANCE
.
convert
(
updateReqVO
);
Map
<
String
,
Long
>
map
=
consMediaMapper
.
selectList
(
new
LambdaQueryWrapper
<
ConsMediaDO
>()
.
eq
(
ConsMediaDO:
:
getTableName
,
"ecw_cons_followup"
)
.
eq
(
ConsMediaDO:
:
getColumnName
,
"files"
)
.
eq
(
ConsMediaDO:
:
getBizId
,
updateReqVO
.
getId
())).
stream
().
collect
(
Collectors
.
toMap
(
ConsMediaDO:
:
getMediaUrl
,
ConsMediaDO:
:
getId
));
//新增
if
(
updateReqVO
.
getExceptionUrls
()
!=
null
&&
!
updateReqVO
.
getExceptionUrls
().
isEmpty
())
{
List
<
String
>
exceptionUrls
=
updateReqVO
.
getExceptionUrls
();
for
(
String
exceptionUrl
:
exceptionUrls
)
{
if
(
map
.
containsKey
(
exceptionUrl
))
{
map
.
remove
(
exceptionUrl
);
}
else
{
ConsMediaDO
consMediaDO
=
new
ConsMediaDO
()
.
setMediaBusinessType
(
updateReqVO
.
getMediaBusinessType
())
.
setTableName
(
"ecw_cons_followup"
)
.
setColumnName
(
"files"
)
.
setMediaUrl
(
exceptionUrl
)
.
setBizId
(
updateReqVO
.
getId
())
.
setConsId
(
updateReqVO
.
getConsId
());
consMediaMapper
.
insert
(
consMediaDO
);
}
}
}
//删除
if
(!
map
.
isEmpty
())
{
consMediaMapper
.
deleteBatchIds
(
map
.
values
());
}
consFollowupMapper
.
updateById
(
updateObj
);
consFollowupMapper
.
updateById
(
updateObj
);
}
}
...
@@ -50,8 +128,13 @@ public class ConsFollowupServiceImpl extends AbstractService<ConsFollowupMapper,
...
@@ -50,8 +128,13 @@ public class ConsFollowupServiceImpl extends AbstractService<ConsFollowupMapper,
}
}
@Override
@Override
public
ConsFollowupDO
getConsFollowup
(
Long
id
)
{
public
ConsFollowupBackVO
getConsFollowup
(
Long
id
)
{
return
consFollowupMapper
.
selectById
(
id
);
ConsFollowupBackVO
consFollowupBackVO
=
consFollowupMapper
.
myPageList
(
0
,
1
,
new
ConsFollowupQueryVO
().
setId
(
id
)).
get
(
0
);
consFollowupBackVO
.
setExceptionUrls
(
consMediaMapper
.
selectList
(
new
LambdaQueryWrapper
<
ConsMediaDO
>()
.
eq
(
ConsMediaDO:
:
getTableName
,
"ecw_cons_followup"
)
.
eq
(
ConsMediaDO:
:
getColumnName
,
"files"
)
.
eq
(
ConsMediaDO:
:
getBizId
,
id
)).
stream
().
map
(
ConsMediaDO:
:
getMediaUrl
).
collect
(
Collectors
.
toList
()));
return
consFollowupBackVO
;
}
}
@Override
@Override
...
@@ -60,8 +143,13 @@ public class ConsFollowupServiceImpl extends AbstractService<ConsFollowupMapper,
...
@@ -60,8 +143,13 @@ public class ConsFollowupServiceImpl extends AbstractService<ConsFollowupMapper,
}
}
@Override
@Override
public
PageResult
<
ConsFollowupDO
>
getConsFollowupPage
(
ConsFollowupQueryVO
query
,
PageVO
page
)
{
public
PageResult
<
ConsFollowupBackVO
>
getConsFollowupPage
(
ConsFollowupQueryVO
query
,
PageVO
page
)
{
return
consFollowupMapper
.
selectPage
(
page
,
query
);
long
total
=
consFollowupMapper
.
myCount
(
query
);
log
.
warn
(
I18nMessage
.
getLang
().
toString
());
int
start
=
(
page
.
getPage
()
-
1
)
*
page
.
getRows
();
int
size
=
page
.
getRows
();
List
<
ConsFollowupBackVO
>
consBackVOS
=
consFollowupMapper
.
myPageList
(
start
,
size
,
query
);
return
new
PageResult
<>(
consBackVOS
,
total
,
size
,
page
.
getPage
(),
(
total
+
size
-
1
)
/
size
);
}
}
@Override
@Override
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/consFollowup/ConsFollowupBackVO.java
View file @
45b054a5
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
consFollowup
;
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
consFollowup
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.*
;
import
lombok.*
;
import
java.util.*
;
import
java.util.*
;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.*
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
/**
/**
* 操作跟进 Response VO
* 操作跟进 Response VO
* @author jayden
*
*/
* @author jayden
*/
@Data
@Data
@ApiModel
(
"管理后台 - 操作跟进 Response VO"
)
@ApiModel
(
"管理后台 - 操作跟进 Response VO"
)
public
class
ConsFollowupBackVO
{
public
class
ConsFollowupBackVO
{
...
@@ -24,10 +30,18 @@ public class ConsFollowupBackVO {
...
@@ -24,10 +30,18 @@ public class ConsFollowupBackVO {
private
Long
consId
;
private
Long
consId
;
@ExcelProperty
(
""
)
@ExcelProperty
(
""
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@JsonFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
""
,
required
=
true
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
value
=
"创建人"
)
private
String
creatorName
;
@ApiModelProperty
(
value
=
"修改人"
)
private
String
updaterName
;
@JsonFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
private
Date
updateTime
;
@ExcelProperty
(
"跟进编号,编号规则:CF+年份+6位序列号 例如CF25000001"
)
@ExcelProperty
(
"跟进编号,编号规则:CF+年份+6位序列号 例如CF25000001"
)
@ApiModelProperty
(
value
=
"跟进编号,编号规则:CF+年份+6位序列号 例如CF25000001"
)
@ApiModelProperty
(
value
=
"跟进编号,编号规则:CF+年份+6位序列号 例如CF25000001"
)
private
String
followNumber
;
private
String
followNumber
;
...
@@ -42,14 +56,15 @@ public class ConsFollowupBackVO {
...
@@ -42,14 +56,15 @@ public class ConsFollowupBackVO {
@ExcelProperty
(
"跟进时间"
)
@ExcelProperty
(
"跟进时间"
)
@ApiModelProperty
(
value
=
"跟进时间"
)
@ApiModelProperty
(
value
=
"跟进时间"
)
private
Long
followTime
;
@JsonFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
private
Date
followTime
;
@ExcelProperty
(
"跟进人"
)
@ExcelProperty
(
"跟进人"
)
@ApiModelProperty
(
value
=
"跟进人"
)
@ApiModelProperty
(
value
=
"跟进人"
)
private
Long
followUserId
;
private
Long
followUserId
;
@ExcelProperty
(
"下次跟进时间"
)
@ExcelProperty
(
"下次跟进时间"
)
@
DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@
JsonFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
@ApiModelProperty
(
value
=
"下次跟进时间"
)
@ApiModelProperty
(
value
=
"下次跟进时间"
)
private
Date
nextFollowTime
;
private
Date
nextFollowTime
;
...
@@ -57,4 +72,20 @@ public class ConsFollowupBackVO {
...
@@ -57,4 +72,20 @@ public class ConsFollowupBackVO {
@ApiModelProperty
(
value
=
"下次跟进内容"
)
@ApiModelProperty
(
value
=
"下次跟进内容"
)
private
String
nextFollowContent
;
private
String
nextFollowContent
;
@ApiModelProperty
(
value
=
"客户名称"
)
private
String
customerName
;
@ApiModelProperty
(
value
=
"客户编号"
)
private
String
customerNumber
;
@ApiModelProperty
(
value
=
"跟进人名称"
)
private
String
followUserName
;
@ApiModelProperty
(
value
=
"包裹编号"
)
private
String
consNum
;
/**
* 文件
*/
private
List
<
String
>
exceptionUrls
;
}
}
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/consFollowup/ConsFollowupBaseVO.java
View file @
45b054a5
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
consFollowup
;
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
consFollowup
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.*
;
import
lombok.*
;
import
java.util.*
;
import
java.util.*
;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.*
;
import
javax.validation.constraints.*
;
import
javax.validation.constraints.*
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY
_HOUR_MINUTE_SECOND
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY
;
/**
/**
* 操作跟进 Base VO,提供给添加、修改、详细的子 VO 使用
* 操作跟进 Base VO,提供给添加、修改、详细的子 VO 使用
...
@@ -29,16 +30,28 @@ public class ConsFollowupBaseVO {
...
@@ -29,16 +30,28 @@ public class ConsFollowupBaseVO {
private
String
followContent
;
private
String
followContent
;
@ApiModelProperty
(
value
=
"跟进时间"
)
@ApiModelProperty
(
value
=
"跟进时间"
)
private
Long
followTime
;
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
@JsonFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
private
Date
followTime
;
@ApiModelProperty
(
value
=
"跟进人"
)
@ApiModelProperty
(
value
=
"跟进人"
)
private
Long
followUserId
;
private
Long
followUserId
;
@ApiModelProperty
(
value
=
"下次跟进时间"
)
@ApiModelProperty
(
value
=
"下次跟进时间"
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
@JsonFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY
)
private
Date
nextFollowTime
;
private
Date
nextFollowTime
;
@ApiModelProperty
(
value
=
"下次跟进内容"
)
@ApiModelProperty
(
value
=
"下次跟进内容"
)
private
String
nextFollowContent
;
private
String
nextFollowContent
;
/**
* 文件
*/
private
List
<
String
>
exceptionUrls
;
/**
* 文件业务类型,来自于字典表 cons_media_business_type
*/
private
Integer
mediaBusinessType
;
}
}
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/consFollowup/ConsFollowupQueryVO.java
View file @
45b054a5
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
consFollowup
;
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
consFollowup
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.*
;
import
lombok.*
;
import
java.util.*
;
import
java.util.*
;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.*
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.format.annotation.DateTimeFormat
;
...
@@ -12,14 +15,17 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
...
@@ -12,14 +15,17 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@ApiModel
(
"管理后台 - 操作跟进查询 VO"
)
@ApiModel
(
"管理后台 - 操作跟进查询 VO"
)
public
class
ConsFollowupQueryVO
{
public
class
ConsFollowupQueryVO
{
@ApiModelProperty
(
value
=
"id"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"包裹ID"
)
@ApiModelProperty
(
value
=
"包裹ID"
)
private
Long
consId
;
private
Long
consId
;
@
DateTime
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@
Json
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"开始"
)
@ApiModelProperty
(
value
=
"开始"
)
private
Date
beginCreateTime
;
private
Date
beginCreateTime
;
@
DateTime
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@
Json
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"结束"
)
@ApiModelProperty
(
value
=
"结束"
)
private
Date
endCreateTime
;
private
Date
endCreateTime
;
...
@@ -41,15 +47,29 @@ public class ConsFollowupQueryVO {
...
@@ -41,15 +47,29 @@ public class ConsFollowupQueryVO {
@ApiModelProperty
(
value
=
"跟进人"
)
@ApiModelProperty
(
value
=
"跟进人"
)
private
Long
followUserId
;
private
Long
followUserId
;
@
DateTime
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@
Json
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"开始下次跟进时间"
)
@ApiModelProperty
(
value
=
"开始下次跟进时间"
)
private
Date
beginNextFollowTime
;
private
Date
beginNextFollowTime
;
@
DateTime
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@
Json
Format
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"结束下次跟进时间"
)
@ApiModelProperty
(
value
=
"结束下次跟进时间"
)
private
Date
endNextFollowTime
;
private
Date
endNextFollowTime
;
@ApiModelProperty
(
value
=
"下次跟进内容"
)
@ApiModelProperty
(
value
=
"下次跟进内容"
)
private
String
nextFollowContent
;
private
String
nextFollowContent
;
@ApiModelProperty
(
value
=
"包裹编号"
)
private
String
consNum
;
@ApiModelProperty
(
value
=
"联系人手机号"
)
private
String
relationPhone
;
@ApiModelProperty
(
value
=
"状态列表"
)
private
List
<
Integer
>
statusList
;
@ApiModelProperty
(
value
=
"创建人"
)
private
String
creator
;
@ApiModelProperty
(
value
=
"客户"
)
private
String
customerName
;
}
}
yudao-module-order/yudao-module-order-core/src/main/resources/mapper/cons/ConsFollowupMapper.xml
0 → 100644
View file @
45b054a5
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.iocoder.yudao.module.order.dal.mysql.consFollowup.ConsFollowupMapper"
>
<select
id=
"myCount"
resultType=
"java.lang.Long"
>
select count(1)
FROM ecw_cons_followup ecf
LEFT JOIN ecw_cons cons on cons.id = ecf.cons_id
left join ecw_customer ec on ec.id = cons.customer_id
left join system_user csu on csu.id = ecf.creator
left join system_user usu on usu.id = ecf.updater
left join system_user fsu on fsu.id = ecf.follow_user_id
left join ecw_customer_contacts cc on cc.id = ec.id
<include
refid=
"myQuery"
/>
</select>
<select
id=
"myPageList"
resultType=
"cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupBackVO"
parameterType=
"cn.iocoder.yudao.module.order.vo.consFollowup.ConsFollowupQueryVO"
>
SELECT ecf.*,
cons.cons_num as consNum,
ec.name as customer_name,
ec.number as customer_number,
csu.nickname as creator_name,
usu.nickname as updater_name,
fsu.nickname as followUserName,
cc.phone_new as relation_phone
FROM ecw_cons_followup ecf
LEFT JOIN ecw_cons cons on cons.id = ecf.cons_id
left join ecw_customer ec on ec.id = cons.customer_id
left join system_user csu on csu.id = ecf.creator
left join system_user usu on usu.id = ecf.updater
left join system_user fsu on fsu.id = ecf.follow_user_id
left join ecw_customer_contacts cc on cc.id = ec.id
WHERE ecf.deleted = 0
<include
refid=
"myQuery"
/>
order by ecf.create_time desc
limit #{start}, #{size}
</select>
<sql
id=
"myQuery"
>
<if
test=
"query.statusList != null and query.statusList.size() > 0"
>
AND ecf.`status` IN
<foreach
item=
'item'
collection=
'query.statusList'
open=
'('
close=
')'
separator=
','
>
#{item}
</foreach>
</if>
<if
test=
"query.id != null and query.id != '' "
>
AND ecf.id = #{query.id}
</if>
<if
test=
"query.consNum != null and query.consNum != '' "
>
AND cons.consNum like concat("%",concat(#{query.consNum},"%"))
</if>
<if
test=
"query.customerName != null and query.customerName != '' "
>
AND (ec.number like concat("%",concat(#{query.customerName},"%"))
or ec.name like concat("%",concat(#{query.customerName},"%")))
</if>
<if
test=
"query.relationPhone != null and query.relationPhone != '' "
>
AND cc.phone_new like concat("%",concat(#{query.relationPhone},"%"))
</if>
/*跟进时间*/
<if
test=
"query.beginFollowTime != null and query.endFollowTime != null "
>
AND ecf.follow_time between #{query.beginFollowTime} and #{query.endFollowTime}
</if>
<if
test=
"query.beginNextFollowTime != null and query.endNextFollowTime != null "
>
AND ecf.next_follow_time between #{query.beginNextFollowTime} and #{query.endNextFollowTime}
</if>
<if
test=
"query.beginCreateTime != null and query.endCreateTime != null "
>
AND ecf.create_time between #{query.beginCreateTime} and #{query.endCreateTime}
</if>
<if
test=
"query.followUserId != null and query.followUserId != '' "
>
AND ecf.follow_user_id = #{query.followUserId}
</if>
<if
test=
"query.creator != null and query.creator != '' "
>
AND ecf.creator = #{query.creator}
</if>
</sql>
</mapper>
yudao-module-order/yudao-module-order-rest/src/main/java/cn/iocoder/yudao/module/order/controller/admin/consFollowup/ConsFollowupController.java
View file @
45b054a5
...
@@ -69,8 +69,7 @@ public class ConsFollowupController {
...
@@ -69,8 +69,7 @@ public class ConsFollowupController {
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@PreAuthorize
(
"@ss.hasPermission('ecw:cons-followup:query')"
)
@PreAuthorize
(
"@ss.hasPermission('ecw:cons-followup:query')"
)
public
CommonResult
<
ConsFollowupBackVO
>
getConsFollowup
(
@RequestParam
(
"id"
)
Long
id
)
{
public
CommonResult
<
ConsFollowupBackVO
>
getConsFollowup
(
@RequestParam
(
"id"
)
Long
id
)
{
ConsFollowupDO
consFollowup
=
consFollowupService
.
getConsFollowup
(
id
);
return
success
(
consFollowupService
.
getConsFollowup
(
id
));
return
success
(
ConsFollowupConvert
.
INSTANCE
.
convert
(
consFollowup
));
}
}
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
...
@@ -86,8 +85,7 @@ public class ConsFollowupController {
...
@@ -86,8 +85,7 @@ public class ConsFollowupController {
@ApiOperation
(
"获得操作跟进分页"
)
@ApiOperation
(
"获得操作跟进分页"
)
@PreAuthorize
(
"@ss.hasPermission('ecw:cons-followup:query')"
)
@PreAuthorize
(
"@ss.hasPermission('ecw:cons-followup:query')"
)
public
CommonResult
<
PageResult
<
ConsFollowupBackVO
>>
getConsFollowupPage
(
@Valid
ConsFollowupQueryVO
query
,
PageVO
page
)
{
public
CommonResult
<
PageResult
<
ConsFollowupBackVO
>>
getConsFollowupPage
(
@Valid
ConsFollowupQueryVO
query
,
PageVO
page
)
{
PageResult
<
ConsFollowupDO
>
pageResult
=
consFollowupService
.
getConsFollowupPage
(
query
,
page
);
return
success
(
consFollowupService
.
getConsFollowupPage
(
query
,
page
));
return
success
(
ConsFollowupConvert
.
INSTANCE
.
convertPage
(
pageResult
));
}
}
@GetMapping
(
"/export-excel"
)
@GetMapping
(
"/export-excel"
)
...
...
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