Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
ms-data-circulation-portal-service
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
ad94ff99
authored
2024-12-30 19:07:40 +0800
by
肖初晴
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
【DAOP-1.0】企业认证
【功能点】变更功能开发
1 parent
6fa656c9
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
255 additions
and
9 deletions
src/main/java/com/csbr/qingcloud/portal/domain/vo/ChangeInfoVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/CompareResult.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseRSVO.java
src/main/java/com/csbr/qingcloud/portal/service/EnterpriseChangeApproveService.java
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseChangeApproveServiceImpl.java
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseServiceImpl.java
src/main/java/com/csbr/qingcloud/portal/util/ObjectUtil.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/ChangeInfoVO.java
0 → 100644
View file @
ad94ff9
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
csbr.cloud.entity.domain.base.vo.CsbrBaseVO
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* 变更信息视图对象类
*
* @author xiaocq
* @date 2024-12-30
*/
@Data
public
class
ChangeInfoVO
extends
CsbrBaseVO
{
@Schema
(
description
=
"名称"
)
private
String
name
;
@Schema
(
description
=
"日期"
)
private
String
date
;
@Schema
(
description
=
"变更前"
)
private
String
before
;
@Schema
(
description
=
"变更后"
)
private
String
after
;
}
src/main/java/com/csbr/qingcloud/portal/domain/vo/CompareResult.java
0 → 100644
View file @
ad94ff9
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
lombok.Data
;
/** 对比对象 */
@Data
public
class
CompareResult
{
/** 字段名 */
private
String
fieldName
;
/** 旧值 */
private
Object
oldValue
;
/** 新值 */
private
Object
newValue
;
/** 字段中文名 */
private
String
fieldComment
;
}
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseRSVO.java
View file @
ad94ff9
...
...
@@ -6,6 +6,7 @@ import lombok.Data;
import
com.csbr.cloud.workflow.domain.vo.appove.BizApproveVO
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* @program: D:/git/ms-data-circulation-portal-service
...
...
@@ -186,6 +187,9 @@ public class EnterpriseRSVO {
@Schema
(
description
=
"审批信息"
)
private
BizApproveVO
approveVO
;
@Schema
(
description
=
"变更信息列表"
)
private
List
<
ChangeInfoVO
>
changeList
;
/******** 子对象 *****/
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/EnterpriseChangeApproveService.java
View file @
ad94ff9
...
...
@@ -2,6 +2,8 @@ package com.csbr.qingcloud.portal.service;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.qingcloud.portal.domain.vo.ChangeApproveVO
;
import
com.csbr.qingcloud.portal.domain.vo.ChangeInfoVO
;
import
java.util.List
;
/**
* @description: 供应商商品变更
...
...
@@ -14,4 +16,6 @@ public interface EnterpriseChangeApproveService {
ChangeApproveVO
changeDetail
(
String
guid
);
void
changeUpdate
(
BizCallbackDTO
dto
);
List
<
ChangeInfoVO
>
getChange
(
String
tenantName
);
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseChangeApproveServiceImpl.java
View file @
ad94ff9
...
...
@@ -8,10 +8,7 @@ import com.csbr.cloud.common.exception.CsbrSystemException;
import
com.csbr.cloud.common.util.CommonUtil
;
import
com.csbr.cloud.common.util.CsbrBeanUtil
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.qingcloud.portal.domain.vo.ChangeApproveVO
;
import
com.csbr.qingcloud.portal.domain.vo.EnterpriseRQVO
;
import
com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO
;
import
com.csbr.qingcloud.portal.domain.vo.TenantRQVO
;
import
com.csbr.qingcloud.portal.domain.vo.*
;
import
com.csbr.qingcloud.portal.feign.PersonelFeign
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseChangeApprove
;
...
...
@@ -19,11 +16,16 @@ import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseChangeApproveServic
import
com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService
;
import
com.csbr.qingcloud.portal.service.EnterpriseChangeApproveService
;
import
com.csbr.qingcloud.portal.service.EnterpriseService
;
import
com.csbr.qingcloud.portal.util.ObjectUtil
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
io.seata.common.util.DateUtil
;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -34,6 +36,7 @@ import java.util.Map;
* @create: 2024-08-05
**/
@Component
@Slf4j
public
class
EnterpriseChangeApproveServiceImpl
implements
EnterpriseChangeApproveService
{
@Resource
...
...
@@ -51,6 +54,91 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
@Resource
private
PersonelFeign
personelFeign
;
/** 生成变更信息列表 */
@Override
public
List
<
ChangeInfoVO
>
getChange
(
String
tenantName
){
LambdaQueryWrapper
<
MfEnterpriseChangeApprove
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getTenantName
,
tenantName
);
queryWrapper
.
orderByDesc
(
MfEnterpriseChangeApprove:
:
getCreateTime
);
List
<
MfEnterpriseChangeApprove
>
approveList
=
mfEnterpriseChangeApproveService
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
approveList
)){
return
new
ArrayList
<>();
}
List
<
ChangeApproveBean
>
beanList
=
getChangeBeanList
(
approveList
);
try
{
return
getChangeList
(
beanList
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
return
new
ArrayList
<>();
}
public
static
void
test
(){
List
<
ChangeApproveBean
>
beanList
=
new
ArrayList
<>();
ChangeApproveBean
bean
=
new
ChangeApproveBean
();
MfEnterprise
oldBean
=
new
MfEnterprise
();
oldBean
.
setBankTaxNo
(
"999"
);
oldBean
.
setTenantName
(
"武汉小米"
);
oldBean
.
setCreateTime
(
new
Date
());
MfEnterprise
newBean
=
new
MfEnterprise
();
newBean
.
setBankTaxNo
(
"666"
);
newBean
.
setTenantName
(
"武汉大米"
);
newBean
.
setCreateTime
(
new
Date
());
bean
.
oldBean
=
oldBean
;
bean
.
newBean
=
newBean
;
beanList
.
add
(
bean
);
List
<
ChangeInfoVO
>
list
=
new
ArrayList
<>();
try
{
list
=
getChangeList
(
beanList
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
log
.
info
(
"变更内容:{}"
,
JSON
.
toJSONString
(
list
));
}
/** 计算变更信息 */
public
static
List
<
ChangeInfoVO
>
getChangeList
(
List
<
ChangeApproveBean
>
beanList
)
throws
IllegalAccessException
{
List
<
ChangeInfoVO
>
list
=
new
ArrayList
<>();
//循环对比每组记录生来变更内容
for
(
ChangeApproveBean
item
:
beanList
){
List
<
CompareResult
>
diffList
=
ObjectUtil
.
getBeanDiff
(
item
.
oldBean
,
item
.
newBean
);
for
(
CompareResult
diffItem
:
diffList
){
ChangeInfoVO
vo
=
new
ChangeInfoVO
();
vo
.
setName
(
diffItem
.
getFieldComment
());
vo
.
setDate
(
DateUtil
.
formatDate
(
item
.
oldBean
.
getCreateTime
(),
"yyyy-MM-dd"
));
vo
.
setBefore
(
diffItem
.
getOldValue
().
toString
());
vo
.
setAfter
(
diffItem
.
getNewValue
().
toString
());
list
.
add
(
vo
);
}
}
return
list
;
}
/** 准备变更对比实体 */
private
List
<
ChangeApproveBean
>
getChangeBeanList
(
List
<
MfEnterpriseChangeApprove
>
list
){
List
<
ChangeApproveBean
>
beanList
=
new
ArrayList
<>();
for
(
MfEnterpriseChangeApprove
item
:
list
){
if
(
"1"
.
equals
(
item
.
getDataType
())){
ChangeApproveBean
bean
=
new
ChangeApproveBean
();
bean
.
oldBean
=
csbrBeanUtil
.
convert
(
item
,
MfEnterprise
.
class
);
beanList
.
add
(
bean
);
}
if
(
"2"
.
equals
(
item
.
getDataType
())){
ChangeApproveBean
bean
=
beanList
.
get
(
beanList
.
size
()
-
1
);
bean
.
newBean
=
csbrBeanUtil
.
convert
(
item
,
MfEnterprise
.
class
);
}
}
return
beanList
;
}
public
static
class
ChangeApproveBean
{
public
MfEnterprise
oldBean
;
public
MfEnterprise
newBean
;
}
/** 保存变更数据 */
@Override
...
...
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseServiceImpl.java
View file @
ad94ff9
...
...
@@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.csbr.cloud.common.enums.SystemError
;
import
com.csbr.cloud.common.enums.WorkFlowBizEnum
;
import
com.csbr.qingcloud.portal.domain.vo.
TenantRQVO
;
import
com.csbr.qingcloud.portal.domain.vo.
*
;
import
com.csbr.qingcloud.portal.feign.PersonelFeign
;
import
com.csbr.qingcloud.portal.service.EnterpriseChangeApproveService
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
com.csbr.cloud.common.exception.CsbrSystemException
;
import
com.csbr.cloud.common.util.CommonUtil
;
...
...
@@ -17,9 +18,6 @@ import csbr.cloud.entity.domain.base.vo.PageListVO;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.qingcloud.portal.domain.vo.EnterpriseQueryVO
;
import
com.csbr.qingcloud.portal.domain.vo.EnterpriseRQVO
;
import
com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService
;
import
com.csbr.qingcloud.portal.service.EnterpriseService
;
...
...
@@ -64,6 +62,9 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
@Resource
private
PersonelFeign
personelFeign
;
@Resource
private
EnterpriseChangeApproveService
enterpriseChangeApproveService
;
/**
* 企业信息分页查询
* @author xcq
...
...
@@ -105,9 +106,14 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
if
(
entity
==
null
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_NOT_EXISTS
,
messageSourceUtil
.
notExistsToSelectMessage
(
String
.
format
(
"获取%s详情数据"
,
FUNCTION_NAME
)));
}
return
convertToVO
(
entity
);
EnterpriseRSVO
vo
=
convertToVO
(
entity
);
//生成变更信息
vo
.
setChangeList
(
enterpriseChangeApproveService
.
getChange
(
entity
.
getTenantName
()));
return
vo
;
}
/**
* 企业信息数据新增
* @author xcq
...
...
src/main/java/com/csbr/qingcloud/portal/util/ObjectUtil.java
0 → 100644
View file @
ad94ff9
package
com
.
csbr
.
qingcloud
.
portal
.
util
;
import
com.csbr.qingcloud.portal.domain.vo.CompareResult
;
import
jdk.jfr.Name
;
import
java.lang.reflect.Field
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/** 对象工具 */
public
class
ObjectUtil
{
/** 对比两个对象 */
public
static
List
<
CompareResult
>
getBeanDiff
(
Object
oldObj
,
Object
newObj
)
throws
IllegalAccessException
{
List
<
CompareResult
>
list
=
new
ArrayList
<>();
//获取对象的class
Class
<?>
clazz1
=
oldObj
.
getClass
();
Class
<?>
clazz2
=
newObj
.
getClass
();
//获取对象的属性列表
Field
[]
field1
=
clazz1
.
getDeclaredFields
();
Field
[]
field2
=
clazz2
.
getDeclaredFields
();
//遍历属性列表field1
for
(
int
i
=
0
;
i
<
field1
.
length
;
i
++)
{
//遍历属性列表field2
for
(
int
j
=
0
;
j
<
field2
.
length
;
j
++)
{
CompareResult
r
=
getCompareResult
(
field1
[
i
],
field2
[
j
],
oldObj
,
newObj
);
if
(
r
==
null
)
{
continue
;
}
list
.
add
(
r
);
break
;
}
}
return
list
;
}
/** 对比两个字段 */
public
static
CompareResult
getCompareResult
(
Field
oldField
,
Field
newField
,
Object
oldObj
,
Object
newObj
)
throws
IllegalAccessException
{
//字段名称不同-返回空
if
(!
oldField
.
getName
().
equals
(
newField
.
getName
()))
{
return
null
;
}
oldField
.
setAccessible
(
true
);
newField
.
setAccessible
(
true
);
//值相同-返回空
if
(
compareTwo
(
oldField
.
get
(
oldObj
),
newField
.
get
(
newObj
)))
{
return
null
;
}
CompareResult
r
=
new
CompareResult
();
r
.
setFieldName
(
oldField
.
getName
());
r
.
setOldValue
(
oldField
.
get
(
oldObj
));
r
.
setNewValue
(
newField
.
get
(
newObj
));
try
{
r
.
setFieldComment
(
oldField
.
getAnnotation
(
Name
.
class
)
==
null
?
""
:
oldField
.
getAnnotation
(
Name
.
class
).
value
());
}
catch
(
Exception
e
)
{
r
.
setFieldComment
(
""
);
}
if
(
oldField
.
getType
()
==
Date
.
class
)
{
r
.
setOldValue
(
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
((
Date
)
oldField
.
get
(
oldObj
)));
r
.
setNewValue
(
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
((
Date
)
newField
.
get
(
newObj
)));
}
return
r
;
}
/** 对比两个数据是否内容相同 */
public
static
boolean
compareTwo
(
Object
object1
,
Object
object2
)
{
if
(
object1
==
null
&&
object2
==
null
)
{
return
true
;
}
if
(
object1
!=
null
&&
object2
==
null
)
{
return
false
;
}
if
(
object2
!=
null
&&
object1
==
null
)
{
return
false
;
}
if
(
object1
.
equals
(
object2
))
{
return
true
;
}
if
(
"BigDecimal"
.
equals
(
object2
.
getClass
().
getSimpleName
())){
BigDecimal
obj1
=
(
BigDecimal
)
object1
;
BigDecimal
obj2
=
(
BigDecimal
)
object2
;
if
(
obj1
.
compareTo
(
obj2
)
==
0
){
return
true
;
}
}
String
obj1
=
object1
.
toString
().
replace
(
"["
,
""
).
replace
(
"]"
,
""
).
replace
(
"\""
,
""
).
replace
(
" "
,
""
);
String
obj2
=
object2
.
toString
().
replace
(
"["
,
""
).
replace
(
"]"
,
""
).
replace
(
"\""
,
""
).
replace
(
" "
,
""
);
if
(
obj1
.
equals
(
obj2
))
{
return
true
;
}
return
false
;
}
}
Write
Preview
Styling with
Markdown
is supported
Attach a file
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 post a comment