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
89666749
authored
2025-03-18 11:16:01 +0800
by
郭燕华
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
2 parents
40d7db6c
137854e9
Show whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
1321 additions
and
280 deletions
src/main/java/com/csbr/qingcloud/portal/controller/DemandController.java
src/main/java/com/csbr/qingcloud/portal/controller/EnterpriseController.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/BoroughPOJO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/ChangeApproveVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/DemandRQVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/DemandRSVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/DemandUpdateStateVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseApproveRSVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseRQVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseRSVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/ProcessOrderProcessDtlRSVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/TenantLicRQVO.java
src/main/java/com/csbr/qingcloud/portal/domain/vo/TenantRQVO.java
src/main/java/com/csbr/qingcloud/portal/feign/ConfigureFeign.java
src/main/java/com/csbr/qingcloud/portal/feign/DataProcessBasicFeign.java
src/main/java/com/csbr/qingcloud/portal/feign/PersonelFeign.java
src/main/java/com/csbr/qingcloud/portal/feign/WorkflowFeign.java
src/main/java/com/csbr/qingcloud/portal/mybatis/entity/MfDemand.java
src/main/java/com/csbr/qingcloud/portal/mybatis/entity/MfEnterprise.java
src/main/java/com/csbr/qingcloud/portal/mybatis/entity/MfEnterpriseChangeApprove.java
src/main/java/com/csbr/qingcloud/portal/mybatis/service/impl/MfEnterpriseServiceImpl.java
src/main/java/com/csbr/qingcloud/portal/service/DemandService.java
src/main/java/com/csbr/qingcloud/portal/service/EnterpriseChangeApproveService.java
src/main/java/com/csbr/qingcloud/portal/service/EnterpriseService.java
src/main/java/com/csbr/qingcloud/portal/service/impl/DemandServiceImpl.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/service/impl/ServicerMaintainServiceImpl.java
src/main/java/com/csbr/qingcloud/portal/util/ChangeInfoUtil.java
src/main/java/com/csbr/qingcloud/portal/util/DateUtil.java
src/main/java/com/csbr/qingcloud/portal/util/InvokeUtil.java
src/main/java/com/csbr/qingcloud/portal/util/ObjectUtil.java
src/main/java/com/csbr/qingcloud/portal/util/ZQConfig.java
src/main/resources/release/bootstrap.yml
src/main/resources/release/lt/bootstrap.yml
src/main/java/com/csbr/qingcloud/portal/controller/DemandController.java
View file @
8966674
...
...
@@ -89,6 +89,14 @@ public class DemandController {
return
CommonRes
.
success
(
true
);
}
@PostMapping
(
"/cross-flow-call-back"
)
@SystemLog
(
value
=
"数据需求-流程结束后进行业务回调(跨服务审批)"
)
@Operation
(
summary
=
"数据需求-流程结束后进行业务回调(跨服务审批)"
,
hidden
=
true
)
public
CommonRes
<
Boolean
>
crossFlowCallBack
(
@RequestBody
@Valid
BizCallbackDTO
dto
)
{
demandService
.
crossFlowCallBack
(
dto
);
return
CommonRes
.
success
(
true
);
}
@PostMapping
(
"/last-approve"
)
@SystemLog
(
value
=
"数据需求审批"
)
@Operation
(
summary
=
"数据需求审批-最后一个节点时调用"
)
...
...
@@ -97,6 +105,13 @@ public class DemandController {
return
CommonRes
.
success
(
vo
);
}
@PostMapping
(
"/process-order-list"
)
@Operation
(
summary
=
"查询加工单列表"
)
public
CommonRes
<
List
<
ProcessOrderProcessDtlRSVO
>>
listByProcessOrderNo
()
{
List
<
ProcessOrderProcessDtlRSVO
>
pageVO
=
demandService
.
listByProcessOrderNo
();
return
CommonRes
.
success
(
pageVO
);
}
//endregion
}
...
...
src/main/java/com/csbr/qingcloud/portal/controller/EnterpriseController.java
View file @
8966674
...
...
@@ -3,6 +3,7 @@ package com.csbr.qingcloud.portal.controller;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.csbr.cloud.common.response.CommonRes
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowQueryDTO
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO
;
import
com.csbr.qingcloud.portal.domain.vo.*
;
import
com.csbr.qingcloud.portal.service.EnterpriseChangeApproveService
;
...
...
@@ -70,6 +71,14 @@ public class EnterpriseController {
return
CommonRes
.
success
(
pageVO
);
}
@PostMapping
(
"/flow/page-list"
)
@SystemLog
(
value
=
"企业信息-分页(调用流程)"
)
@Operation
(
summary
=
"企业信息-分页(调用流程)"
)
public
CommonRes
<
PageListVO
<
EnterpriseApproveRSVO
>>
flowPageList
(
@RequestBody
@Valid
FlowQueryDTO
dto
)
{
PageListVO
<
EnterpriseApproveRSVO
>
pageVO
=
enterpriseService
.
flowPageList
(
dto
);
return
CommonRes
.
success
(
pageVO
);
}
@GetMapping
(
"/detail"
)
@SystemLog
(
value
=
"企业信息-详情"
)
@Operation
(
summary
=
"企业信息-详情"
,
...
...
@@ -79,6 +88,15 @@ public class EnterpriseController {
return
CommonRes
.
success
(
vo
);
}
@GetMapping
(
"/detail-by-logonUser"
)
@SystemLog
(
value
=
"企业信息-根据登陆账号查询详情"
)
@Operation
(
summary
=
"企业信息-根据登陆账号查询详情"
,
parameters
=
{
@Parameter
(
name
=
"logonUser"
,
description
=
"登陆账号"
,
required
=
true
)}
)
public
CommonRes
<
EnterpriseRSVO
>
getEnterpriseDetailByLogonUser
(
@RequestParam
String
logonUser
)
{
EnterpriseRSVO
vo
=
enterpriseService
.
getEnterpriseDetailByLogonUser
(
logonUser
);
return
CommonRes
.
success
(
vo
);
}
@GetMapping
(
"/detail-by-name"
)
@SystemLog
(
value
=
"按名称查企业信息详情"
)
@Operation
(
summary
=
"按名称查企业信息详情"
,
...
...
@@ -96,12 +114,12 @@ public class EnterpriseController {
return
CommonRes
.
success
(
true
);
}
@PostMapping
(
"/
last-approve
"
)
@SystemLog
(
value
=
"企业
认证审批
"
)
@Operation
(
summary
=
"企业
认证审批-最后一个节点时调用"
)
public
CommonRes
<
Boolean
>
lastApprove
(
@RequestBody
FlowUpdateState
DTO
dto
)
{
Boolean
vo
=
enterpriseService
.
lastApprove
(
dto
);
return
CommonRes
.
success
(
vo
);
@PostMapping
(
"/
cross-flow-call-back
"
)
@SystemLog
(
value
=
"企业
信息-流程结束后进行业务回调(跨服务审批)
"
)
@Operation
(
summary
=
"企业
信息-流程结束后进行业务回调(跨服务审批)"
,
hidden
=
true
)
public
CommonRes
<
Boolean
>
crossFlowCallBack
(
@RequestBody
@Valid
BizCallback
DTO
dto
)
{
enterpriseService
.
crossFlowCallBack
(
dto
);
return
CommonRes
.
success
(
true
);
}
@PostMapping
(
"/move-old-data"
)
...
...
@@ -135,6 +153,14 @@ public class EnterpriseController {
return
CommonRes
.
success
(
true
);
}
@PostMapping
(
"/change/cross-flow-call-back"
)
@SystemLog
(
value
=
"变更审批-最终更新(跨平台)"
)
@Operation
(
summary
=
"变更审批-最终更新(跨平台)"
)
public
CommonRes
<
Boolean
>
changeCrossFlowCallBack
(
@RequestBody
BizCallbackDTO
dto
)
{
enterpriseChangeApproveService
.
crossFlowCallBack
(
dto
);
return
CommonRes
.
success
(
true
);
}
@PostMapping
(
"/change/save"
)
@SystemLog
(
value
=
"变更申请-保存数据"
)
@Operation
(
summary
=
"变更申请-保存数据"
)
...
...
@@ -151,6 +177,22 @@ public class EnterpriseController {
return
CommonRes
.
success
(
enterpriseChangeApproveService
.
changeDetail
(
guid
));
}
@DeleteMapping
(
"/change/delete"
)
@SystemLog
(
value
=
"变更申请-批量删除"
)
@Operation
(
summary
=
"变更申请-批量删除"
)
public
CommonRes
<
Boolean
>
changeRemoveByGuids
(
@RequestBody
List
<
String
>
guids
)
{
enterpriseChangeApproveService
.
removeByGuids
(
guids
);
return
CommonRes
.
success
(
true
);
}
@DeleteMapping
(
"/change/cross-delete"
)
@SystemLog
(
value
=
"变更申请-批量删除(跨平台)"
)
@Operation
(
summary
=
"变更申请-批量删除(跨平台)"
,
hidden
=
true
)
public
CommonRes
<
Boolean
>
crossRemoveByGuids
(
@RequestBody
List
<
String
>
zqBizGuids
)
{
enterpriseChangeApproveService
.
crossRemoveByBizGuid
(
zqBizGuids
);
return
CommonRes
.
success
(
true
);
}
//endregion
}
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/BoroughPOJO.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
lombok.Data
;
/**
* @program: ms-user-scm-service
* @description: 行政区
* @author: yio
* @create: 2021-01-14 15:39
**/
@Data
public
class
BoroughPOJO
{
private
String
code
;
private
String
name
;
private
String
parentId
;
private
String
isPCapital
;
private
String
isDeleted
;
/** 城市等级 (0 一线城市,1 新一线城市,2 二线城市,3 三线城市,4 四线城市,5 五线城市,6 六线城市)*/
private
String
areaLevel
;
}
src/main/java/com/csbr/qingcloud/portal/domain/vo/ChangeApproveVO.java
View file @
8966674
...
...
@@ -55,4 +55,7 @@ public class ChangeApproveVO {
@Schema
(
description
=
"原业务数据明细"
)
private
String
oldBizDataDetailJson
;
private
String
zqName
;
private
String
zqBizGuid
;
}
\ No newline at end of file
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/DemandRQVO.java
View file @
8966674
...
...
@@ -3,6 +3,7 @@ package com.csbr.qingcloud.portal.domain.vo;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
jdk.jfr.Name
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
...
...
@@ -29,6 +30,9 @@ public class DemandRQVO extends FlowRQBaseVO {
@Schema
(
description
=
"需求类型"
)
private
String
requirementType
;
@Schema
(
title
=
"专区名称"
)
private
String
zqName
;
/**
* 需求分类【1新增 2调整】
*/
...
...
@@ -206,6 +210,18 @@ public class DemandRQVO extends FlowRQBaseVO {
/******** 自定义扩展 *****/
@Schema
(
description
=
"合同附件"
)
private
String
contractAttachJson
;
@Schema
(
description
=
"加工单位类型"
)
private
String
processCompanyType
;
@Schema
(
description
=
"加工单位唯一标识"
)
private
String
processCompanyGuid
;
@Schema
(
description
=
"加工单位名称"
)
private
String
processCompanyName
;
/******** 子对象 *****/
}
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/DemandRSVO.java
View file @
8966674
...
...
@@ -168,7 +168,7 @@ public class DemandRSVO {
* 加工单生成时间
*/
@Schema
(
description
=
"加工单生成时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
,
timezone
=
"GMT+8"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
processingGenerateTime
;
/**
...
...
@@ -218,7 +218,7 @@ public class DemandRSVO {
private
String
processCompanyGuid
;
@Schema
(
description
=
"加工单位名称"
)
private
String
pro
ductAccept
Name
;
private
String
pro
cessCompany
Name
;
@Schema
(
description
=
"发起人"
)
private
String
createUserName
;
...
...
@@ -232,6 +232,18 @@ public class DemandRSVO {
@Schema
(
description
=
"加工单编号"
)
private
String
processOrderNo
;
@Schema
(
title
=
"专区名称"
)
private
String
zqName
;
@Schema
(
description
=
"业务名称"
)
private
String
bizName
;
/**
* 跨平台审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)
*/
@Schema
(
title
=
"跨平台审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)"
)
private
String
crossPlatformApproveState
;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/DemandUpdateStateVO.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -32,5 +35,11 @@ public class DemandUpdateStateVO {
@Schema
(
description
=
"产品验收状态【N未开始 A进行中 Y已完成】"
)
private
String
productAcceptState
;
@Schema
(
description
=
"产品验收验收完成时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
acceptFinishTime
;
@Schema
(
description
=
"业务名称"
)
private
String
bizName
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseApproveRSVO.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
com.csbr.cloud.workflow.domain.vo.appove.ApproveVO
;
import
com.csbr.cloud.workflow.domain.vo.appove.BizApproveVO
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息返回参数
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Data
@Schema
(
title
=
"企业信息返回参数"
)
public
class
EnterpriseApproveRSVO
extends
ApproveVO
{
@Schema
(
description
=
"跨平台审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)"
)
private
String
crossPlatformApproveState
;
@Schema
(
description
=
"专区名称"
)
private
String
zqName
;
/******** 子对象 *****/
}
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseRQVO.java
View file @
8966674
...
...
@@ -17,12 +17,17 @@ import java.util.Date;
@Schema
(
title
=
"企业信息新增、修改参数"
)
public
class
EnterpriseRQVO
extends
FlowRQBaseVO
{
@Schema
(
description
=
"会员GUID"
)
private
String
tenantGuid
;
/**
* 公司名称
*/
@Schema
(
description
=
"公司名称"
)
private
String
tenantName
;
@Schema
(
title
=
"专区名称"
)
private
String
zqName
;
/**
* 统一社会信用代码
*/
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/EnterpriseRSVO.java
View file @
8966674
...
...
@@ -24,6 +24,9 @@ public class EnterpriseRSVO {
@Schema
(
description
=
"系统唯一标识"
)
private
String
guid
;
@Schema
(
description
=
"会员GUID"
)
private
String
tenantGuid
;
/**
* 公司名称
*/
...
...
@@ -186,6 +189,15 @@ public class EnterpriseRSVO {
@Schema
(
description
=
"提交时间"
)
private
Date
createTime
;
@Schema
(
title
=
"专区名称"
)
private
String
zqName
;
/**
* 跨平台审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)
*/
@Schema
(
title
=
"跨平台审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)"
)
private
String
crossPlatformApproveState
;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
...
...
src/main/java/com/csbr/qingcloud/portal/domain/vo/ProcessOrderProcessDtlRSVO.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @program:
* @description: 加工单加工明细返回参数
* @author: xup
* @create: 2025-02-10 17:57
**/
@Data
@Schema
(
title
=
"加工单加工明细返回参数"
)
public
class
ProcessOrderProcessDtlRSVO
{
/**
* 系统唯一标识
*/
@Schema
(
description
=
"系统唯一标识"
)
private
String
guid
;
/**
* 会员Guid
*/
@Schema
(
description
=
"会员Guid"
)
private
String
tenantGuid
;
/**
* 加工单Guid
*/
@Schema
(
description
=
"加工单Guid"
)
private
String
processOrderGuid
;
/**
* 加工单号
*/
@Schema
(
description
=
"加工单号"
)
private
String
processOrderNo
;
/**
* 加工单名称
*/
@Schema
(
description
=
"加工单名称"
)
private
String
processOrderName
;
/**
* 加工方式(1 数据服务;2 需求申请)
*/
@Schema
(
description
=
"加工方式(1 数据服务;2 需求申请)"
)
private
Integer
processType
;
/**
* 业务Guid
*/
@Schema
(
description
=
"业务Guid"
)
private
String
bizGuid
;
/**
* 业务名称
*/
@Schema
(
description
=
"业务名称"
)
private
String
bizName
;
/**
* 加工状态(N 未开始;A 进行中;Y 已完成)
*/
@Schema
(
description
=
"加工状态(N 未开始;A 进行中;Y 已完成)"
)
private
String
processState
;
/**
* 加工时间
*/
@Schema
(
description
=
"加工时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
processTime
;
/**
* 交付时间
*/
@Schema
(
description
=
"交付时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
deliverTime
;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
/******** 子对象 *****/
}
src/main/java/com/csbr/qingcloud/portal/domain/vo/TenantLicRQVO.java
0 → 100644
View file @
8966674
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
;
/**
* 企业证照表 视图对象类
*
* @author xiaocq
* @date 2023-12-19
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@Schema
(
name
=
"企业证照表"
)
public
class
TenantLicRQVO
extends
CsbrBaseVO
{
/**
* 企业唯一标识
*/
@Schema
(
description
=
"企业唯一标识"
)
private
String
tenantGuid
;
/**
* 证照类型
*/
@Schema
(
description
=
"证照类型"
)
private
String
licenseType
;
/**
* 图片内容
*/
@Schema
(
description
=
"图片内容"
)
private
String
pictContentJson
;
/********非库表存储属性*****/
/********字典类*****/
/********实体类、用户单选、组织机构单选*****/
/********范围查询*****/
/********自定义扩展*****/
/********子对象*****/
}
src/main/java/com/csbr/qingcloud/portal/domain/vo/TenantRQVO.java
View file @
8966674
...
...
@@ -154,6 +154,9 @@ public class TenantRQVO extends CsbrBaseVO {
@Schema
(
description
=
"token后台赋值"
)
private
String
token
;
@Schema
(
description
=
"业务唯一标识"
)
private
String
bizGuid
;
/********字典类*****/
/********实体类、用户单选、组织机构单选*****/
...
...
@@ -164,6 +167,9 @@ public class TenantRQVO extends CsbrBaseVO {
/********子对象*****/
@Schema
(
description
=
"企业证照列表"
)
private
List
<
TenantLicRQVO
>
tenantLicList
;
@Schema
(
hidden
=
true
,
description
=
"分库标识"
)
private
String
shardingFlag
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/feign/ConfigureFeign.java
View file @
8966674
...
...
@@ -4,6 +4,7 @@ import com.csbr.cloud.common.config.FastCallFeignConfiguration;
import
com.csbr.cloud.common.entity.DictModel
;
import
com.csbr.cloud.common.entity.DictionaryVO
;
import
com.csbr.cloud.common.response.CommonRes
;
import
com.csbr.qingcloud.portal.domain.vo.BoroughPOJO
;
import
com.csbr.qingcloud.portal.domain.vo.RuleDTO
;
import
com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand
;
import
com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty
;
...
...
@@ -43,5 +44,8 @@ public interface ConfigureFeign {
@PostMapping
(
value
=
"/rule/new-code"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
String
>
newCode
(
@RequestBody
RuleDTO
dto
);
@GetMapping
(
value
=
"/borough/get-borough"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
List
<
BoroughPOJO
>>
getBoroughCodeName
();
}
...
...
src/main/java/com/csbr/qingcloud/portal/feign/DataProcessBasicFeign.java
View file @
8966674
...
...
@@ -3,6 +3,7 @@ package com.csbr.qingcloud.portal.feign;
import
com.csbr.cloud.common.config.FastCallFeignConfiguration
;
import
com.csbr.cloud.common.response.CommonRes
;
import
com.csbr.qingcloud.portal.domain.vo.DemandUpdateStateVO
;
import
com.csbr.qingcloud.portal.domain.vo.ProcessOrderProcessDtlRSVO
;
import
com.csbr.qingcloud.portal.domain.vo.ProcessOrderRQVO
;
import
jakarta.validation.Valid
;
import
org.springframework.cloud.openfeign.FeignClient
;
...
...
@@ -18,10 +19,13 @@ import java.util.Map;
@FeignClient
(
value
=
"ms-data-process-basic-service"
,
url
=
"${dataProcessUrl}"
,
configuration
=
FastCallFeignConfiguration
.
class
)
public
interface
DataProcessBasicFeign
{
@PostMapping
(
value
=
"/process-order/save"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
@PostMapping
(
value
=
"/process-order/save
OrUpdate
"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Boolean
>
saveProcessOrder
(
@RequestBody
@Valid
ProcessOrderRQVO
vo
);
@PostMapping
(
value
=
"/process-order-process-dtl/get-order-state"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Map
<
String
,
DemandUpdateStateVO
>>
getOrderState
(
@RequestBody
List
<
String
>
processOrderGuids
);
@PostMapping
(
value
=
"/process-order-process-dtl/process-order-list"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
List
<
ProcessOrderProcessDtlRSVO
>>
processOrderList
(
@RequestBody
List
<
String
>
processOrderGuids
);
}
...
...
src/main/java/com/csbr/qingcloud/portal/feign/PersonelFeign.java
View file @
8966674
...
...
@@ -21,7 +21,10 @@ public interface PersonelFeign {
CommonRes
<
TenantRQVO
>
authTenant
(
@RequestBody
TenantRQVO
vo
);
@PutMapping
(
value
=
"/tenant/update"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Boolean
>
updateTenant
(
@RequestBody
TenantRQVO
vo
);
CommonRes
<
String
>
updateTenant
(
@RequestBody
TenantRQVO
vo
);
@PutMapping
(
value
=
"/tenant/change-update"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Boolean
>
changeUpdate
(
@RequestBody
TenantRQVO
vo
);
@GetMapping
(
value
=
"/tenant/get-all-tenant-guid-name-map"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Map
<
String
,
String
>>
getAllTenantGuidNameMap
();
...
...
src/main/java/com/csbr/qingcloud/portal/feign/WorkflowFeign.java
View file @
8966674
...
...
@@ -2,10 +2,9 @@ package com.csbr.qingcloud.portal.feign;
import
com.csbr.cloud.common.config.FastCallFeignConfiguration
;
import
com.csbr.cloud.common.response.CommonRes
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowQueryDTO
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.qingcloud.portal.domain.vo.UserQueryDTO
;
import
com.csbr.qingcloud.portal.domain.vo.UserVO
;
import
com.csbr.cloud.workflow.domain.vo.appove.ApproveVO
;
import
com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand
;
import
com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
...
...
@@ -13,10 +12,10 @@ import jakarta.validation.Valid;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.http.MediaType
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.bind.annotation.
*
;
import
java.net.URI
;
import
java.util.List
;
import
org.springframework.web.bind.annotation.
RequestBody
;
import
org.springframework.web.bind.annotation.RequestHeader
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
/**
* @author Xiaocq
...
...
@@ -30,5 +29,9 @@ public interface WorkflowFeign {
@RequestMapping
(
value
=
"/work-flow/data/allow-flow-core"
,
method
=
RequestMethod
.
POST
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
Boolean
>
allowFlowCore
(
@RequestBody
FlowUpdateStateDTO
dto
,
@RequestHeader
(
required
=
false
)
MultiValueMap
<
String
,
String
>
headers
);
@HystrixCommand
(
fallbackMethod
=
"CommonUtil.sleepFallback"
,
commandProperties
=
{
@HystrixProperty
(
name
=
"execution.isolation.thread.timeoutInMilliseconds"
,
value
=
"4500"
)})
@RequestMapping
(
value
=
"/work-flow/data/get-flow-list-tenant"
,
method
=
RequestMethod
.
POST
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
,
consumes
=
MediaType
.
APPLICATION_JSON_VALUE
)
CommonRes
<
PageListVO
<
ApproveVO
>>
getFlowListCrossTenant
(
@RequestBody
@Valid
FlowQueryDTO
dto
);
}
...
...
src/main/java/com/csbr/qingcloud/portal/mybatis/entity/MfDemand.java
View file @
8966674
...
...
@@ -221,4 +221,13 @@ public class MfDemand extends BaseShardingDO {
@Name
(
"加工单编号"
)
private
String
processOrderNo
;
@Name
(
"资产Guid"
)
private
String
zqBizGuid
;
@Name
(
"专区名称"
)
private
String
zqName
;
@Name
(
"审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)"
)
private
String
crossPlatformApproveState
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/mybatis/entity/MfEnterprise.java
View file @
8966674
...
...
@@ -22,6 +22,9 @@ import java.util.Date;
@Name
(
"企业信息"
)
public
class
MfEnterprise
extends
BaseDO
{
@Name
(
"会员GUID"
)
private
String
tenantGuid
;
/**
* 公司名称
*/
...
...
@@ -37,7 +40,7 @@ public class MfEnterprise extends BaseDO {
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Name
(
"企业类型
【选择平台字典【公司类型】的选项】
"
)
@Name
(
"企业类型"
)
private
String
tenantType
;
/**
...
...
@@ -49,7 +52,7 @@ public class MfEnterprise extends BaseDO {
/**
* 注册资本【(万元)】
*/
@Name
(
"注册资本
【(万元)】
"
)
@Name
(
"注册资本"
)
private
BigDecimal
registeredCapital
;
/**
...
...
@@ -79,7 +82,7 @@ public class MfEnterprise extends BaseDO {
/**
* 营业期限【1 长期有效;2 自定义】
*/
@Name
(
"营业期限
【1 长期有效;2 自定义】
"
)
@Name
(
"营业期限"
)
private
String
businessLicenseTerm
;
/**
...
...
@@ -102,9 +105,9 @@ public class MfEnterprise extends BaseDO {
private
String
businessLicenseJson
;
/**
*
营业执照
经营范围
* 经营范围
*/
@Name
(
"
营业执照
经营范围"
)
@Name
(
"经营范围"
)
private
String
businessLicenseScope
;
/**
...
...
@@ -169,10 +172,19 @@ public class MfEnterprise extends BaseDO {
@Name
(
"授权委托书"
)
private
String
authorizationLetter
;
@Name
(
"资产Guid"
)
private
String
zqBizGuid
;
@Name
(
"专区名称"
)
private
String
zqName
;
@Name
(
"审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)"
)
private
String
crossPlatformApproveState
;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Name
(
"业务审批状态
【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃;B 变更中 默认 N】
"
)
@Name
(
"业务审批状态"
)
private
String
bizApproveState
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/mybatis/entity/MfEnterpriseChangeApprove.java
View file @
8966674
...
...
@@ -22,6 +22,9 @@ import java.util.Date;
@Name
(
"企业信息变更审批"
)
public
class
MfEnterpriseChangeApprove
extends
BaseDO
{
@Name
(
"会员GUID"
)
private
String
tenantGuid
;
/**
* 公司名称
*/
...
...
@@ -37,7 +40,7 @@ public class MfEnterpriseChangeApprove extends BaseDO {
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Name
(
"企业类型
【选择平台字典【公司类型】的选项】
"
)
@Name
(
"企业类型"
)
private
String
tenantType
;
/**
...
...
@@ -49,7 +52,7 @@ public class MfEnterpriseChangeApprove extends BaseDO {
/**
* 注册资本【(万元)】
*/
@Name
(
"注册资本
【(万元)】
"
)
@Name
(
"注册资本"
)
private
BigDecimal
registeredCapital
;
/**
...
...
@@ -79,7 +82,7 @@ public class MfEnterpriseChangeApprove extends BaseDO {
/**
* 营业期限【1 长期有效;2 自定义】
*/
@Name
(
"营业期限
【1 长期有效;2 自定义】
"
)
@Name
(
"营业期限"
)
private
String
businessLicenseTerm
;
/**
...
...
@@ -172,7 +175,7 @@ public class MfEnterpriseChangeApprove extends BaseDO {
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Name
(
"业务审批状态
【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
"
)
@Name
(
"业务审批状态"
)
private
String
bizApproveState
;
/**
...
...
@@ -187,10 +190,19 @@ public class MfEnterpriseChangeApprove extends BaseDO {
@Name
(
"原数据唯一标识"
)
private
String
sourceGuid
;
@Name
(
"资产Guid"
)
private
String
zqBizGuid
;
@Name
(
"专区名称"
)
private
String
zqName
;
@Name
(
"审批状态(N 初始 A 审批中 Y 已通过 R 驳回 C 已撤销)"
)
private
String
crossPlatformApproveState
;
/**
* 数据类型【数据类型 1原数据 2新数据】
*/
@Name
(
"数据类型
【数据类型 1原数据 2新数据】
"
)
@Name
(
"数据类型"
)
private
String
dataType
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/mybatis/service/impl/MfEnterpriseServiceImpl.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
mybatis
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl
;
import
com.csbr.qingcloud.portal.mybatis.mapper.MfEnterpriseMapper
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
...
...
@@ -7,6 +9,10 @@ import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService;
import
jakarta.annotation.Resource
;
import
org.springframework.stereotype.Service
;
import
java.io.Serializable
;
import
java.util.Collection
;
import
java.util.List
;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息逻辑层接口实现
...
...
@@ -19,4 +25,11 @@ public class MfEnterpriseServiceImpl extends CsbrServiceImpl<MfEnterpriseMapper,
@Resource
private
MfEnterpriseMapper
mfEnterpriseMapper
;
@Override
public
List
<
MfEnterprise
>
listByIds
(
Collection
<?
extends
Serializable
>
idList
)
{
LambdaQueryWrapper
<
MfEnterprise
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
MfEnterprise
.
class
);
queryWrapper
.
in
(
MfEnterprise:
:
getGuid
,
idList
);
csbrExcludeShardingLambdaQueryWrapper
(
queryWrapper
);
return
list
(
queryWrapper
);
}
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/DemandService.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
service
;
import
com.csbr.qingcloud.portal.domain.vo.DemandApproveVO
;
import
com.csbr.qingcloud.portal.domain.vo.DemandUpdateStateVO
;
import
com.csbr.qingcloud.portal.domain.vo.*
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
com.csbr.qingcloud.portal.domain.vo.DemandQueryVO
;
import
com.csbr.qingcloud.portal.domain.vo.DemandRSVO
;
import
java.util.List
;
...
...
@@ -72,8 +69,19 @@ public interface DemandService {
*/
void
flowCallBack
(
BizCallbackDTO
dto
);
/**
* 数据需求-流程结束后进行业务回调(跨服务审批)
* @param dto
*/
void
crossFlowCallBack
(
BizCallbackDTO
dto
);
Boolean
lastApprove
(
DemandApproveVO
dto
);
DemandRSVO
getDemandDetailByProcess
(
String
processOrderNo
);
/**
* 根据加工单编号查询资产列表
* @return
*/
List
<
ProcessOrderProcessDtlRSVO
>
listByProcessOrderNo
();
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/EnterpriseChangeApproveService.java
View file @
8966674
...
...
@@ -16,4 +16,10 @@ public interface EnterpriseChangeApproveService {
ChangeApproveVO
changeDetail
(
String
guid
);
void
changeUpdate
(
BizCallbackDTO
dto
);
void
removeByGuids
(
List
<
String
>
guids
);
void
crossFlowCallBack
(
BizCallbackDTO
dto
);
void
crossRemoveByBizGuid
(
List
<
String
>
zqBizGuids
);
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/EnterpriseService.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
service
;
import
com.csbr.cloud.workflow.domain.dto.appove.Flow
UpdateState
DTO
;
import
com.csbr.cloud.workflow.domain.dto.appove.Flow
Query
DTO
;
import
com.csbr.qingcloud.portal.domain.vo.*
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -26,6 +28,13 @@ public interface EnterpriseService {
PageListVO
<
EnterpriseRSVO
>
pageList
(
EnterpriseQueryVO
queryVO
);
/**
* 企业信息-分页(调用流程)
* @param dto
* @return
*/
PageListVO
<
EnterpriseApproveRSVO
>
flowPageList
(
FlowQueryDTO
dto
);
/**
* 企业信息获取详情数据
* @author xcq
* @date 2024-12-26 16:18
...
...
@@ -70,14 +79,28 @@ public interface EnterpriseService {
*/
void
flowCallBack
(
BizCallbackDTO
dto
);
/**
* 流程结束后进行业务回调(跨服务审批)
* @param dto
*/
void
crossFlowCallBack
(
BizCallbackDTO
dto
);
Boolean
check
(
EnterpriseRQVO
vo
);
List
<
ChangeInfoVO
>
getChange
(
String
tenantNa
me
);
List
<
ChangeInfoVO
>
getChange
(
String
sourceGuid
,
Date
createTi
me
);
EnterpriseRSVO
getEnterpriseDetailByName
(
String
tenantName
);
/** 将此账号提交的数据需求迁移到新的企业 */
void
moveOldData
(
TenantRQVO
vo
);
Boolean
lastApprove
(
FlowUpdateStateDTO
dto
);
/** 更新会员信息 */
void
updateTenant
(
MfEnterprise
vo
);
/**
* 企业信息-根据登陆账号查询详情
* @param logonUser
* @return
*/
EnterpriseRSVO
getEnterpriseDetailByLogonUser
(
String
logonUser
);
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/impl/DemandServiceImpl.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.csbr.cloud.common.enums.SystemError
;
import
com.csbr.cloud.common.enums.WorkFlowBizEnum
;
import
com.csbr.cloud.workflow.domain.dto.appove.FlowUpdateStateDTO
;
...
...
@@ -13,6 +13,9 @@ import com.csbr.qingcloud.portal.domain.vo.*;
import
com.csbr.qingcloud.portal.feign.ConfigureFeign
;
import
com.csbr.qingcloud.portal.feign.DataProcessBasicFeign
;
import
com.csbr.qingcloud.portal.feign.PersonelFeign
;
import
com.csbr.qingcloud.portal.util.DateUtil
;
import
com.csbr.qingcloud.portal.util.InvokeUtil
;
import
com.csbr.qingcloud.portal.util.ZQConfig
;
import
csbr.cloud.entity.domain.user.UserInfo
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
com.csbr.cloud.common.exception.CsbrSystemException
;
...
...
@@ -32,11 +35,13 @@ import csbr.cloud.entity.utils.UserContextHolder;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
io.seata.spring.annotation.GlobalTransactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -55,11 +60,19 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
*/
private
static
final
String
FUNCTION_NAME
=
"数据需求"
;
private
static
final
String
SysFuncCode
=
"SJXQ"
;
/**
* 流程类型
*/
private
static
final
String
FLOW_TYPE
=
WorkFlowBizEnum
.
DATA_DEMAND
.
getValue
();
@Autowired
private
ZQConfig
zqConfig
;
@Autowired
private
InvokeUtil
invokeUtil
;
@Resource
private
MfDemandService
mfDemandService
;
...
...
@@ -136,8 +149,13 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
if
(
CollectionUtils
.
isEmpty
(
guids
)){
return
null
;
}
try
{
Map
<
String
,
DemandUpdateStateVO
>
map
=
dataProcessBasicFeign
.
getOrderState
(
guids
).
getData
();
return
map
;
}
catch
(
Exception
e
){
e
.
printStackTrace
();
return
null
;
}
}
/**
...
...
@@ -151,11 +169,13 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
@Override
public
void
saveDemand
(
FlowRQBaseVO
flowBaseVO
)
{
DemandRQVO
rqVO
=
(
DemandRQVO
)
flowBaseVO
;
log
.
info
(
"======rqVO, {}"
,
JSON
.
toJSONString
(
rqVO
));
System
.
out
.
println
(
"======rqVO, "
+
JSON
.
toJSONString
(
rqVO
));
beforeSave
(
rqVO
);
MfDemand
entity
=
convertToEntity
(
rqVO
);
entity
.
setRequirementOrderNo
(
configureFeign
.
newCode
(
new
RuleDTO
().
setRuleName
(
"demand-code"
).
setRuleType
(
"generate"
)).
getData
());
// 发起审批流程或保存草稿
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
);
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
,
rqVO
);
super
.
startWorkFlow
(
rqVO
,
approvalDTO
,
entity:
:
setBizApproveState
);
// 业务数据保存
boolean
flag
=
mfDemandService
.
save
(
entity
);
...
...
@@ -166,6 +186,20 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
afterSave
(
entity
,
rqVO
);
}
private
void
checkProductGuid
(
String
dataProductGuid
){
if
(
StringUtils
.
isBlank
(
dataProductGuid
))
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_INPUT_ERROR
,
"产品不能为空"
);
}
//此产品审批中的需求只能有1个
LambdaQueryWrapper
<
MfDemand
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
MfDemand:
:
getDataProductGuid
,
dataProductGuid
);
wrapper
.
eq
(
MfDemand:
:
getBizApproveState
,
"A"
);
List
<
MfDemand
>
list
=
mfDemandService
.
list
(
wrapper
);
if
(
CollectionUtils
.
isNotEmpty
(
list
)){
throw
new
CsbrSystemException
(
SystemError
.
DATA_INPUT_ERROR
,
"该数据产品已在审批中,请勿重复提交!"
);
}
}
/**
* 数据需求数据修改
* @author xcq
...
...
@@ -183,7 +217,7 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
beforeUpdate
(
rqVO
);
MfDemand
entity
=
convertToEntity
(
rqVO
);
// 发起审批流程或保存草稿
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
);
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
,
rqVO
);
super
.
startOrRestartWorkFlow
(
rqVO
,
rqVO
.
getBizApproveState
(),
approvalDTO
,
entity:
:
setBizApproveState
);
if
(
rqVO
.
getIsRestart
())
{
// 重新提交
...
...
@@ -209,9 +243,9 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
* @return void
*/
private
void
againSubmitFlow
(
MfDemand
entity
,
DemandRQVO
rqVO
,
AddApprovalDTO
approvalDTO
)
{
// 重新提交的数据重置相关字段
entity
.
setGuid
(
CommonUtil
.
newGuid
());
mfDemandService
.
csbrBaseEntity
(
entity
);
entity
.
setBizApproveState
(
"A"
);
// 保存新数据
boolean
flag
=
mfDemandService
.
save
(
entity
);
if
(!
flag
)
{
...
...
@@ -219,6 +253,7 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
}
// 发起新的流程
approvalDTO
.
setBizGuid
(
entity
.
getGuid
());
approvalDTO
.
setUrlParam
(
String
.
format
(
"guid=%s&demandCategory=%s&name=%s&type=detail"
,
entity
.
getGuid
(),
entity
.
getDemandCategory
(),
entity
.
getDataDemandName
()));
approvalFlowUtil
.
addApproval
(
approvalDTO
);
afterSave
(
entity
,
rqVO
);
}
...
...
@@ -238,6 +273,7 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
throw
new
CsbrSystemException
(
SystemError
.
DATA_INPUT_ERROR
,
messageSourceUtil
.
getMessage
(
"W00012"
,
String
.
format
(
"删除%s数据"
,
FUNCTION_NAME
),
"数据唯一标识"
));
}
String
crossPlatformApproveState
=
""
;
for
(
String
guid
:
guids
)
{
MfDemand
entity
=
mfDemandService
.
getById
(
guid
);
beforeRemove
(
entity
);
...
...
@@ -246,9 +282,19 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
throw
new
CsbrSystemException
(
SystemError
.
DATA_DEL_ERROR
,
messageSourceUtil
.
delMessage
(
FUNCTION_NAME
));
}
afterRemove
(
entity
);
crossPlatformApproveState
=
entity
.
getCrossPlatformApproveState
();
}
// 删除流程数据
approvalFlowUtil
.
removeApproveByBizGuids
(
guids
);
// 删除主平台数据
if
(!
zqConfig
.
getIsMain
()
&&
StringUtils
.
isNotEmpty
(
crossPlatformApproveState
))
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"zqSystemCode"
,
SysFuncCode
);
jsonObject
.
put
(
"zqBizGuids"
,
JSON
.
toJSONString
(
guids
));
jsonObject
.
put
(
"isCollection"
,
true
);
invokeUtil
.
invokeMainDel
(
jsonObject
,
zqConfig
.
getAppKey
(),
zqConfig
.
getZqDelUrl
());
}
}
/**
...
...
@@ -265,6 +311,29 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
throw
new
CsbrSystemException
(
SystemError
.
DATA_NOT_EXISTS
,
messageSourceUtil
.
notExistsToSelectMessage
(
FUNCTION_NAME
));
}
String
orderNo
=
null
;
if
(
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
dto
.
getApprovalState
())
&&
!
dto
.
getIsZqPlatformApprove
()
&&
StringUtils
.
isEmpty
(
entity
.
getZqName
()))
{
//生成加工单
orderNo
=
addOrder
(
mfDemandService
.
getById
(
dto
.
getBizGuid
()),
dto
);
}
// 同步更新审批状态
LambdaUpdateWrapper
<
MfDemand
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
set
(
MfDemand:
:
getBizApproveState
,
dto
.
getApprovalState
());
updateWrapper
.
set
(
StringUtils
.
isNotBlank
(
orderNo
),
MfDemand:
:
getProcessOrderNo
,
orderNo
);
updateWrapper
.
set
(
StringUtils
.
isNotBlank
(
orderNo
),
MfDemand:
:
getProcessingGenerateTime
,
new
Date
());
updateWrapper
.
eq
(
MfDemand:
:
getGuid
,
dto
.
getBizGuid
());
boolean
flag
=
mfDemandService
.
update
(
updateWrapper
);
if
(!
flag
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_UPDATE_ERROR
,
messageSourceUtil
.
updateMessage
(
String
.
format
(
"%s的业务审批状态"
,
FUNCTION_NAME
)));
}
}
@Override
public
void
crossFlowCallBack
(
BizCallbackDTO
dto
)
{
MfDemand
entity
=
mfDemandService
.
getById
(
dto
.
getBizGuid
());
if
(
entity
==
null
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_NOT_EXISTS
,
messageSourceUtil
.
notExistsToSelectMessage
(
FUNCTION_NAME
));
}
String
orderNo
=
null
;
if
(
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
dto
.
getApprovalState
()))
{
//生成加工单
orderNo
=
addOrder
(
mfDemandService
.
getById
(
dto
.
getBizGuid
()),
dto
);
...
...
@@ -272,6 +341,7 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
// 同步更新审批状态
LambdaUpdateWrapper
<
MfDemand
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
set
(
MfDemand:
:
getBizApproveState
,
dto
.
getApprovalState
());
updateWrapper
.
set
(
MfDemand:
:
getCrossPlatformApproveState
,
dto
.
getApprovalState
());
updateWrapper
.
set
(
StringUtils
.
isNotBlank
(
orderNo
),
MfDemand:
:
getProcessOrderNo
,
orderNo
);
updateWrapper
.
set
(
StringUtils
.
isNotBlank
(
orderNo
),
MfDemand:
:
getProcessingGenerateTime
,
new
Date
());
updateWrapper
.
eq
(
MfDemand:
:
getGuid
,
dto
.
getBizGuid
());
...
...
@@ -323,6 +393,12 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
entity
.
setProcessCompanyName
(
dto
.
getProcessCompanyName
());
mfDemandService
.
updateById
(
entity
);
FlowUpdateStateDTO
flowDTO
=
csbrBeanUtil
.
convert
(
dto
,
FlowUpdateStateDTO
.
class
);
MfDemand
demand
=
new
MfDemand
();
demand
.
setContractAttachJson
(
entity
.
getContractAttachJson
());
demand
.
setProcessCompanyType
(
entity
.
getProcessCompanyType
());
demand
.
setProcessCompanyGuid
(
entity
.
getProcessCompanyGuid
());
demand
.
setProcessCompanyName
(
entity
.
getProcessCompanyName
());
flowDTO
.
setBizData
(
JSON
.
toJSONString
(
demand
));
flowDTO
.
setBackEndInvoke
(
true
);
workflowFeign
.
allowFlowCore
(
flowDTO
).
getData
();
...
...
@@ -340,25 +416,45 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
return
convertToVO
(
list
.
get
(
0
),
getStateMap
(
Collections
.
singletonList
(
list
.
get
(
0
).
getGuid
())));
}
@Override
public
List
<
ProcessOrderProcessDtlRSVO
>
listByProcessOrderNo
()
{
LambdaQueryWrapper
<
MfDemand
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
MfDemand
.
class
);
queryWrapper
.
isNotNull
(
MfDemand:
:
getRequirementOrderNo
).
isNotNull
(
MfDemand:
:
getProcessOrderNo
);
queryWrapper
.
orderByDesc
(
MfDemand:
:
getCreateTime
);
List
<
MfDemand
>
mfDemands
=
mfDemandService
.
list
(
queryWrapper
);
if
(
ObjectUtils
.
isEmpty
(
mfDemands
))
{
return
null
;
}
List
<
String
>
guids
=
mfDemands
.
stream
().
map
(
MfDemand:
:
getGuid
).
toList
();
return
dataProcessBasicFeign
.
processOrderList
(
guids
).
getData
();
}
/**
* 获取发起流程参数
* @author xcq
* @date 2024-12-31 18:46
*
* @param entity
* @param rqVO
* @return com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
* @author xcq
* @date 2024-12-31 18:46
*/
private
AddApprovalDTO
getAddApprovalDTO
(
MfDemand
entity
)
{
private
AddApprovalDTO
getAddApprovalDTO
(
MfDemand
entity
,
DemandRQVO
rqVO
)
{
AddApprovalDTO
approvalDTO
=
new
AddApprovalDTO
(
FLOW_TYPE
,
entity
.
getGuid
());
// todo
approvalDTO
.
setFuncCode
(
"SJXQ"
);
approvalDTO
.
setFuncCode
(
SysFuncCode
);
approvalDTO
.
setUrlParam
(
String
.
format
(
"guid=%s&demandCategory=%s&name=%s&type=detail"
,
entity
.
getGuid
(),
entity
.
getDemandCategory
(),
entity
.
getDataDemandName
()));
// 流程消息中的变量替换参数
approvalDTO
.
setFlowMessageBody
(
null
);
approvalDTO
.
setFlowMessageBody
(
String
.
format
(
"%s,%s"
,
CommonUtil
.
getUserInfo
().
getUserName
(),
entity
.
getDataDemandName
())
);
// 流程列表数据核心param参数处理
approvalDTO
.
setParam1
(
entity
.
getDataDemandName
());
approvalDTO
.
setParam2
(
null
);
approvalDTO
.
setParam3
(
null
);
approvalDTO
.
setParam4
(
null
);
// 增加跨服务审批字段
rqVO
.
setGuid
(
entity
.
getGuid
());
approvalDTO
.
setBizData
(
JSON
.
toJSONString
(
rqVO
));
return
approvalDTO
;
}
...
...
@@ -378,6 +474,9 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
//endregion 2.1.业务合规性验证
//region 2.2.业务数据验证
if
(
rqVO
.
getImmediateApprove
()
&&
"2"
.
equals
(
rqVO
.
getDemandCategory
())){
checkProductGuid
(
rqVO
.
getDataProductGuid
());
}
//endregion 2.2.业务数据验证
//endregion 2.数据验证特殊处理
...
...
@@ -449,13 +548,15 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
throw
new
CsbrSystemException
(
SystemError
.
DATA_NOT_EXISTS
,
messageSourceUtil
.
notExistsToUpdateMessage
(
FUNCTION_NAME
));
}
//endregion 2.2.业务数据验证
if
(
rqVO
.
getImmediateApprove
()
&&
"2"
.
equals
(
rqVO
.
getDemandCategory
())){
checkProductGuid
(
rqVO
.
getDataProductGuid
());
}
//endregion 2.数据验证特殊处理
rqVO
.
setBizApproveState
(
entity
.
getBizApproveState
());
//region 3.数据转换处理
//region 3.1.数据过程转换
rqVO
.
setBizApproveState
(
entity
.
getBizApproveState
());
//endregion 3.1.数据过程转换
//endregion 3.数据转换处理
...
...
@@ -549,7 +650,6 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
private
StaffRSVO
getCurStaff
(){
UserInfo
userInfo
=
UserContextHolder
.
get
();
userInfo
.
getUserId
();
StaffRSVO
staffVO
=
personelFeign
.
getByUserGuid
(
userInfo
.
getUserId
()).
getData
();
return
staffVO
;
}
...
...
@@ -596,11 +696,16 @@ public class DemandServiceImpl extends FlowAbstractImpl implements DemandService
vo
.
setProductProcessingState
(
voState
.
getProductProcessingState
());
vo
.
setProductDeliveryState
(
voState
.
getProductDeliveryState
());
vo
.
setProductAcceptState
(
voState
.
getProductAcceptState
());
vo
.
setAcceptFinishTime
(
DateUtil
.
getShortDate
(
voState
.
getAcceptFinishTime
()));
vo
.
setFinishCycle
(
DateUtil
.
getDiffDay
(
voState
.
getAcceptFinishTime
(),
entity
.
getProcessingGenerateTime
()));
vo
.
setBizName
(
voState
.
getBizName
());
}
}
return
vo
;
}
/**
* 数据需求新增、修改和其他情况的参数转换为实体
* @author xcq
...
...
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseChangeApproveServiceImpl.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.csbr.cloud.common.enums.SystemError
;
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.common.util.MessageSourceUtil
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.cloud.workflow.util.ApprovalFlowUtil
;
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.feign.PersonelFeign
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseChangeApprove
;
...
...
@@ -19,14 +22,21 @@ 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.InvokeUtil
;
import
com.csbr.qingcloud.portal.util.ZQConfig
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
io.seata.spring.annotation.GlobalTransactional
;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
/**
* @program: ms-hc-customer-service
...
...
@@ -38,6 +48,19 @@ import java.util.Map;
@Slf4j
public
class
EnterpriseChangeApproveServiceImpl
implements
EnterpriseChangeApproveService
{
/**
* 功能名称
*/
private
static
final
String
FUNCTION_NAME
=
"企业变更信息"
;
private
static
final
String
SysFuncCode
=
"QYRZ"
;
@Autowired
private
ZQConfig
zqConfig
;
@Autowired
private
InvokeUtil
invokeUtil
;
@Resource
private
MfEnterpriseChangeApproveService
mfEnterpriseChangeApproveService
;
...
...
@@ -51,11 +74,18 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
private
EnterpriseService
enterpriseService
;
@Resource
private
MessageSourceUtil
messageSourceUtil
;
@Resource
private
ApprovalFlowUtil
approvalFlowUtil
;
@Resource
private
PersonelFeign
personelFeign
;
/** 保存变更数据 */
@Override
public
void
changeSave
(
ChangeApproveVO
vo
)
{
log
.
info
(
"======vo, {}"
,
JSON
.
toJSONString
(
vo
));
//对重新发起的原审批源数据进行废弃
if
(
StringUtils
.
isNotBlank
(
vo
.
getSourceApproveGuid
())){
LambdaUpdateWrapper
<
MfEnterpriseChangeApprove
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
...
...
@@ -66,9 +96,11 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
//保存新数据
EnterpriseRQVO
beanVO
=
JSON
.
parseObject
(
vo
.
getBizDataJson
(),
EnterpriseRQVO
.
class
);
String
tenantGuid
=
beanVO
.
getTenantGuid
();
MfEnterpriseChangeApprove
entity
=
csbrBeanUtil
.
convert
(
beanVO
,
MfEnterpriseChangeApprove
.
class
);
setEntity
(
entity
,
beanVO
,
vo
);
entity
.
setDataType
(
"2"
);
entity
.
setBizApproveState
(
ApprovalStateEnum
.
CHECKING
.
getValue
());
entity
.
setGuid
(
vo
.
getGuid
());
mfEnterpriseChangeApproveService
.
save
(
entity
);
...
...
@@ -78,8 +110,10 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
setEntity
(
entity
,
beanVO
,
vo
);
entity
.
setDataType
(
"1"
);
entity
.
setGuid
(
CommonUtil
.
newGuid
());
entity
.
setTenantGuid
(
tenantGuid
);
mfEnterpriseChangeApproveService
.
save
(
entity
);
log
.
info
(
"========entity, {}"
,
entity
);
MfEnterprise
bean
=
mfEnterpriseService
.
getById
(
entity
.
getSourceGuid
());
bean
.
setBizApproveState
(
"B"
);
mfEnterpriseService
.
updateById
(
bean
);
...
...
@@ -88,6 +122,8 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
private
void
setEntity
(
MfEnterpriseChangeApprove
entity
,
EnterpriseRQVO
customerVO
,
ChangeApproveVO
vo
){
entity
.
setApproveGuid
(
vo
.
getApproveGuid
());
entity
.
setSourceGuid
(
vo
.
getSourceGuid
());
entity
.
setZqName
(
vo
.
getZqName
());
entity
.
setZqBizGuid
(
vo
.
getZqBizGuid
());
}
/** 变更数据详细接口 */
...
...
@@ -124,6 +160,12 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
@Override
public
void
changeUpdate
(
BizCallbackDTO
dto
)
{
MfEnterpriseChangeApprove
entity
=
mfEnterpriseChangeApproveService
.
getById
(
dto
.
getBizGuid
());
LambdaUpdateWrapper
<
MfEnterpriseChangeApprove
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getApproveGuid
,
entity
.
getApproveGuid
());
updateWrapper
.
set
(
MfEnterpriseChangeApprove:
:
getBizApproveState
,
dto
.
getApprovalState
());
mfEnterpriseChangeApproveService
.
update
(
updateWrapper
);
//审批不通过则将状态恢复到以前的Y
if
(!
dto
.
getApprovalState
().
equals
(
ApprovalStateEnum
.
PASSED
.
getValue
())){
MfEnterprise
bean
=
mfEnterpriseService
.
getById
(
entity
.
getSourceGuid
());
...
...
@@ -131,31 +173,120 @@ public class EnterpriseChangeApproveServiceImpl implements EnterpriseChangeAppro
mfEnterpriseService
.
updateById
(
bean
);
return
;
}
if
(!
dto
.
getIsZqPlatformApprove
())
{
//审批通过则执行更新
EnterpriseRQVO
vo
=
csbrBeanUtil
.
convert
(
entity
,
EnterpriseRQVO
.
class
);
MfEnterprise
vo
=
csbrBeanUtil
.
convert
(
entity
,
MfEnterprise
.
class
);
vo
.
setGuid
(
entity
.
getSourceGuid
());
vo
.
setBizApproveState
(
"Y"
);
mfEnterpriseService
.
updateById
(
vo
);
LambdaUpdateWrapper
<
MfEnterprise
>
wrapper
=
new
LambdaUpdateWrapper
<>();
wrapper
.
eq
(
MfEnterprise:
:
getGuid
,
entity
.
getSourceGuid
());
wrapper
.
set
(
MfEnterprise:
:
getBizApproveState
,
"Y"
);
mfEnterpriseService
.
update
(
wrapper
);
//同步更新会员表
enterpriseService
.
updateTenant
(
vo
);
}
}
@Override
@GlobalTransactional
(
rollbackFor
=
Exception
.
class
)
public
void
removeByGuids
(
List
<
String
>
guids
)
{
if
(
CollectionUtils
.
isEmpty
(
guids
))
{
// W00012 = {0}:参数[{1}]不能为空!
throw
new
CsbrSystemException
(
SystemError
.
DATA_INPUT_ERROR
,
messageSourceUtil
.
getMessage
(
"W00012"
,
String
.
format
(
"删除%s数据"
,
FUNCTION_NAME
),
"数据唯一标识"
));
}
String
crossPlatformApproveState
=
""
;
for
(
String
guid
:
guids
)
{
MfEnterpriseChangeApprove
entity
=
mfEnterpriseChangeApproveService
.
getById
(
guid
);
beforeRemove
(
entity
);
boolean
flag
=
mfEnterpriseChangeApproveService
.
removeById
(
guid
);
if
(!
flag
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_DEL_ERROR
,
messageSourceUtil
.
delMessage
(
FUNCTION_NAME
));
}
crossPlatformApproveState
=
entity
.
getCrossPlatformApproveState
();
}
// 删除主平台数据
if
(!
zqConfig
.
getIsMain
()
&&
StringUtils
.
isNotEmpty
(
crossPlatformApproveState
))
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"zqSystemCode"
,
SysFuncCode
+
"BG"
);
jsonObject
.
put
(
"zqBizGuids"
,
JSON
.
toJSONString
(
guids
));
jsonObject
.
put
(
"isCollection"
,
true
);
invokeUtil
.
invokeMainDel
(
jsonObject
,
zqConfig
.
getAppKey
(),
zqConfig
.
getZqDelUrl
());
}
// 删除流程数据
approvalFlowUtil
.
removeApproveByBizGuids
(
guids
);
}
@Override
public
void
crossFlowCallBack
(
BizCallbackDTO
dto
)
{
MfEnterpriseChangeApprove
entity
=
mfEnterpriseChangeApproveService
.
getById
(
dto
.
getBizGuid
());
LambdaUpdateWrapper
<
MfEnterpriseChangeApprove
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getApproveGuid
,
entity
.
getApproveGuid
());
updateWrapper
.
set
(
MfEnterpriseChangeApprove:
:
getBizApproveState
,
dto
.
getApprovalState
());
updateWrapper
.
set
(
MfEnterpriseChangeApprove:
:
getCrossPlatformApproveState
,
dto
.
getApprovalState
());
mfEnterpriseChangeApproveService
.
update
(
updateWrapper
);
//审批不通过则将状态恢复到以前的Y
if
(!
dto
.
getApprovalState
().
equals
(
ApprovalStateEnum
.
PASSED
.
getValue
())){
MfEnterprise
bean
=
mfEnterpriseService
.
getById
(
entity
.
getSourceGuid
());
bean
.
setBizApproveState
(
"Y"
);
bean
.
setCrossPlatformApproveState
(
"Y"
);
mfEnterpriseService
.
updateById
(
bean
);
return
;
}
//审批通过则执行更新
MfEnterprise
vo
=
csbrBeanUtil
.
convert
(
entity
,
MfEnterprise
.
class
);
vo
.
setGuid
(
entity
.
getSourceGuid
());
vo
.
setBizApproveState
(
"Y"
);
vo
.
setCrossPlatformApproveState
(
"Y"
);
mfEnterpriseService
.
updateById
(
vo
);
//同步更新会员表
TenantRQVO
tenantVO
=
csbrBeanUtil
.
convert
(
vo
,
TenantRQVO
.
class
);
tenantVO
.
setGuid
(
getTenantGuid
(
vo
.
getTenantName
()));
tenantVO
.
setPersonIncharge
(
vo
.
getJuridicalPerson
());
personelFeign
.
updateTenant
(
tenantVO
);
enterpriseService
.
updateTenant
(
vo
);
}
@Override
@GlobalTransactional
public
void
crossRemoveByBizGuid
(
List
<
String
>
zqBizGuids
)
{
if
(
ObjectUtils
.
isEmpty
(
zqBizGuids
))
{
// W00012 = {0}:参数[{1}]不能为空!
throw
new
CsbrSystemException
(
SystemError
.
DATA_INPUT_ERROR
,
messageSourceUtil
.
getMessage
(
"W00012"
,
String
.
format
(
"删除%s数据"
,
FUNCTION_NAME
),
"数据唯一标识"
));
}
String
zqBizGuid
=
zqBizGuids
.
get
(
0
);
LambdaQueryWrapper
<
MfEnterpriseChangeApprove
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
MfEnterpriseChangeApprove
.
class
);
queryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getZqBizGuid
,
zqBizGuid
);
queryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getDataType
,
2
).
last
(
" limit 1 "
);
MfEnterpriseChangeApprove
enterpriseChangeApprove
=
mfEnterpriseChangeApproveService
.
getOne
(
queryWrapper
);
if
(
ObjectUtils
.
isEmpty
(
enterpriseChangeApprove
))
{
return
;
}
LambdaUpdateWrapper
<
MfEnterpriseChangeApprove
>
removeWraaper
=
Wrappers
.
lambdaUpdate
(
MfEnterpriseChangeApprove
.
class
);
removeWraaper
.
eq
(
MfEnterpriseChangeApprove:
:
getZqBizGuid
,
zqBizGuid
);
mfEnterpriseChangeApproveService
.
remove
(
removeWraaper
);
// 删除流程数据
approvalFlowUtil
.
removeApproveByBizGuids
(
Collections
.
singletonList
(
enterpriseChangeApprove
.
getGuid
()));
}
private
String
getTenantGuid
(
String
name
){
Map
<
String
,
String
>
map
=
personelFeign
.
getAllTenantGuidNameMap
().
getData
();
for
(
String
guid
:
map
.
keySet
()){
if
(
map
.
get
(
guid
).
equals
(
name
)){
return
guid
;
/**
* 企业信息删除前置处理
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @return void
*/
private
void
beforeRemove
(
MfEnterpriseChangeApprove
entity
)
{
if
(
entity
==
null
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_DEL_ERROR
,
messageSourceUtil
.
notExistsToDelMessage
(
FUNCTION_NAME
));
}
if
(
ApprovalStateEnum
.
CHECKING
.
getValue
().
equals
(
entity
.
getBizApproveState
())
||
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
entity
.
getBizApproveState
()))
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_DEL_ERROR
,
"审批中和审批通过的数据不能删除!"
);
}
return
null
;
}
/** 转换数据 */
...
...
src/main/java/com/csbr/qingcloud/portal/service/impl/EnterpriseServiceImpl.java
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.csbr.cloud.common.enums.SystemError
;
import
com.csbr.cloud.common.enums.UserError
;
import
com.csbr.cloud.common.enums.WorkFlowBizEnum
;
import
com.csbr.cloud.common.exception.CsbrSystemException
;
import
com.csbr.cloud.common.exception.CsbrUserException
;
import
com.csbr.cloud.common.util.CommonUtil
;
import
com.csbr.cloud.common.util.CsbrBeanUtil
;
import
com.csbr.cloud.common.util.MessageSourceUtil
;
import
com.csbr.cloud.
mq.service.KafkaStdService
;
import
com.csbr.cloud.
distributelock.util.RedisUtil
;
import
com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
;
import
com.csbr.cloud.workflow.domain.dto.appove.Flow
UpdateState
DTO
;
import
com.csbr.cloud.workflow.domain.dto.appove.Flow
Query
DTO
;
import
com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO
;
import
com.csbr.cloud.workflow.domain.vo.appove.ApproveVO
;
import
com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO
;
import
com.csbr.qingcloud.portal.feign.WorkflowFeign
;
import
com.csbr.cloud.workflow.util.ApprovalFlowUtil
;
import
com.csbr.cloud.workflow.util.FlowAbstractImpl
;
import
com.csbr.qingcloud.portal.domain.vo.*
;
import
com.csbr.qingcloud.portal.feign.ConfigureFeign
;
import
com.csbr.qingcloud.portal.feign.PersonelFeign
;
import
com.csbr.qingcloud.portal.feign.
User
Feign
;
import
com.csbr.qingcloud.portal.feign.
Workflow
Feign
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfDemand
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
;
import
com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseChangeApprove
;
...
...
@@ -29,30 +31,25 @@ import com.csbr.qingcloud.portal.mybatis.service.MfDemandService;
import
com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseChangeApproveService
;
import
com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService
;
import
com.csbr.qingcloud.portal.service.EnterpriseService
;
import
com.csbr.qingcloud.portal.util.ObjectUtil
;
import
com.csbr.qingcloud.portal.util.ChangeInfoUtil
;
import
com.csbr.qingcloud.portal.util.DateUtil
;
import
com.csbr.qingcloud.portal.util.InvokeUtil
;
import
com.csbr.qingcloud.portal.util.ZQConfig
;
import
csbr.cloud.entity.domain.base.vo.PageListVO
;
import
csbr.cloud.entity.enums.ApprovalStateEnum
;
import
io.seata.common.util.DateUtil
;
import
io.seata.spring.annotation.GlobalTransactional
;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.kafka.support.Acknowledgment
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Enumeration
;
import
java.util.List
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
* @program: D:/git/ms-data-circulation-portal-service
...
...
@@ -69,6 +66,14 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
*/
private
static
final
String
FUNCTION_NAME
=
"企业信息"
;
private
static
final
String
SysFuncCode
=
"QYRZ"
;
@Autowired
private
ZQConfig
zqConfig
;
@Autowired
private
InvokeUtil
invokeUtil
;
@Resource
private
MfEnterpriseService
mfEnterpriseService
;
...
...
@@ -85,19 +90,19 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
private
PersonelFeign
personelFeign
;
@Resource
private
MfEnterpriseChangeApproveService
mfEnterpriseChangeApproveService
;
private
WorkflowFeign
workflowFeign
;
@Resource
private
MfDemandService
mfDemandService
;
private
RedisUtil
redisUtil
;
@Resource
private
UserFeign
userFeign
;
private
MfEnterpriseChangeApproveService
mfEnterpriseChangeApproveService
;
@Resource
private
WorkflowFeign
workflowFeign
;
private
MfDemandService
mfDemandService
;
@
Autowired
(
required
=
false
)
private
KafkaStdService
kafkaStdService
;
@
Resource
private
ConfigureFeign
configureFeign
;
/**
* 企业信息分页查询
...
...
@@ -122,6 +127,54 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
return
new
PageListVO
<>(
0L
,
0L
);
}
@Override
public
PageListVO
<
EnterpriseApproveRSVO
>
flowPageList
(
FlowQueryDTO
dto
)
{
// 调用流程获取流程数据
PageListVO
<
ApproveVO
>
pageListVO
=
workflowFeign
.
getFlowListCrossTenant
(
dto
).
getData
();
PageListVO
<
EnterpriseApproveRSVO
>
rsPageList
=
csbrBeanUtil
.
convert
(
pageListVO
,
PageListVO
.
class
);
List
<
ApproveVO
>
approveVOList
=
pageListVO
.
getRecords
();
if
(
ObjectUtils
.
isNotEmpty
(
approveVOList
))
{
// 根据业务guid查询认证表数据
List
<
String
>
guids
=
approveVOList
.
stream
().
map
(
ApproveVO:
:
getBizGuid
).
toList
();
List
<
MfEnterprise
>
mfEnterprises
=
mfEnterpriseService
.
listByIds
(
guids
);
Map
<
String
,
MfEnterprise
>
mfEnterpriseMap
=
new
HashMap
<>();
if
(
ObjectUtils
.
isNotEmpty
(
mfEnterprises
))
{
mfEnterpriseMap
=
mfEnterprises
.
stream
().
collect
(
Collectors
.
toMap
(
MfEnterprise:
:
getGuid
,
Function
.
identity
()));
}
// 根据业务guid查询认证变更表数据
List
<
MfEnterpriseChangeApprove
>
mfEnterpriseChangeApproves
=
mfEnterpriseChangeApproveService
.
listByIds
(
guids
);
Map
<
String
,
MfEnterpriseChangeApprove
>
mfEnterpriseChangeApproveMap
=
new
HashMap
<>();
if
(
ObjectUtils
.
isNotEmpty
(
mfEnterpriseChangeApproves
))
{
mfEnterpriseChangeApproveMap
=
mfEnterpriseChangeApproves
.
stream
().
collect
(
Collectors
.
toMap
(
MfEnterpriseChangeApprove:
:
getGuid
,
Function
.
identity
()));
}
// 数据转换
List
<
EnterpriseApproveRSVO
>
results
=
new
ArrayList
<>();
for
(
ApproveVO
approveVO
:
approveVOList
)
{
// 补跨服务审批状态数据
EnterpriseApproveRSVO
enterpriseApproveRSVO
=
csbrBeanUtil
.
convert
(
approveVO
,
EnterpriseApproveRSVO
.
class
);
if
(
ObjectUtils
.
isNotEmpty
(
mfEnterpriseMap
)
&&
mfEnterpriseMap
.
containsKey
(
enterpriseApproveRSVO
.
getBizGuid
()))
{
MfEnterprise
mfEnterprise
=
mfEnterpriseMap
.
get
(
enterpriseApproveRSVO
.
getBizGuid
());
enterpriseApproveRSVO
.
setCrossPlatformApproveState
(
mfEnterprise
.
getCrossPlatformApproveState
());
enterpriseApproveRSVO
.
setZqName
(
mfEnterprise
.
getZqName
());
enterpriseApproveRSVO
.
setTenantName
(
mfEnterprise
.
getTenantName
());
}
if
(
ObjectUtils
.
isNotEmpty
(
mfEnterpriseChangeApproveMap
)
&&
mfEnterpriseChangeApproveMap
.
containsKey
(
enterpriseApproveRSVO
.
getBizGuid
()))
{
MfEnterpriseChangeApprove
mfEnterpriseChangeApprove
=
mfEnterpriseChangeApproveMap
.
get
(
enterpriseApproveRSVO
.
getBizGuid
());
enterpriseApproveRSVO
.
setCrossPlatformApproveState
(
mfEnterpriseChangeApprove
.
getCrossPlatformApproveState
());
enterpriseApproveRSVO
.
setZqName
(
mfEnterpriseChangeApprove
.
getZqName
());
enterpriseApproveRSVO
.
setTenantName
(
mfEnterpriseChangeApprove
.
getTenantName
());
}
results
.
add
(
enterpriseApproveRSVO
);
}
rsPageList
.
setRecords
(
results
);
}
return
rsPageList
;
}
/**
* 企业信息获取详情数据
* @author xcq
...
...
@@ -142,23 +195,29 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
}
EnterpriseRSVO
vo
=
convertToVO
(
entity
);
//生成变更信息
vo
.
setChangeList
(
getChange
(
entity
.
getTenantNa
me
()));
vo
.
setChangeList
(
getChange
(
guid
,
entity
.
getCreateTi
me
()));
return
vo
;
}
/** 生成变更信息列表 */
@Override
public
List
<
ChangeInfoVO
>
getChange
(
String
tenantNa
me
){
public
List
<
ChangeInfoVO
>
getChange
(
String
sourceGuid
,
Date
createTi
me
){
LambdaQueryWrapper
<
MfEnterpriseChangeApprove
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getTenantName
,
tenantName
);
queryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getSourceGuid
,
sourceGuid
);
queryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getBizApproveState
,
ApprovalStateEnum
.
PASSED
.
getValue
());
queryWrapper
.
le
(
MfEnterpriseChangeApprove:
:
getCreateTime
,
createTime
);
queryWrapper
.
orderByDesc
(
MfEnterpriseChangeApprove:
:
getCreateTime
);
queryWrapper
.
last
(
" limit 2 "
);
List
<
MfEnterpriseChangeApprove
>
approveList
=
mfEnterpriseChangeApproveService
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
approveList
)){
return
new
ArrayList
<>();
}
List
<
ChangeApproveBean
>
beanList
=
getChangeBeanList
(
approveList
);
try
{
return
getChangeList
(
beanList
);
if
(
CollectionUtils
.
isEmpty
(
ChangeInfoUtil
.
areaList
)){
ChangeInfoUtil
.
areaList
=
configureFeign
.
getBoroughCodeName
().
getData
();
}
return
ChangeInfoUtil
.
getChangeList
(
beanList
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -176,32 +235,6 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
return
convertToVO
(
list
.
get
(
0
));
}
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
));
}
/** 准备变更对比实体 */
private
List
<
ChangeApproveBean
>
getChangeBeanList
(
List
<
MfEnterpriseChangeApprove
>
list
){
List
<
ChangeApproveBean
>
beanList
=
new
ArrayList
<>();
...
...
@@ -224,79 +257,6 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
public
MfEnterprise
newBean
;
}
/** 计算变更信息 */
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
);
getVenueResult
(
item
,
diffList
);
getStartEndResult
(
item
,
diffList
);
for
(
CompareResult
diffItem
:
diffList
){
if
(
diffItem
.
getFieldComment
().
contains
(
"审批状态"
)
||
diffItem
.
getFieldComment
().
contains
(
"营业执照"
)
||
diffItem
.
getFieldComment
().
contains
(
"法人证件照"
)
||
diffItem
.
getFieldComment
().
contains
(
"管理员证件照"
)
||
diffItem
.
getFieldComment
().
contains
(
"授权委托书"
)
||
diffItem
.
getFieldComment
().
contains
(
"省"
)
||
diffItem
.
getFieldComment
().
contains
(
"市"
)
||
diffItem
.
getFieldComment
().
contains
(
"区"
)
||
diffItem
.
getFieldComment
().
contains
(
"营业开始日期"
)
||
diffItem
.
getFieldComment
().
contains
(
"营业结束日期"
)){
continue
;
}
ChangeInfoVO
vo
=
new
ChangeInfoVO
();
vo
.
setNameEn
(
diffItem
.
getFieldName
());
vo
.
setName
(
diffItem
.
getFieldComment
());
vo
.
setDate
(
DateUtil
.
formatDate
(
item
.
oldBean
.
getCreateTime
(),
"yyyy-MM-dd HH:mm:ss"
));
vo
.
setBefore
(
diffItem
.
getOldValue
().
toString
());
vo
.
setAfter
(
diffItem
.
getNewValue
().
toString
());
vo
.
setGuid
(
CommonUtil
.
newGuid
());
list
.
add
(
vo
);
}
}
return
list
;
}
private
static
void
getVenueResult
(
ChangeApproveBean
item
,
List
<
CompareResult
>
diffList
)
{
String
oldVenue
=
getVenue
(
item
.
oldBean
.
getProvince
(),
item
.
oldBean
.
getCity
(),
item
.
oldBean
.
getDistrict
());
String
newVenue
=
getVenue
(
item
.
newBean
.
getProvince
(),
item
.
newBean
.
getCity
(),
item
.
newBean
.
getDistrict
());
if
(!
oldVenue
.
equals
(
newVenue
)){
CompareResult
result
=
new
CompareResult
();
result
.
setFieldComment
(
"注册地"
);
result
.
setFieldName
(
"venue"
);
result
.
setOldValue
(
oldVenue
);
result
.
setNewValue
(
newVenue
);
diffList
.
add
(
result
);
}
}
private
static
void
getStartEndResult
(
ChangeApproveBean
item
,
List
<
CompareResult
>
diffList
)
{
String
oldValue
=
getStartEnd
(
item
.
oldBean
.
getBusinessLicenseTerm
(),
item
.
oldBean
.
getBusinessLicenseStartDate
(),
item
.
oldBean
.
getBusinessLicenseEndDate
());
String
newValue
=
getStartEnd
(
item
.
newBean
.
getBusinessLicenseTerm
(),
item
.
newBean
.
getBusinessLicenseStartDate
(),
item
.
newBean
.
getBusinessLicenseEndDate
());
if
(!
oldValue
.
equals
(
newValue
)){
CompareResult
result
=
new
CompareResult
();
result
.
setFieldComment
(
"营业日期范围"
);
result
.
setFieldName
(
"businessLicenseStartEnd"
);
result
.
setOldValue
(
oldValue
);
result
.
setNewValue
(
newValue
);
diffList
.
add
(
result
);
}
}
private
static
String
getVenue
(
String
province
,
String
city
,
String
district
)
{
if
(
StringUtils
.
isBlank
(
district
)){
return
String
.
format
(
"%s/%s"
,
province
,
city
);
}
else
{
return
String
.
format
(
"%s/%s/%s"
,
province
,
city
,
district
);
}
}
private
static
String
getStartEnd
(
String
businessLicenseTerm
,
Date
businessLicenseStartDate
,
Date
businessLicenseEndDate
)
{
if
(
"1"
.
equals
(
businessLicenseTerm
)){
return
"长期有效"
;
}
return
String
.
format
(
"%s至%s"
,
businessLicenseStartDate
,
businessLicenseEndDate
);
}
/**
* 企业信息数据新增
* @author xcq
...
...
@@ -312,7 +272,7 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
beforeSave
(
rqVO
);
MfEnterprise
entity
=
convertToEntity
(
rqVO
);
// 发起审批流程或保存草稿
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
);
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
,
rqVO
);
super
.
startWorkFlow
(
rqVO
,
approvalDTO
,
entity:
:
setBizApproveState
);
// 业务数据保存
boolean
flag
=
mfEnterpriseService
.
save
(
entity
);
...
...
@@ -339,7 +299,7 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
beforeUpdate
(
rqVO
);
MfEnterprise
entity
=
convertToEntity
(
rqVO
);
// 发起审批流程或保存草稿
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
);
AddApprovalDTO
approvalDTO
=
getAddApprovalDTO
(
entity
,
rqVO
);
super
.
startOrRestartWorkFlow
(
rqVO
,
rqVO
.
getBizApproveState
(),
approvalDTO
,
entity:
:
setBizApproveState
);
if
(
rqVO
.
getIsRestart
())
{
// 重新提交
...
...
@@ -365,9 +325,9 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
* @return void
*/
private
void
againSubmitFlow
(
MfEnterprise
entity
,
EnterpriseRQVO
rqVO
,
AddApprovalDTO
approvalDTO
)
{
// 重新提交的数据重置相关字段
entity
.
setGuid
(
CommonUtil
.
newGuid
());
mfEnterpriseService
.
csbrBaseEntity
(
entity
);
entity
.
setBizApproveState
(
"A"
);
// 保存新数据
boolean
flag
=
mfEnterpriseService
.
save
(
entity
);
if
(!
flag
)
{
...
...
@@ -375,6 +335,8 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
}
// 发起新的流程
approvalDTO
.
setBizGuid
(
entity
.
getGuid
());
approvalDTO
.
setUrlParam
(
String
.
format
(
"guid=%s&name=%s&tName=%s&fType=%s&bizGuid=%s&type=detail"
,
entity
.
getGuid
(),
entity
.
getTenantName
(),
entity
.
getTenantName
(),
WorkFlowBizEnum
.
ENTERPRISE_APPLY
.
getValue
(),
entity
.
getGuid
()));
approvalFlowUtil
.
addApproval
(
approvalDTO
);
afterSave
(
entity
,
rqVO
);
}
...
...
@@ -394,6 +356,7 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
throw
new
CsbrSystemException
(
SystemError
.
DATA_INPUT_ERROR
,
messageSourceUtil
.
getMessage
(
"W00012"
,
String
.
format
(
"删除%s数据"
,
FUNCTION_NAME
),
"数据唯一标识"
));
}
String
crossPlatformApproveState
=
""
;
for
(
String
guid
:
guids
)
{
MfEnterprise
entity
=
mfEnterpriseService
.
getById
(
guid
);
beforeRemove
(
entity
);
...
...
@@ -402,53 +365,20 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
throw
new
CsbrSystemException
(
SystemError
.
DATA_DEL_ERROR
,
messageSourceUtil
.
delMessage
(
FUNCTION_NAME
));
}
afterRemove
(
entity
);
}
// 删除流程数据
approvalFlowUtil
.
removeApproveByBizGuids
(
guids
);
crossPlatformApproveState
=
entity
.
getCrossPlatformApproveState
();
}
/** ***企业认证*** */
@GlobalTransactional
@Override
public
Boolean
lastApprove
(
FlowUpdateStateDTO
dto
)
{
//如果是非认证会员认证审批通过了 则需要走kafka生成新会员
dto
.
setBackEndInvoke
(
true
);
KafkaApproveDTO
approveDTO
=
new
KafkaApproveDTO
();
approveDTO
.
setHeader
(
getHeader
());
approveDTO
.
setUpdateStateDTO
(
dto
);
kafkaStdService
.
stdSendMsgWithPrefix
(
"tenant.enterprise"
,
JSON
.
toJSONString
(
approveDTO
));
return
true
;
}
private
MultiValueMap
<
String
,
String
>
getHeader
(){
ServletRequestAttributes
servletRequestAttributes
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
());
Enumeration
<
String
>
headerNames
=
servletRequestAttributes
.
getRequest
().
getHeaderNames
();
MultiValueMap
<
String
,
String
>
headers
=
new
LinkedMultiValueMap
<>();
List
<
String
>
names
=
List
.
of
(
"AUTHORIZATION"
,
"X-USERINFO"
,
"TENANT"
,
"TOKEN"
);
while
(
null
!=
headerNames
&&
headerNames
.
hasMoreElements
())
{
String
name
=
headerNames
.
nextElement
();
String
value
=
servletRequestAttributes
.
getRequest
().
getHeader
(
name
);
if
(
names
.
contains
(
name
.
toUpperCase
()))
{
headers
.
put
(
name
,
List
.
of
(
value
));
}
}
return
headers
;
// 删除主平台数据
if
(!
zqConfig
.
getIsMain
()
&&
StringUtils
.
isNotEmpty
(
crossPlatformApproveState
))
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"zqSystemCode"
,
SysFuncCode
);
jsonObject
.
put
(
"zqBizGuids"
,
JSON
.
toJSONString
(
guids
));
jsonObject
.
put
(
"isCollection"
,
true
);
invokeUtil
.
invokeMainDel
(
jsonObject
,
zqConfig
.
getAppKey
(),
zqConfig
.
getZqDelUrl
());
}
@KafkaListener
(
containerFactory
=
"kafkaListenerContainerFactory"
,
groupId
=
"scm.notify"
,
topics
=
"${csbr.kafka.topic-prefix:}_"
+
"tenant.enterprise"
,
errorHandler
=
"consumerAwareErrorHandler"
)
public
void
addUserListener
(
List
<
ConsumerRecord
<
String
,
String
>>
records
,
Acknowledgment
ack
)
{
ack
.
acknowledge
();
for
(
ConsumerRecord
<
String
,
String
>
record
:
records
)
{
try
{
KafkaApproveDTO
approveDTO
=
JSON
.
parseObject
(
record
.
value
(),
KafkaApproveDTO
.
class
);
workflowFeign
.
allowFlowCore
(
approveDTO
.
getUpdateStateDTO
(),
approveDTO
.
getHeader
()).
getData
();
}
catch
(
Exception
e
)
{
log
.
error
(
"企业认证出现异常: "
+
e
.
getMessage
()
+
";\nRecord Info: "
+
record
.
toString
());
e
.
printStackTrace
();
return
;
}
}
// 删除流程数据
approvalFlowUtil
.
removeApproveByBizGuids
(
guids
);
}
/**
...
...
@@ -473,23 +403,98 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
if
(!
flag
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_UPDATE_ERROR
,
messageSourceUtil
.
updateMessage
(
String
.
format
(
"%s的业务审批状态"
,
FUNCTION_NAME
)));
}
if
(
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
dto
.
getApprovalState
()))
{
if
(
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
dto
.
getApprovalState
())
&&
!
dto
.
getIsZqPlatformApprove
()
&&
StringUtils
.
isEmpty
(
entity
.
getZqName
()))
{
String
tenantName
=
personelFeign
.
getAllTenantGuidNameMap
().
getData
().
get
(
entity
.
getTenantGuid
());
if
(
"非认证会员"
.
equals
(
tenantName
)){
//删除原帐号并新增正式会员
TenantRQVO
vo
=
csbrBeanUtil
.
convert
(
entity
,
TenantRQVO
.
class
);
//新增会员时guid必须保证为空
vo
.
setGuid
(
null
);
vo
.
setTenantType
(
null
);
vo
.
setGuid
(
CommonUtil
.
newGuid
());
vo
.
setContactTel
(
entity
.
getContactTel
());
vo
.
setBizGuid
(
dto
.
getBizGuid
());
vo
.
setPersonIncharge
(
entity
.
getJuridicalPerson
());
vo
.
setBizState
(
"Y"
);
try
{
vo
=
personelFeign
.
authTenant
(
vo
).
getData
();
}
catch
(
Exception
e
){
if
(!
e
.
getMessage
().
contains
(
"Read timed out"
)){
throw
e
;
vo
.
setRegistrationDate
(
DateUtil
.
getDateToLocal
(
entity
.
getRegistrationDate
()));
vo
.
setTenantLicList
(
getTenantLicList
(
entity
.
getBusinessLicenseJson
()));
vo
.
setCompanyAddress
(
String
.
format
(
"%s/%s/%s"
,
entity
.
getProvince
(),
entity
.
getCity
(),
entity
.
getDistrict
()));
vo
.
setProvince
(
null
);
vo
.
setCity
(
null
);
vo
.
setDistrict
(
null
);
personelFeign
.
authTenant
(
vo
).
getData
();
}
else
{
updateTenant
(
entity
);
}
}
}
@Override
public
void
crossFlowCallBack
(
BizCallbackDTO
dto
)
{
MfEnterprise
entity
=
mfEnterpriseService
.
getById
(
dto
.
getBizGuid
());
if
(
entity
==
null
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_NOT_EXISTS
,
messageSourceUtil
.
notExistsToSelectMessage
(
FUNCTION_NAME
));
}
// 同步更新审批状态
LambdaUpdateWrapper
<
MfEnterprise
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
set
(
MfEnterprise:
:
getBizApproveState
,
dto
.
getApprovalState
());
updateWrapper
.
set
(
MfEnterprise:
:
getCrossPlatformApproveState
,
dto
.
getApprovalState
());
updateWrapper
.
eq
(
MfEnterprise:
:
getGuid
,
dto
.
getBizGuid
());
boolean
flag
=
mfEnterpriseService
.
update
(
updateWrapper
);
if
(!
flag
)
{
throw
new
CsbrSystemException
(
SystemError
.
DATA_UPDATE_ERROR
,
messageSourceUtil
.
updateMessage
(
String
.
format
(
"%s的业务审批状态"
,
FUNCTION_NAME
)));
}
if
(
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
dto
.
getApprovalState
()))
{
String
tenantName
=
personelFeign
.
getAllTenantGuidNameMap
().
getData
().
get
(
entity
.
getTenantGuid
());
if
(
"非认证会员"
.
equals
(
tenantName
)){
//删除原帐号并新增正式会员
TenantRQVO
vo
=
csbrBeanUtil
.
convert
(
entity
,
TenantRQVO
.
class
);
//新增会员时guid必须保证为空
vo
.
setGuid
(
null
);
vo
.
setTenantType
(
null
);
vo
.
setContactTel
(
entity
.
getContactTel
());
vo
.
setBizGuid
(
dto
.
getBizGuid
());
vo
.
setPersonIncharge
(
entity
.
getJuridicalPerson
());
vo
.
setBizState
(
"Y"
);
vo
.
setRegistrationDate
(
DateUtil
.
getDateToLocal
(
entity
.
getRegistrationDate
()));
vo
.
setTenantLicList
(
getTenantLicList
(
entity
.
getBusinessLicenseJson
()));
vo
.
setCompanyAddress
(
String
.
format
(
"%s/%s/%s"
,
entity
.
getProvince
(),
entity
.
getCity
(),
entity
.
getDistrict
()));
vo
.
setProvince
(
null
);
vo
.
setCity
(
null
);
vo
.
setDistrict
(
null
);
personelFeign
.
authTenant
(
vo
).
getData
();
}
else
{
updateTenant
(
entity
);
}
}
}
private
List
<
TenantLicRQVO
>
getTenantLicList
(
String
json
)
{
if
(
StringUtils
.
isBlank
(
json
)){
return
null
;
}
JSONArray
array
=
JSON
.
parseArray
(
json
);
if
(
array
.
size
()
==
0
){
return
null
;
}
JSONArray
itemArray
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
array
.
size
();
i
++){
JSONObject
obj
=
array
.
getJSONObject
(
i
);
//格式转换
JSONObject
itemOjb
=
new
JSONObject
();
itemOjb
.
put
(
"name"
,
obj
.
get
(
"name"
));
itemOjb
.
put
(
"path"
,
obj
.
get
(
"url"
));
itemArray
.
add
(
itemOjb
);
}
TenantLicRQVO
item
=
new
TenantLicRQVO
();
item
.
setLicenseType
(
"1"
);
item
.
setPictContentJson
(
JSON
.
toJSONString
(
itemArray
));
List
<
TenantLicRQVO
>
list
=
new
ArrayList
<>();
list
.
add
(
item
);
return
list
;
}
/** 将此账号提交的数据需求迁移到新的企业 */
...
...
@@ -519,53 +524,126 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
mfDemandService
.
removeByIds
(
list
);
}
/** 仅更新会员本表信息 */
@Override
public
Boolean
check
(
EnterpriseRQVO
vo
)
{
//防止管理员帐号发起认证
if
(
StringUtils
.
isBlank
(
vo
.
getGuid
())){
checkUser
(
vo
.
getLogonUser
());
public
void
updateTenant
(
MfEnterprise
vo
)
{
//同步更新会员表
TenantRQVO
tenantVO
=
csbrBeanUtil
.
convert
(
vo
,
TenantRQVO
.
class
);
tenantVO
.
setGuid
(
vo
.
getTenantGuid
());
tenantVO
.
setPersonIncharge
(
vo
.
getJuridicalPerson
());
tenantVO
.
setTenantName
(
vo
.
getTenantName
());
tenantVO
.
setRegisteredCapital
(
vo
.
getRegisteredCapital
());
tenantVO
.
setRegistrationDate
(
DateUtil
.
getDateToLocal
(
vo
.
getRegistrationDate
()));
tenantVO
.
setBankTaxNo
(
vo
.
getBankTaxNo
());
tenantVO
.
setBusinessLicenseScope
(
vo
.
getBusinessLicenseScope
());
tenantVO
.
setPersonIncharge
(
vo
.
getJuridicalPerson
());
tenantVO
.
setContacts
(
vo
.
getContacts
());
tenantVO
.
setContactTel
(
vo
.
getContactTel
());
tenantVO
.
setCompanyAddress
(
String
.
format
(
"%s/%s/%s"
,
vo
.
getProvince
(),
vo
.
getCity
(),
vo
.
getDistrict
()));
tenantVO
.
setTenantLicList
(
getTenantLicList
(
vo
.
getBusinessLicenseJson
()));
personelFeign
.
changeUpdate
(
tenantVO
);
}
//检查会员名称等数据
TenantRQVO
tenant
=
csbrBeanUtil
.
convert
(
vo
,
TenantRQVO
.
class
);
personelFeign
.
checkTenant
(
tenant
);
return
true
;
@Override
public
EnterpriseRSVO
getEnterpriseDetailByLogonUser
(
String
logonUser
)
{
// 根据登陆人信息查询业务数据
LambdaQueryWrapper
<
MfEnterprise
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
MfEnterprise
.
class
);
queryWrapper
.
eq
(
MfEnterprise:
:
getLogonUser
,
logonUser
);
queryWrapper
.
orderByDesc
(
MfEnterprise:
:
getCreateTime
);
List
<
MfEnterprise
>
mfEnterprises
=
mfEnterpriseService
.
list
(
queryWrapper
);
if
(
ObjectUtils
.
isEmpty
(
mfEnterprises
))
{
return
null
;
}
// 判断业务数据是否有通过
Optional
<
MfEnterprise
>
enterpriseOptional
=
mfEnterprises
.
stream
().
filter
(
item
->
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
item
.
getBizApproveState
())
||
"B"
.
equals
(
item
.
getBizApproveState
())
||
ApprovalStateEnum
.
CHECKING
.
getValue
().
equals
(
item
.
getBizApproveState
())).
findFirst
();
if
(
enterpriseOptional
.
isEmpty
())
{
return
null
;
}
MfEnterprise
mfEnterprise
=
enterpriseOptional
.
get
();
EnterpriseRSVO
enterpriseRSVO
=
convertToVO
(
mfEnterprise
);
// 查询变更历史
LambdaQueryWrapper
<
MfEnterpriseChangeApprove
>
lambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
lambdaQueryWrapper
.
eq
(
MfEnterpriseChangeApprove:
:
getSourceGuid
,
mfEnterprise
.
getGuid
());
lambdaQueryWrapper
.
orderByDesc
(
MfEnterpriseChangeApprove:
:
getCreateTime
);
List
<
MfEnterpriseChangeApprove
>
approveList
=
mfEnterpriseChangeApproveService
.
list
(
lambdaQueryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
approveList
)){
return
enterpriseRSVO
;
}
// 判断最新变更数据是否是审批中 审批中显示最新数据 驳回或通过显示最新一次审批通过数据
if
(
"B"
.
equals
(
enterpriseRSVO
.
getBizApproveState
()))
{
Optional
<
MfEnterpriseChangeApprove
>
changeApproveOptFirst
=
approveList
.
stream
().
filter
(
item
->
"2"
.
equals
(
item
.
getDataType
())).
findFirst
();
if
(
changeApproveOptFirst
.
isPresent
())
{
enterpriseRSVO
=
csbrBeanUtil
.
convert
(
changeApproveOptFirst
.
get
(),
EnterpriseRSVO
.
class
);
enterpriseRSVO
.
setBizApproveState
(
mfEnterprise
.
getBizApproveState
());
}
}
// 只显示审批通过的变更历史
List
<
MfEnterpriseChangeApprove
>
passChangeApproves
=
approveList
.
stream
().
filter
(
item
->
ApprovalStateEnum
.
PASSED
.
getValue
().
equals
(
item
.
getBizApproveState
())).
toList
();
if
(
ObjectUtils
.
isNotEmpty
(
passChangeApproves
))
{
List
<
ChangeApproveBean
>
beanList
=
getChangeBeanList
(
passChangeApproves
);
try
{
if
(
CollectionUtils
.
isEmpty
(
ChangeInfoUtil
.
areaList
)){
ChangeInfoUtil
.
areaList
=
configureFeign
.
getBoroughCodeName
().
getData
();
}
enterpriseRSVO
.
setChangeList
(
ChangeInfoUtil
.
getChangeList
(
beanList
));
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
}
return
enterpriseRSVO
;
}
private
void
checkUser
(
String
logonUser
){
UserQueryDTO
dto
=
new
UserQueryDTO
();
dto
.
setLogonUser
(
logonUser
);
List
<
UserVO
>
userList
=
userFeign
.
getUserSomeInfo
(
dto
).
getData
().
getRecords
();
if
(
CollectionUtils
.
isNotEmpty
(
userList
)){
StaffRSVO
staffVO
=
personelFeign
.
getByUserGuid
(
userList
.
get
(
0
).
getGuid
()).
getData
();
if
(
staffVO
!=
null
&&
StringUtils
.
isNotBlank
(
staffVO
.
getIsAdmin
())
&&
"Y"
.
equals
(
staffVO
.
getIsAdmin
())){
throw
new
CsbrUserException
(
UserError
.
VALIDATE_CODE_ERROR
,
"账号已存在!"
);
@Override
public
Boolean
check
(
EnterpriseRQVO
vo
)
{
String
tenantName
=
personelFeign
.
getAllTenantGuidNameMap
().
getData
().
get
(
vo
.
getTenantGuid
());
TenantRQVO
tenant
=
csbrBeanUtil
.
convert
(
vo
,
TenantRQVO
.
class
);
if
(
"非认证会员"
.
equals
(
tenantName
)){
tenant
.
setGuid
(
null
);
}
else
{
tenant
.
setGuid
(
vo
.
getTenantGuid
());
}
personelFeign
.
checkTenant
(
tenant
);
return
true
;
}
/**
* 获取发起流程参数
* @author xcq
* @date 2024-12-26 16:18
*
* @param entity
* @param rqVO
* @return com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
* @author xcq
* @date 2024-12-26 16:18
*/
private
AddApprovalDTO
getAddApprovalDTO
(
MfEnterprise
entity
)
{
private
AddApprovalDTO
getAddApprovalDTO
(
MfEnterprise
entity
,
EnterpriseRQVO
rqVO
)
{
AddApprovalDTO
approvalDTO
=
new
AddApprovalDTO
(
WorkFlowBizEnum
.
ENTERPRISE_APPLY
.
getValue
(),
entity
.
getGuid
());
// todo
approvalDTO
.
setFuncCode
(
"QYRZ"
);
approvalDTO
.
setFuncCode
(
SysFuncCode
);
approvalDTO
.
setUrlParam
(
String
.
format
(
"guid=%s&name=%s&tName=%s&fType=%s&bizGuid=%s&type=detail"
,
entity
.
getGuid
(),
entity
.
getTenantName
(),
entity
.
getTenantName
(),
WorkFlowBizEnum
.
ENTERPRISE_APPLY
.
getValue
(),
entity
.
getGuid
()));
// 流程消息中的变量替换参数
approvalDTO
.
setFlowMessageBody
(
null
);
approvalDTO
.
setFlowMessageBody
(
entity
.
getTenantName
()
);
// 流程列表数据核心param参数处理
approvalDTO
.
setParam1
(
entity
.
getTenantName
());
approvalDTO
.
setParam2
(
entity
.
getTenantType
());
approvalDTO
.
setParam3
(
entity
.
getSocialCreditCode
());
approvalDTO
.
setParam4
(
String
.
format
(
"%s_%s_%s"
,
entity
.
getJuridicalPerson
(),
entity
.
getContacts
(),
entity
.
getContactTel
()));
// 增加跨服务审批字段
rqVO
.
setGuid
(
entity
.
getGuid
());
approvalDTO
.
setBizData
(
JSON
.
toJSONString
(
rqVO
));
return
approvalDTO
;
}
/**
* 企业信息新新增前置处理
* @author xcq
...
...
@@ -657,11 +735,11 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
//endregion 2.2.业务数据验证
//endregion 2.数据验证特殊处理
rqVO
.
setBizApproveState
(
entity
.
getBizApproveState
());
//region 3.数据转换处理
//region 3.1.数据过程转换
rqVO
.
setBizApproveState
(
entity
.
getBizApproveState
());
//endregion 3.1.数据过程转换
//endregion 3.数据转换处理
...
...
@@ -803,8 +881,11 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
EnterpriseRSVO
vo
=
csbrBeanUtil
.
convert
(
entity
,
EnterpriseRSVO
.
class
);
//流程数据处理
vo
.
setApproveVO
(
approvalFlowUtil
.
getApprovalCrossTenantInfo
(
entity
.
getGuid
()));
vo
.
setVenue
(
getVenue
(
vo
.
getProvince
(),
vo
.
getCity
(),
vo
.
getDistrict
()));
vo
.
setBusinessLicenseStartEnd
(
getStartEnd
(
vo
.
getBusinessLicenseTerm
(),
vo
.
getBusinessLicenseStartDate
(),
vo
.
getBusinessLicenseEndDate
()));
if
(
CollectionUtils
.
isEmpty
(
ChangeInfoUtil
.
areaList
)){
ChangeInfoUtil
.
areaList
=
configureFeign
.
getBoroughCodeName
().
getData
();
}
vo
.
setVenue
(
ChangeInfoUtil
.
getVenue
(
vo
.
getProvince
(),
vo
.
getCity
(),
vo
.
getDistrict
()));
vo
.
setBusinessLicenseStartEnd
(
ChangeInfoUtil
.
getStartEnd
(
vo
.
getBusinessLicenseTerm
(),
vo
.
getBusinessLicenseStartDate
(),
vo
.
getBusinessLicenseEndDate
()));
return
vo
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/service/impl/ServicerMaintainServiceImpl.java
View file @
8966674
...
...
@@ -202,9 +202,9 @@ public class ServicerMaintainServiceImpl extends FlowAbstractImpl implements Ser
* @return void
*/
private
void
againSubmitFlow
(
MfServicerMaintain
entity
,
ServicerMaintainRQVO
rqVO
,
AddApprovalDTO
approvalDTO
)
{
// 重新提交的数据重置相关字段
entity
.
setGuid
(
CommonUtil
.
newGuid
());
mfServicerMaintainService
.
csbrBaseEntity
(
entity
);
entity
.
setBizApproveState
(
"A"
);
// 保存新数据
boolean
flag
=
mfServicerMaintainService
.
save
(
entity
);
if
(!
flag
)
{
...
...
@@ -284,7 +284,7 @@ public class ServicerMaintainServiceImpl extends FlowAbstractImpl implements Ser
// todo
approvalDTO
.
setFuncCode
(
"FWSWH"
);
// 流程消息中的变量替换参数
approvalDTO
.
setFlowMessageBody
(
null
);
approvalDTO
.
setFlowMessageBody
(
String
.
format
(
"%s,%s"
,
entity
.
getCreateUserName
(),
entity
.
getTenantName
())
);
// 流程列表数据核心param参数处理
approvalDTO
.
setParam1
(
null
);
approvalDTO
.
setParam2
(
null
);
...
...
@@ -388,7 +388,6 @@ public class ServicerMaintainServiceImpl extends FlowAbstractImpl implements Ser
//region 3.数据转换处理
//region 3.1.数据过程转换
rqVO
.
setBizApproveState
(
entity
.
getBizApproveState
());
//endregion 3.1.数据过程转换
//endregion 3.数据转换处理
...
...
src/main/java/com/csbr/qingcloud/portal/util/ChangeInfoUtil.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
util
;
import
com.csbr.cloud.common.util.CommonUtil
;
import
com.csbr.cloud.common.util.CsbrBeanUtil
;
import
com.csbr.qingcloud.portal.domain.vo.BoroughPOJO
;
import
com.csbr.qingcloud.portal.domain.vo.ChangeInfoVO
;
import
com.csbr.qingcloud.portal.domain.vo.CompareResult
;
import
com.csbr.qingcloud.portal.feign.ConfigureFeign
;
import
com.csbr.qingcloud.portal.service.impl.EnterpriseServiceImpl
;
import
jakarta.annotation.Resource
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Component
public
class
ChangeInfoUtil
{
public
static
List
<
BoroughPOJO
>
areaList
;
/** 计算变更信息 */
public
static
List
<
ChangeInfoVO
>
getChangeList
(
List
<
EnterpriseServiceImpl
.
ChangeApproveBean
>
beanList
)
throws
IllegalAccessException
{
List
<
ChangeInfoVO
>
list
=
new
ArrayList
<>();
//循环对比每组记录生来变更内容
for
(
EnterpriseServiceImpl
.
ChangeApproveBean
item
:
beanList
){
if
(
item
.
oldBean
==
null
||
item
.
newBean
==
null
){
continue
;
}
List
<
CompareResult
>
diffList
=
ObjectUtil
.
getBeanDiff
(
item
.
oldBean
,
item
.
newBean
);
getVenueResult
(
item
,
list
);
getStartEndResult
(
item
,
list
);
getRegistrationDateResult
(
item
,
list
);
getRegisteredCapitalResult
(
item
,
list
);
for
(
CompareResult
diffItem
:
diffList
){
if
(
diffItem
.
getFieldComment
().
contains
(
"审批状态"
)
||
diffItem
.
getFieldComment
().
contains
(
"营业执照"
)
||
diffItem
.
getFieldComment
().
contains
(
"法人证件照"
)
||
diffItem
.
getFieldComment
().
contains
(
"管理员证件照"
)
||
diffItem
.
getFieldComment
().
contains
(
"授权委托书"
)
||
diffItem
.
getFieldComment
().
contains
(
"省"
)
||
diffItem
.
getFieldComment
().
contains
(
"市"
)
||
diffItem
.
getFieldComment
().
contains
(
"区"
)
||
diffItem
.
getFieldComment
().
contains
(
"营业开始日期"
)
||
diffItem
.
getFieldComment
().
contains
(
"营业结束日期"
)
||
diffItem
.
getFieldComment
().
contains
(
"注册日期"
)
||
diffItem
.
getFieldComment
().
contains
(
"注册资本"
)){
continue
;
}
list
.
add
(
getChangeInfoVO
(
item
,
diffItem
));
}
}
list
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
ChangeInfoVO:
:
getNameEn
).
thenComparing
(
ChangeInfoVO:
:
getDate
).
reversed
()).
collect
(
Collectors
.
toList
());
return
list
;
}
private
static
ChangeInfoVO
getChangeInfoVO
(
EnterpriseServiceImpl
.
ChangeApproveBean
item
,
CompareResult
diffItem
){
ChangeInfoVO
vo
=
new
ChangeInfoVO
();
vo
.
setNameEn
(
diffItem
.
getFieldName
());
vo
.
setName
(
diffItem
.
getFieldComment
());
vo
.
setDate
(
DateUtil
.
getDateToString
(
item
.
oldBean
.
getCreateTime
()));
vo
.
setBefore
(
diffItem
.
getOldValue
()
==
null
?
""
:
diffItem
.
getOldValue
().
toString
());
vo
.
setAfter
(
diffItem
.
getNewValue
()
==
null
?
""
:
diffItem
.
getNewValue
().
toString
());
vo
.
setGuid
(
CommonUtil
.
newGuid
());
return
vo
;
}
private
static
void
getRegisteredCapitalResult
(
EnterpriseServiceImpl
.
ChangeApproveBean
item
,
List
<
ChangeInfoVO
>
list
)
{
String
oldValue
=
getRegisteredCapital
(
item
.
oldBean
.
getRegisteredCapital
());
String
newValue
=
getRegisteredCapital
(
item
.
newBean
.
getRegisteredCapital
());
if
(!
oldValue
.
equals
(
newValue
)){
list
.
add
(
getChangeInfoVO
(
item
,
getCompareResult
(
"注册资本"
,
"registeredCapital"
,
oldValue
,
newValue
)));
}
}
private
static
String
getRegisteredCapital
(
BigDecimal
v
)
{
if
(
v
==
null
){
return
""
;
}
return
v
.
setScale
(
2
,
RoundingMode
.
HALF_DOWN
).
toString
();
}
public
static
void
getVenueResult
(
EnterpriseServiceImpl
.
ChangeApproveBean
item
,
List
<
ChangeInfoVO
>
list
)
{
String
oldValue
=
getVenue
(
item
.
oldBean
.
getProvince
(),
item
.
oldBean
.
getCity
(),
item
.
oldBean
.
getDistrict
());
String
newValue
=
getVenue
(
item
.
newBean
.
getProvince
(),
item
.
newBean
.
getCity
(),
item
.
newBean
.
getDistrict
());
if
(!
oldValue
.
equals
(
newValue
)){
list
.
add
(
getChangeInfoVO
(
item
,
getCompareResult
(
"注册地"
,
"venue"
,
oldValue
,
newValue
)));
}
}
public
static
void
getRegistrationDateResult
(
EnterpriseServiceImpl
.
ChangeApproveBean
item
,
List
<
ChangeInfoVO
>
list
)
{
String
oldValue
=
getRegistrationDate
(
item
.
oldBean
.
getRegistrationDate
());
String
newValue
=
getRegistrationDate
(
item
.
newBean
.
getRegistrationDate
());
if
(!
oldValue
.
equals
(
newValue
)){
list
.
add
(
getChangeInfoVO
(
item
,
getCompareResult
(
"注册日期"
,
"registrationDate"
,
oldValue
,
newValue
)));
}
}
private
static
String
getRegistrationDate
(
Date
date
)
{
return
DateUtil
.
getShortDateToString
(
date
);
}
private
static
CompareResult
getCompareResult
(
String
comment
,
String
name
,
String
oldVenue
,
String
newVenue
){
CompareResult
result
=
new
CompareResult
();
result
.
setFieldComment
(
comment
);
result
.
setFieldName
(
name
);
result
.
setOldValue
(
oldVenue
);
result
.
setNewValue
(
newVenue
);
return
result
;
}
public
static
void
getStartEndResult
(
EnterpriseServiceImpl
.
ChangeApproveBean
item
,
List
<
ChangeInfoVO
>
list
)
{
String
oldValue
=
getStartEnd
(
item
.
oldBean
.
getBusinessLicenseTerm
(),
item
.
oldBean
.
getBusinessLicenseStartDate
(),
item
.
oldBean
.
getBusinessLicenseEndDate
());
String
newValue
=
getStartEnd
(
item
.
newBean
.
getBusinessLicenseTerm
(),
item
.
newBean
.
getBusinessLicenseStartDate
(),
item
.
newBean
.
getBusinessLicenseEndDate
());
if
(!
oldValue
.
equals
(
newValue
)){
list
.
add
(
getChangeInfoVO
(
item
,
getCompareResult
(
"营业期限"
,
"businessLicenseStartEnd"
,
oldValue
,
newValue
)));
}
}
public
static
String
getVenue
(
String
province
,
String
city
,
String
district
)
{
if
(
StringUtils
.
isBlank
(
district
)){
return
String
.
format
(
"%s/%s"
,
getName
(
province
),
getName
(
city
));
}
else
{
return
String
.
format
(
"%s/%s/%s"
,
getName
(
province
),
getName
(
city
),
getName
(
district
));
}
}
private
static
String
getName
(
String
code
){
List
<
String
>
names
=
areaList
.
stream
().
filter
(
x
->
x
.
getCode
().
equals
(
code
)).
map
(
BoroughPOJO:
:
getName
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
names
)){
return
""
;
}
return
names
.
get
(
0
);
}
public
static
String
getStartEnd
(
String
businessLicenseTerm
,
Date
businessLicenseStartDate
,
Date
businessLicenseEndDate
)
{
if
(
"1"
.
equals
(
businessLicenseTerm
)){
return
"长期有效"
;
}
return
String
.
format
(
"%s至%s"
,
DateUtil
.
getShortDateToString
(
businessLicenseStartDate
),
DateUtil
.
getShortDateToString
(
businessLicenseEndDate
));
}
}
src/main/java/com/csbr/qingcloud/portal/util/DateUtil.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
util
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
import
java.util.Date
;
public
class
DateUtil
{
/** 时间相差多少天 无视小时 */
public
static
int
getDiffDay
(
Date
one
,
Date
two
)
{
if
(
one
==
null
||
two
==
null
){
return
0
;
}
one
=
getDateByString
(
getShortDateToString
(
one
));
two
=
getDateByString
(
getShortDateToString
(
two
));
long
difference
=
(
one
.
getTime
()
-
two
.
getTime
())
/
86400000
;
return
(
int
)
Math
.
abs
(
difference
);
}
/** 字符串时间转日期 */
public
static
Date
getDateByString
(
String
time
){
try
{
return
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
parse
(
time
);
}
catch
(
Exception
e
)
{
return
new
Date
();
}
}
/** 时间转字符串 */
public
static
String
getDateToString
(
Date
time
){
if
(
time
==
null
)
{
return
""
;
}
return
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
(
time
);
}
/** 时间转字符串 */
public
static
String
getShortDateToString
(
Date
time
){
if
(
time
==
null
)
{
return
""
;
}
return
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
format
(
time
);
}
/** 时间转本地时间 */
public
static
LocalDateTime
getDateToLocal
(
Date
time
){
if
(
time
==
null
)
{
return
null
;
}
return
time
.
toInstant
().
atZone
(
ZoneId
.
systemDefault
()).
toLocalDateTime
();
}
/** 字符串时间转日期 */
public
static
Date
getShortDate
(
Date
time
){
if
(
time
==
null
)
{
return
null
;
}
try
{
return
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
parse
(
getShortDateToString
(
time
));
}
catch
(
Exception
e
)
{
return
new
Date
();
}
}
}
src/main/java/com/csbr/qingcloud/portal/util/InvokeUtil.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
util
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.csbr.cloud.common.enums.SystemError
;
import
com.csbr.cloud.common.exception.CsbrSystemException
;
import
com.csbr.cloud.common.response.CommonRes
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.hc.client5.http.config.RequestConfig
;
import
org.apache.hc.client5.http.impl.classic.CloseableHttpClient
;
import
org.apache.hc.client5.http.impl.classic.HttpClientBuilder
;
import
org.apache.hc.core5.util.Timeout
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.client.RestTemplate
;
/**
* @program: daop-projects
* @description:
* @author: xiaojie
* @create: 2025-03-13 14:52
**/
@Component
@Slf4j
public
class
InvokeUtil
{
@Autowired
private
RestTemplate
restTemplate
;
/**
* open调用接口
* @param jsonObject
* @param appKey
* @param zqDelUrl
*/
public
void
invokeMainDel
(
JSONObject
jsonObject
,
String
appKey
,
String
zqDelUrl
)
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
headers
.
set
(
"appKey"
,
appKey
);
HttpEntity
<
JSONObject
>
requestEntity
=
new
HttpEntity
<>(
jsonObject
,
headers
);
restTemplate
.
setRequestFactory
(
getFactory
());
CommonRes
commonRes
=
restTemplate
.
postForObject
(
zqDelUrl
,
requestEntity
,
CommonRes
.
class
);
if
(!
CommonRes
.
success
().
getCode
().
equals
(
commonRes
.
getCode
()))
{
throw
new
CsbrSystemException
(
SystemError
.
ERROR_CODE
,
commonRes
.
getMsg
());
}
else
{
CommonRes
commonResData
=
JSON
.
parseObject
(
String
.
valueOf
(
commonRes
.
getData
()),
CommonRes
.
class
);
if
(!
CommonRes
.
success
().
getCode
().
equals
(
commonResData
.
getCode
()))
{
throw
new
CsbrSystemException
(
SystemError
.
ERROR_CODE
,
commonResData
.
getMsg
());
}
}
}
private
ClientHttpRequestFactory
getFactory
()
{
RequestConfig
config
=
RequestConfig
.
custom
()
.
setConnectTimeout
(
Timeout
.
ofSeconds
(
5000
))
// 连接超时
.
setConnectionRequestTimeout
(
Timeout
.
ofSeconds
(
5000
))
// 从连接池获取连接的超时时间
.
setResponseTimeout
(
Timeout
.
ofSeconds
(
10000
))
// 数据读取超时
.
build
();
CloseableHttpClient
httpClient
=
HttpClientBuilder
.
create
()
.
setDefaultRequestConfig
(
config
)
.
build
();
return
new
HttpComponentsClientHttpRequestFactory
(
httpClient
);
}
}
\ No newline at end of file
src/main/java/com/csbr/qingcloud/portal/util/ObjectUtil.java
View file @
8966674
...
...
@@ -58,8 +58,8 @@ public class ObjectUtil {
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
)
new
Field
.
get
(
newObj
)));
r
.
setOldValue
(
DateUtil
.
getDateToString
((
Date
)
oldField
.
get
(
oldObj
)));
r
.
setNewValue
(
DateUtil
.
getDateToString
((
Date
)
old
Field
.
get
(
newObj
)));
}
return
r
;
}
...
...
src/main/java/com/csbr/qingcloud/portal/util/ZQConfig.java
0 → 100644
View file @
8966674
package
com
.
csbr
.
qingcloud
.
portal
.
util
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
/**
* @program: daop-projects
* @description:
* @author: xiaojie
* @create: 2025-02-28 14:09
**/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"csbr.zq"
)
public
class
ZQConfig
{
private
String
appKey
=
"672c2c38e4b0cac8732a6106"
;
private
String
zqName
=
""
;
private
String
zqDelUrl
=
""
;
private
Boolean
isMain
=
false
;
}
\ No newline at end of file
src/main/resources/release/bootstrap.yml
View file @
8966674
...
...
@@ -5,7 +5,7 @@ spring:
nacos
:
#配置中心
config
:
server-addr
:
nacos-cluster-service
-develop
.nacos-cluster:8848
server-addr
:
nacos-cluster-service.nacos-cluster:8848
file-extension
:
yaml
group
:
release
namespace
:
daop-master
...
...
@@ -16,7 +16,7 @@ spring:
#注册中心
discovery
:
enabled
:
true
server-addr
:
nacos-cluster-service
-develop
.nacos-cluster:8848
server-addr
:
nacos-cluster-service.nacos-cluster:8848
group
:
release
namespace
:
daop-master
metadata
:
...
...
src/main/resources/release/lt/bootstrap.yml
View file @
8966674
...
...
@@ -5,7 +5,7 @@ spring:
nacos
:
#配置中心
config
:
server-addr
:
nacos-cluster-service
-develop
.nacos-cluster:8848
server-addr
:
nacos-cluster-service.nacos-cluster:8848
file-extension
:
yaml
group
:
release
namespace
:
daop-lt
...
...
@@ -16,7 +16,7 @@ spring:
#注册中心
discovery
:
enabled
:
true
server-addr
:
nacos-cluster-service
-develop
.nacos-cluster:8848
server-addr
:
nacos-cluster-service.nacos-cluster:8848
group
:
release
namespace
:
daop-lt
metadata
:
...
...
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