Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
bc8d536a
Commit
bc8d536a
authored
Apr 03, 2026
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(检验检测):计划排期
1.报检受理后增加排期流程
parent
3eda888c
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
887 additions
and
26 deletions
+887
-26
BusinessTypeEnum.java
...ejoin/amos/boot/module/jg/api/enums/BusinessTypeEnum.java
+2
-1
WorkFlowStatusEnum.java
...oin/amos/boot/module/jg/api/enums/WorkFlowStatusEnum.java
+7
-1
JyjcCmTaskDto.java
.../yeejoin/amos/boot/module/jyjc/api/dto/JyjcCmTaskDto.java
+63
-0
JyjcCmTask.java
.../yeejoin/amos/boot/module/jyjc/api/entity/JyjcCmTask.java
+102
-0
JyjcCmTaskMapper.java
...in/amos/boot/module/jyjc/api/mapper/JyjcCmTaskMapper.java
+14
-0
InspectionPlanModel.java
.../amos/boot/module/jyjc/api/model/InspectionPlanModel.java
+29
-1
IJyjcCmWorkflowService.java
.../boot/module/jyjc/api/service/IJyjcCmWorkflowService.java
+9
-0
JyjcCmTaskMapper.xml
...e-jyjc-api/src/main/resources/mapper/JyjcCmTaskMapper.xml
+5
-0
InspectionPlanController.java
.../module/jyjc/biz/controller/InspectionPlanController.java
+38
-5
JyjcInspectionApplicationController.java
...c/biz/controller/JyjcInspectionApplicationController.java
+1
-1
ICmWorkflowService.java
...amos/boot/module/jyjc/biz/service/ICmWorkflowService.java
+2
-0
TaskModelServiceImpl.java
...os/boot/module/jyjc/biz/service/TaskModelServiceImpl.java
+1
-1
CmWorkflowServiceImpl.java
...t/module/jyjc/biz/service/impl/CmWorkflowServiceImpl.java
+94
-0
CommonServiceImpl.java
.../boot/module/jyjc/biz/service/impl/CommonServiceImpl.java
+50
-0
InspectionPlanCommonServiceImpl.java
...yjc/biz/service/impl/InspectionPlanCommonServiceImpl.java
+105
-0
InspectionPlanServiceImpl.java
...dule/jyjc/biz/service/impl/InspectionPlanServiceImpl.java
+226
-14
JyjcCmTaskServiceImpl.java
...t/module/jyjc/biz/service/impl/JyjcCmTaskServiceImpl.java
+26
-0
JyjcInspectionApplicationServiceImpl.java
...iz/service/impl/JyjcInspectionApplicationServiceImpl.java
+12
-2
WorkBenchTaskCreateServiceImpl.java
...jyjc/biz/service/impl/WorkBenchTaskCreateServiceImpl.java
+94
-0
bizTypeInfo.json
...-module-jyjc-biz/src/main/resources/json/bizTypeInfo.json
+7
-0
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/enums/BusinessTypeEnum.java
View file @
bc8d536a
...
...
@@ -70,7 +70,8 @@ public enum BusinessTypeEnum {
JG_NEW_PROJECT
(
"123"
,
"新增装置"
),
JG_EQUIP_CLAIM
(
"124"
,
"设备认领"
);
JG_EQUIP_CLAIM
(
"124"
,
"设备认领"
),
INSPECTION_PLAN
(
"125"
,
"计划排期"
);
private
final
String
code
;
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/enums/WorkFlowStatusEnum.java
View file @
bc8d536a
...
...
@@ -88,8 +88,14 @@ public enum WorkFlowStatusEnum {
OPENING_APPLICATION_SUBMIT
(
"开通申请提交"
,
"openingApplicationSubmit"
,
"开通申请待提交"
,
"资料校对受理已退回"
,
"申请单位已撤回"
),
OPENING_APPLICATION_RECEIVE
(
"资料校对"
,
"openingApplicationReceive"
,
"资料校对待受理"
,
"系统对接受理已退回"
,
"资料校对受理已撤回"
),
OPENING_APPLICATION_PRELIMINARY
(
"系统对接"
,
"openingApplicationPreliminary"
,
"系统对接中"
,
"业务开通确认已退回"
,
"系统对接受理已撤回"
),
OPENING_APPLICATION_REEXAMINE
(
"业务开通确认"
,
"openingApplicationReexamine"
,
"业务开通确认待受理"
,
""
,
""
)
;
OPENING_APPLICATION_REEXAMINE
(
"业务开通确认"
,
"openingApplicationReexamine"
,
"业务开通确认待受理"
,
""
,
""
)
,
/**
* 维保备案
*/
INSPECTION_PLAN_SUBMIT
(
"受理单位提交"
,
"mainSubmit"
,
""
,
""
,
""
),
INSPECTION_PLAN_ASSIGN_USER
(
"分配业务负责人"
,
"assignUser"
,
"分配业务负责人"
,
"排期人员已驳回"
,
"分配业务负责人已撤回"
),
INSPECTION_PLAN_INSPECT_CONFIRM
(
"检验确认"
,
"inspectConfirm"
,
"检验确认"
,
""
,
""
);
private
final
String
name
;
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/dto/JyjcCmTaskDto.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
dto
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.yeejoin.amos.boot.biz.common.dto.BaseDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* 业务工作流关系表
*
* @author system_generator
* @date 2026-04-03
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"JyjcCmTaskDto"
,
description
=
"业务工作流关系表"
)
public
class
JyjcCmTaskDto
extends
BaseDto
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"工作流实例ID"
)
private
String
instanceId
;
@ApiModelProperty
(
value
=
"备注(无用预留)"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"检验结果方式"
)
private
String
resultType
;
@ApiModelProperty
(
value
=
"发起人id用于撤回操作"
)
private
String
promoter
;
@ApiModelProperty
(
value
=
"创建人"
)
private
String
createUserId
;
@ApiModelProperty
(
value
=
"工作流下一节点任务id"
)
private
String
nextTaskId
;
@ApiModelProperty
(
value
=
"下一节点执行人userIds"
)
private
String
nextExecuteUserIds
;
@ApiModelProperty
(
value
=
"业务表示"
)
private
String
sSeq
;
@ApiModelProperty
(
value
=
"业务类型"
)
private
String
sType
;
@ApiModelProperty
(
value
=
"状态"
)
private
String
status
;
@ApiModelProperty
(
value
=
"流程key"
)
private
String
processKey
;
@ApiModelProperty
(
value
=
"任务code"
)
private
String
nextTaskCode
;
@ApiModelProperty
(
value
=
"业务数据"
)
private
String
formData
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/entity/JyjcCmTask.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity
;
/**
* 业务工作流关系表
*
* @author system_generator
* @date 2026-04-03
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
"tz_jyjc_cm_task"
)
public
class
JyjcCmTask
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 工作流实例ID
*/
@TableField
(
"instance_id"
)
private
String
instanceId
;
/**
* 备注(无用预留)
*/
@TableField
(
"remark"
)
private
String
remark
;
/**
* 检验结果方式
*/
@TableField
(
"result_type"
)
private
String
resultType
;
/**
* 发起人id用于撤回操作
*/
@TableField
(
"promoter"
)
private
String
promoter
;
/**
* 创建人
*/
@TableField
(
"create_user_id"
)
private
String
createUserId
;
/**
* 工作流下一节点任务id
*/
@TableField
(
"next_task_id"
)
private
String
nextTaskId
;
/**
* 下一节点执行人userIds
*/
@TableField
(
"next_execute_user_ids"
)
private
String
nextExecuteUserIds
;
/**
* 业务表示
*/
@TableField
(
"s_seq"
)
private
String
sSeq
;
/**
* 业务类型
*/
@TableField
(
"s_type"
)
private
String
sType
;
/**
* 状态
*/
@TableField
(
"status"
)
private
String
status
;
/**
* 流程key
*/
@TableField
(
"process_key"
)
private
String
processKey
;
/**
* 任务code
*/
@TableField
(
"next_task_code"
)
private
String
nextTaskCode
;
/**
* 业务数据
*/
@TableField
(
"form_data"
)
private
String
formData
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/mapper/JyjcCmTaskMapper.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
mapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcCmTask
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* 业务工作流关系表 Mapper 接口
*
* @author system_generator
* @date 2026-04-03
*/
public
interface
JyjcCmTaskMapper
extends
BaseMapper
<
JyjcCmTask
>
{
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/model/InspectionPlanModel.java
View file @
bc8d536a
...
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import
com.alibaba.excel.annotation.format.DateTimeFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
...
...
@@ -14,10 +15,22 @@ import java.util.Map;
*/
@Data
public
class
InspectionPlanModel
implements
Serializable
{
/**
* 业务负责人
*/
private
String
inspectionChargePerson
;
/**
* 备注
*/
private
String
remark2
;
/**
* 计划检验检测日期
*/
L
ocalDate
planInspectionDate
;
L
ist
<
String
>
planInspectionDate
;
/**
* 检验检测地点
...
...
@@ -38,4 +51,19 @@ public class InspectionPlanModel implements Serializable {
* 人员类型
*/
private
String
personType
;
/**
* 工作流id
*/
private
String
processInstanceId
;
/**
* 任务id
*/
private
String
taskId
;
/**
* 最近执行人
*/
private
String
promoter
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/service/IJyjcCmWorkflowService.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
service
;
/**
* 业务工作流关系表接口类
*
* @author system_generator
* @date 2026-04-03
*/
public
interface
IJyjcCmWorkflowService
{}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/resources/mapper/JyjcCmTaskMapper.xml
0 → 100644
View file @
bc8d536a
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcCmTaskMapper"
>
</mapper>
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/controller/InspectionPlanController.java
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.InspectionPlanModel
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.InspectionPlanServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.component.event.RestEventTrigger
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
...
...
@@ -22,13 +23,45 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
@RequestMapping
(
value
=
"/inspection/plan"
)
@Api
(
tags
=
"计划排期"
)
@RequiredArgsConstructor
public
class
InspectionPlanController
{
public
class
InspectionPlanController
extends
BaseController
{
private
final
InspectionPlanServiceImpl
inspectionPlanService
;
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/{applicationSeq}/workBenchDetail"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"计划排期详情及单据信息-工作台"
,
notes
=
"计划排期详情及单据信息-工作台"
)
public
ResponseModel
<
JSONObject
>
getWorkBenchDetail
(
@PathVariable
String
applicationSeq
)
{
return
ResponseHelper
.
buildResponse
(
inspectionPlanService
.
getWorkBenchDetail
(
applicationSeq
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/flowExecute"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"计划排期执行流程"
,
notes
=
"计划排期执行流程"
)
@RestEventTrigger
(
value
=
"operateLogRestEventHandler"
)
public
ResponseModel
<
Object
>
flowExecute
(
@RequestBody
JSONObject
map
)
{
inspectionPlanService
.
flowExecute
(
Long
.
valueOf
(
String
.
valueOf
(
map
.
get
(
"applicationSeq"
))),
String
.
valueOf
(
map
.
get
(
"instanceId"
)),
String
.
valueOf
(
map
.
get
(
"operate"
)),
String
.
valueOf
(
map
.
get
(
"comment"
)),
String
.
valueOf
(
map
.
get
(
"nextTaskId"
)),
map
,
getSelectedOrgInfo
());
return
ResponseHelper
.
buildResponse
(
"ok"
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/withdraw"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"计划排期撤回"
,
notes
=
"撤回"
)
@RestEventTrigger
(
value
=
"operateLogRestEventHandler"
)
public
ResponseModel
<
Boolean
>
withdraw
(
@RequestParam
(
"sequenceNbr"
)
String
sequenceNbr
,
@RequestParam
(
"instanceId"
)
String
instanceId
,
@RequestParam
(
"nextTaskId"
)
String
nextTaskId
)
{
return
ResponseHelper
.
buildResponse
(
inspectionPlanService
.
withdraw
(
instanceId
,
nextTaskId
,
sequenceNbr
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/{applicationSeq}/save"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"计划排期
保存"
,
notes
=
"计划排期保存
"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"计划排期
编辑-列表二次维护使用"
,
notes
=
"计划排期编辑
"
)
public
ResponseModel
<
InspectionPlanModel
>
savePlanData
(
@PathVariable
String
applicationSeq
,
@RequestBody
InspectionPlanModel
model
)
{
return
ResponseHelper
.
buildResponse
(
inspectionPlanService
.
savePlanData
(
applicationSeq
,
model
));
...
...
@@ -36,8 +69,8 @@ public class InspectionPlanController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/{applicationSeq}/detail"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"计划排期详情"
,
notes
=
"计划排期详情"
)
public
ResponseModel
<
JSONObject
>
savePlanData
(
@PathVariable
String
applicationSeq
)
{
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"计划排期详情
-列表二次维护使用
"
,
notes
=
"计划排期详情"
)
public
ResponseModel
<
JSONObject
>
planDataDetail
(
@PathVariable
String
applicationSeq
)
{
return
ResponseHelper
.
buildResponse
(
inspectionPlanService
.
getDetail
(
applicationSeq
));
}
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/controller/JyjcInspectionApplicationController.java
View file @
bc8d536a
...
...
@@ -195,7 +195,7 @@ public class JyjcInspectionApplicationController extends BaseController {
@RestEventTrigger
(
value
=
"operateLogRestEventHandler"
)
public
ResponseModel
<?>
executeFlow
(
@PathVariable
(
value
=
"type"
)
String
type
,
@RequestBody
Map
<
String
,
Object
>
params
)
{
params
.
put
(
"type"
,
type
);
jyjcInspectionApplicationServiceImpl
.
doReceive
(
params
);
jyjcInspectionApplicationServiceImpl
.
doReceive
(
params
,
getSelectedOrgInfo
()
);
HashMap
<
String
,
String
>
result
=
new
HashMap
<>();
result
.
put
(
"result"
,
"success"
);
return
ResponseHelper
.
buildResponse
(
result
);
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/ICmWorkflowService.java
View file @
bc8d536a
...
...
@@ -23,4 +23,6 @@ public interface ICmWorkflowService {
ProcessTaskDTO
rejectSpecifiedNode
(
String
taskId
,
TaskResultDTO
data
);
ProcessTaskDTO
completeOrReject
(
String
taskId
,
TaskResultDTO
data
,
String
operate
);
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/TaskModelServiceImpl.java
View file @
bc8d536a
...
...
@@ -300,7 +300,7 @@ public class TaskModelServiceImpl {
obj
.
remove
(
"detectionRegion"
);
obj
.
remove
(
"expiryDate"
);
obj
.
remove
(
"applyTime"
);
obj
.
remove
(
"
expiryDate
"
);
obj
.
remove
(
"
formData
"
);
}
private
static
String
toQueryParams2
(
JSONObject
jsonObject
)
{
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/CmWorkflowServiceImpl.java
View file @
bc8d536a
...
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import
com.alibaba.fastjson.JSONObject
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yeejoin.amos.boot.module.jyjc.biz.config.LocalBadRequest
;
import
com.yeejoin.amos.boot.module.jyjc.biz.feign.WorkflowFeignClient
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.ICmWorkflowService
;
...
...
@@ -14,8 +15,11 @@ import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.exception.BaseException
;
import
java.nio.charset.StandardCharsets
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Administrator
...
...
@@ -24,6 +28,16 @@ import java.util.List;
@Slf4j
public
class
CmWorkflowServiceImpl
implements
ICmWorkflowService
{
/**
* 通过
*/
public
static
String
PASS_OPERATE
=
"0"
;
/**
* 驳回
*/
public
static
String
REJECT_OPERATE
=
"1"
;
@Autowired
private
WorkflowFeignClient
workflowFeignClient
;
...
...
@@ -47,6 +61,86 @@ public class CmWorkflowServiceImpl implements ICmWorkflowService {
}
@Override
public
ProcessTaskDTO
completeOrReject
(
String
taskId
,
TaskResultDTO
data
,
String
operate
)
{
ProcessTaskDTO
processTaskDTO
;
try
{
if
(
PASS_OPERATE
.
equals
(
operate
)){
// 通过操作
log
.
info
(
"开始请求工作流-完成任务-接口:/complete/standard/{taskId},请求参数:{},{},{}"
,
taskId
,
operate
,
JSONObject
.
toJSONString
(
data
));
processTaskDTO
=
workflowFeignClient
.
completeByTaskFroStandard
(
taskId
,
data
).
getResult
();
}
else
if
(
REJECT_OPERATE
.
equals
(
operate
))
{
// 驳回操作
log
.
info
(
"开始请求工作流-驳回任务-接口:/reject/{taskId},请求参数:{},{},{}"
,
taskId
,
operate
,
JSONObject
.
toJSONString
(
data
));
processTaskDTO
=
workflowFeignClient
.
reject
(
taskId
,
data
).
getResult
();
}
else
{
// 执行普通节点(提交)
log
.
info
(
"开始请求工作流完成任务接口:/complete/standard/{taskId},请求参数:{},{},{}"
,
taskId
,
operate
,
JSONObject
.
toJSONString
(
data
));
processTaskDTO
=
workflowFeignClient
.
completeByTaskFroStandard
(
taskId
,
data
).
getResult
();
}
log
.
info
(
"请求工作流接口completeOrReject结束,返回结果:{}"
,
JSONObject
.
toJSONString
(
processTaskDTO
));
}
catch
(
InnerInvokException
e
)
{
//拦截无审核人异常信息
String
devMessage
=
getErrorMessage
(
e
);
log
.
error
(
devMessage
);
throw
new
LocalBadRequest
(
devMessage
);
}
catch
(
Exception
e
)
{
log
.
error
(
"调用工作流完成任务接口失败"
,
e
);
String
responseBody
=
extractFeignResponseBody
(
e
);
String
devMessage
=
extractDevMessageFromJson
(
responseBody
);
throw
new
RuntimeException
(
devMessage
!=
null
?
devMessage
:
"流程处理失败"
,
e
);
}
return
processTaskDTO
;
}
private
String
extractDevMessageFromJson
(
String
jsonStr
)
{
if
(
jsonStr
==
null
||
jsonStr
.
trim
().
isEmpty
())
return
null
;
try
{
ObjectMapper
mapper
=
new
ObjectMapper
();
Map
<
String
,
Object
>
json
=
mapper
.
readValue
(
jsonStr
,
Map
.
class
);
Object
devMessage
=
json
.
get
(
"devMessage"
);
Object
message
=
json
.
get
(
"message"
);
if
(
devMessage
!=
null
&&
!
String
.
valueOf
(
devMessage
).
trim
().
isEmpty
())
{
return
String
.
valueOf
(
devMessage
);
}
else
if
(
message
!=
null
)
{
return
String
.
valueOf
(
message
);
}
}
catch
(
Exception
ex
)
{
log
.
warn
(
"解析响应JSON出错: {}"
,
jsonStr
,
ex
);
}
return
null
;
}
private
String
getErrorMessage
(
BaseException
e
){
String
devMessage
=
e
.
getDevMessage
();
if
(
devMessage
.
contains
(
";"
)){
String
tempMsg
=
devMessage
.
split
(
";"
)[
0
];
if
(
tempMsg
.
contains
(
":"
)){
devMessage
=
tempMsg
.
split
(
":"
)[
1
];
}
else
{
devMessage
=
tempMsg
;
}
}
return
devMessage
;
}
private
String
extractFeignResponseBody
(
Exception
e
)
{
if
(
e
instanceof
feign
.
FeignException
)
{
feign
.
FeignException
fe
=
(
feign
.
FeignException
)
e
;
try
{
return
new
String
(
fe
.
content
(),
StandardCharsets
.
UTF_8
);
}
catch
(
Exception
ex
)
{
log
.
warn
(
"读取Feign响应体失败"
,
ex
);
}
}
return
e
.
getMessage
();
}
@Override
public
ProcessTaskDTO
complete
(
String
taskId
,
TaskResultDTO
data
)
{
ProcessTaskDTO
processTaskDTO
;
try
{
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/CommonServiceImpl.java
View file @
bc8d536a
...
...
@@ -23,6 +23,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.enums.PersonTypeEnum;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.InstanceRuntimeData
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.WorkflowResultDto
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo
;
...
...
@@ -33,6 +34,8 @@ import com.yeejoin.amos.component.feign.model.FeignClientResult;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.privilege.model.CompanyModel
;
import
com.yeejoin.amos.feign.workflow.model.ActTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.redisson.api.RBucket
;
...
...
@@ -40,6 +43,8 @@ import org.redisson.api.RedissonClient;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
...
...
@@ -140,6 +145,51 @@ public class CommonServiceImpl {
}
/**
* 根据工作流返回信息,组装业务需要的数据
*
* @param processTaskDTOS 工作流返回信息
* @return 组装后的信息
*/
public
List
<
WorkflowResultDto
>
buildWorkFlowInfo
(
List
<
ProcessTaskDTO
>
processTaskDTOS
)
{
List
<
WorkflowResultDto
>
workflowResultDtoList
=
new
ArrayList
<>();
processTaskDTOS
.
forEach
(
item
->
{
WorkflowResultDto
workflowResultDto
=
new
WorkflowResultDto
();
if
(!
ObjectUtils
.
isEmpty
(
item
.
getProcessInstance
()))
{
workflowResultDto
.
setInstanceId
(
item
.
getProcessInstance
().
getId
());
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getTask
()))
{
workflowResultDto
.
setTaskName
(
item
.
getTask
().
getName
());
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getCandidateGroups
()))
{
workflowResultDto
.
setExecutorRoleIds
(
String
.
join
(
","
,
item
.
getCandidateGroups
()));
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getStartUser
()))
{
workflowResultDto
.
setStartUserId
(
item
.
getStartUser
().
getUserId
());
workflowResultDto
.
setStartUserName
(
item
.
getStartUser
().
getRealName
());
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getExecutor
()))
{
workflowResultDto
.
setExecutorId
(
item
.
getExecutor
().
getUserId
());
workflowResultDto
.
setExecutorName
(
item
.
getExecutor
().
getRealName
());
}
if
(!
CollectionUtils
.
isEmpty
(
item
.
getNextTask
()))
{
ActTaskDTO
actTaskDTO
=
item
.
getNextTask
().
get
(
item
.
getNextTask
().
size
()
-
1
);
workflowResultDto
.
setNextTaskId
(
actTaskDTO
.
getId
());
workflowResultDto
.
setNextTaskCode
(
actTaskDTO
.
getKey
());
workflowResultDto
.
setNextTaskName
(
actTaskDTO
.
getName
());
List
<
String
>
nextGroups
=
item
.
getNextCandidateGroups
().
get
(
actTaskDTO
.
getId
());
String
join
=
String
.
join
(
","
,
nextGroups
);
workflowResultDto
.
setNextExecutorRoleIds
(
join
);
List
<
String
>
nextUserIds
=
item
.
getNextTaskExecutor
().
get
(
actTaskDTO
.
getId
()).
stream
().
map
(
AgencyUserModel:
:
getUserId
).
collect
(
Collectors
.
toList
());
String
nextUserIdsString
=
String
.
join
(
","
,
nextUserIds
);
workflowResultDto
.
setNextExecutorUserIds
(
nextUserIdsString
);
}
workflowResultDtoList
.
add
(
workflowResultDto
);
});
return
workflowResultDtoList
;
}
public
void
castPersonType2Post
(
LambdaQueryWrapper
<
TzsUserInfo
>
userInfoQueryWrapper
,
String
personType
)
{
if
(
personType
.
contains
(
PersonTypeEnum
.
jc
.
name
())
&&
personType
.
contains
(
PersonTypeEnum
.
jy
.
name
())
&&
personType
.
contains
(
PersonTypeEnum
.
charge
.
name
()))
{
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/InspectionPlanCommonServiceImpl.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl
;
import
com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory
;
import
com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.common.api.enums.EquipmentClassifityEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcCmTask
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.*
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMapper
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* @author Administrator
*/
@Service
@Slf4j
public
class
InspectionPlanCommonServiceImpl
{
@Autowired
private
TaskModelServiceImpl
taskModelService
;
@Autowired
private
DataDictionaryServiceImpl
dataDictionaryService
;
private
final
static
String
msgTpl
=
"%s申请单号:%s,进行%s"
;
void
createdTaskModel
(
JyjcCmTask
model
,
ReginParams
reginParams
,
JyjcInspectionApplication
application
)
{
TaskModelDto
dto
=
new
TaskModelDto
();
TaskMessageDto
ta
=
new
TaskMessageDto
();
ta
.
setInstanceId
(
model
.
getInstanceId
());
ta
.
setStatus
(
model
.
getStatus
());
ta
.
setPromoter
(
model
.
getPromoter
());
ta
.
setSequenceNbr
(
model
.
getSequenceNbr
());
ta
.
setProcessInstanceId
(
model
.
getInstanceId
());
ta
.
setProcessKey
(
model
.
getProcessKey
());
ta
.
setNextTaskId
(
model
.
getNextTaskId
());
ta
.
setBizType
(
model
.
getSType
());
dto
.
setModel
(
ta
);
dto
.
setFlowCreateDate
(
new
Date
());
dto
.
setTaskName
(
model
.
getStatus
());
dto
.
setFlowCode
(
model
.
getNextTaskId
());
dto
.
setTaskContent
(
this
.
buildTaskContent
(
model
.
getNextTaskCode
(),
application
));
dto
.
setTaskCode
(
model
.
getNextTaskCode
());
dto
.
setTaskType
(
BusinessTypeEnum
.
INSPECTION_PLAN
.
getCode
());
dto
.
setTaskTypeLabel
(
BusinessTypeEnum
.
INSPECTION_PLAN
.
getName
());
dto
.
setRelationId
(
model
.
getInstanceId
());
dto
.
setExecuteUserIds
(
model
.
getNextExecuteUserIds
());
dto
.
setTaskStatusLabel
(
"未处理"
);
dto
.
setFlowStatus
(
Integer
.
valueOf
(
model
.
getStatus
()));
dto
.
setFlowStatusLabel
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
());
dto
.
setStartUserId
(
RequestContext
.
getExeUserId
());
dto
.
setStartUser
(
reginParams
.
getUserModel
().
getRealName
());
dto
.
setStartUserCompanyName
(
reginParams
.
getCompany
().
getCompanyName
());
dto
.
setStartDate
(
new
Date
());
dto
.
setNextExecuteUser
(
model
.
getNextExecuteUserIds
());
dto
.
setPageType
(
"edit"
);
taskModelService
.
buildTaskModel
(
Collections
.
singletonList
(
dto
));
}
private
String
buildTaskContent
(
String
taskCode
,
JyjcInspectionApplication
application
)
{
if
(
taskCode
.
equals
(
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getCode
()))
{
return
String
.
format
(
msgTpl
,
getDictNameByCode
(
application
.
getInspectionType
(),
"JYJC"
),
application
.
getApplicationNo
(),
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getPass
());
}
else
if
(
taskCode
.
equals
(
WorkFlowStatusEnum
.
INSPECTION_PLAN_INSPECT_CONFIRM
.
getCode
()))
{
return
String
.
format
(
msgTpl
,
getDictNameByCode
(
application
.
getInspectionType
(),
"JYJC"
),
application
.
getApplicationNo
(),
WorkFlowStatusEnum
.
INSPECTION_PLAN_INSPECT_CONFIRM
.
getPass
());
}
log
.
error
(
"非法的任务类型:{}"
,
taskCode
);
return
""
;
}
private
String
getDictNameByCode
(
String
code
,
String
dictType
)
{
DataDictionary
dataDictionary
=
dataDictionaryService
.
getByCode
(
code
,
dictType
);
return
dataDictionary
!=
null
?
dataDictionary
.
getName
()
:
""
;
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/InspectionPlanServiceImpl.java
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl
;
import
com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory
;
import
com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.common.api.enums.EquipmentClassifityEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcCmTask
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.InspectionPlanModel
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.*
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMapper
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
...
...
@@ -24,8 +40,12 @@ import java.util.stream.Stream;
* @author Administrator
*/
@Service
public
class
InspectionPlanServiceImpl
{
@RequiredArgsConstructor
@Slf4j
public
class
InspectionPlanServiceImpl
extends
InspectionPlanCommonServiceImpl
{
private
final
RedissonClient
redissonClient
;
private
final
IdxBizJgProjectContraptionMapper
idxBizJgProjectContraptionMapper
;
private
final
JyjcInspectionApplicationServiceImpl
inspectionApplicationService
;
...
...
@@ -36,15 +56,33 @@ public class InspectionPlanServiceImpl {
private
final
ESEquipmentCategory
esEquipmentCategory
;
public
InspectionPlanServiceImpl
(
JyjcInspectionApplicationServiceImpl
inspectionApplicationService
,
JyjcInspectionApplicationEquipServiceImpl
applicationEquipService
,
JyjcInspectionResultServiceImpl
inspectionResultService
,
ESEquipmentCategory
esEquipmentCategory
,
IdxBizJgProjectContraptionMapper
idxBizJgProjectContraptionMapper
)
{
this
.
inspectionApplicationService
=
inspectionApplicationService
;
this
.
applicationEquipService
=
applicationEquipService
;
this
.
inspectionResultService
=
inspectionResultService
;
this
.
esEquipmentCategory
=
esEquipmentCategory
;
this
.
idxBizJgProjectContraptionMapper
=
idxBizJgProjectContraptionMapper
;
}
private
final
CommonServiceImpl
commonService
;
private
final
CmWorkflowServiceImpl
cmWorkflowService
;
private
final
TaskModelServiceImpl
taskModelService
;
private
final
DataDictionaryServiceImpl
dataDictionaryService
;
private
final
JyjcCmTaskServiceImpl
cmTaskService
;
private
final
static
String
msgTpl
=
"%s申请单号:%s,进行%s"
;
/**
* 通过
*/
private
final
static
String
OPERATE_PASS
=
"0"
;
/**
* 驳回
*/
private
final
static
String
OPERATE_REJECT
=
"1"
;
/**
* 撤回
*/
private
final
static
String
OPERATE_WITHDRAW
=
"2"
;
public
InspectionPlanModel
savePlanData
(
String
applicationSeq
,
InspectionPlanModel
model
)
{
...
...
@@ -56,6 +94,7 @@ public class InspectionPlanServiceImpl {
inspectionApplicationService
.
update
(
updateWrapper
);
// 异步写入计划排期日期,统计办理时效使用
this
.
updatePlanCreateDate
(
applicationSeq
);
// todo 注意此处编辑后的数据不再回写道公共台的原始数据中,为反应原始审批信息,原始数据在审批完成后就已经进行固化,不再随这修改
return
model
;
}
...
...
@@ -100,4 +139,177 @@ public class InspectionPlanServiceImpl {
private
String
concatDetailAddress
(
ESEquipmentCategoryDto
esEquipmentCategoryDto
)
{
return
Stream
.
of
(
esEquipmentCategoryDto
.
getUSE_PLACE
(),
esEquipmentCategoryDto
.
getADDRESS
()).
map
(
a
->
a
==
null
?
""
:
a
.
replace
(
"/"
,
""
).
trim
()).
collect
(
Collectors
.
joining
());
}
public
JSONObject
getWorkBenchDetail
(
String
applicationSeq
)
{
JSONObject
res
=
new
JSONObject
();
JyjcCmTask
jyjcCmTask
=
cmTaskService
.
getOneBySSeq
(
String
.
valueOf
(
applicationSeq
));
BeanUtil
.
copyProperties
(
jyjcCmTask
,
res
);
res
.
putAll
(
JSONObject
.
parseObject
(
jyjcCmTask
.
getFormData
()));;
Map
<
String
,
Object
>
applyInfo
=
inspectionApplicationService
.
selectBySeq
(
Long
.
parseLong
(
applicationSeq
),
null
);
applyInfo
.
remove
(
"planData"
);
res
.
put
(
"applyInfo"
,
applyInfo
);
return
res
;
}
public
void
flowExecute
(
Long
applicationSeq
,
String
instanceId
,
String
operate
,
String
comment
,
String
nextTaskId
,
JSONObject
params
,
ReginParams
reginParams
)
{
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if
(!
isLocked
)
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 流程执行时,状态及权限校验
commonService
.
checkForExecuteFlow
(
nextTaskId
,
instanceId
);
InspectionPlanModel
planModel
=
JSONObject
.
parseObject
(
params
.
toJSONString
(),
InspectionPlanModel
.
class
);
// 组装信息
TaskResultDTO
dto
=
new
TaskResultDTO
();
dto
.
setTaskId
(
nextTaskId
);
dto
.
setComment
(
comment
);
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
JyjcInspectionApplication
application
=
inspectionApplicationService
.
getById
(
applicationSeq
);
// 需要再确认
dto
.
setNextExecuteUserCompanyCode
(
application
.
getInspectionUnitCode
());
map
.
put
(
"approvalStatus"
,
operate
);
// 任务接收人
map
.
put
(
"assignee"
,
this
.
getAssigneeUserId
(
planModel
));
dto
.
setResultCode
(
"approvalStatus"
);
dto
.
setVariable
(
map
);
// 1-驳回 0-通过
ProcessTaskDTO
complete
=
cmWorkflowService
.
completeOrReject
(
nextTaskId
,
dto
,
operate
);
ArrayList
<
ProcessTaskDTO
>
processTaskDTOS
=
new
ArrayList
<>();
processTaskDTOS
.
add
(
complete
);
List
<
WorkflowResultDto
>
resultDto
=
commonService
.
buildWorkFlowInfo
(
processTaskDTOS
);
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
JyjcCmTask
jyjcCmTask
=
cmTaskService
.
getOneBySSeq
(
String
.
valueOf
(
applicationSeq
));
if
(
workflowResultDto
!=
null
&&
workflowResultDto
.
getNextTaskId
()
!=
null
)
{
// 完成待办
jyjcCmTask
.
setStatus
(
this
.
buildStatus
(
workflowResultDto
.
getNextTaskCode
(),
operate
));
jyjcCmTask
.
setNextTaskCode
(
workflowResultDto
.
getNextTaskCode
());
jyjcCmTask
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jyjcCmTask
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
// 驳回后不能撤回
jyjcCmTask
.
setPromoter
(
OPERATE_PASS
.
equals
(
operate
)
?
RequestContext
.
getExeUserId
()
:
""
);
jyjcCmTask
.
setFormData
(
params
.
toJSONString
());
cmTaskService
.
save
(
jyjcCmTask
);
updateTaskModel
(
jyjcCmTask
);
// 创建新的待办
createdTaskModel
(
jyjcCmTask
,
reginParams
,
application
);
// 更新新的缓存校验数据到redis
}
else
{
// 更新业务信息
jyjcCmTask
.
setStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
jyjcCmTask
.
setNextTaskCode
(
""
);
jyjcCmTask
.
setNextTaskId
(
""
);
jyjcCmTask
.
setNextExecuteUserIds
(
""
);
jyjcCmTask
.
setFormData
(
params
.
toJSONString
());
cmTaskService
.
updateById
(
jyjcCmTask
);
LambdaUpdateWrapper
<
JyjcInspectionApplication
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
BaseEntity:
:
getSequenceNbr
,
applicationSeq
);
updateWrapper
.
set
(
JyjcInspectionApplication:
:
getPlanInspectionDate
,
planModel
.
getRemark2
());
// 通过后将数据回写到业务的字段中,兼容之前的数据格式
updateWrapper
.
set
(
JyjcInspectionApplication:
:
getInspectionChargePerson
,
planModel
.
getInspectionChargePerson
());
updateWrapper
.
set
(
JyjcInspectionApplication:
:
getRemark2
,
planModel
.
getRemark2
());
updateWrapper
.
set
(
JyjcInspectionApplication:
:
getPlanData
,
params
.
toJSONString
());
inspectionApplicationService
.
update
(
updateWrapper
);
this
.
updatePlanCreateDate
(
String
.
valueOf
(
applicationSeq
));
// 完成待办
updateTaskModel
(
jyjcCmTask
);
}
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
jyjcCmTask
));
}
catch
(
InterruptedException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
private
InstanceRuntimeData
buildInstanceRuntimeData
(
JyjcCmTask
jyjcCmTask
)
{
return
InstanceRuntimeData
.
builder
()
.
nextExecuteUserIds
(
jyjcCmTask
.
getNextExecuteUserIds
())
.
promoter
(
jyjcCmTask
.
getPromoter
())
.
nextTaskId
(
jyjcCmTask
.
getNextTaskId
())
.
build
();
}
private
String
buildStatus
(
String
nextTaskCode
,
String
operate
)
{
if
(
nextTaskCode
.
equals
(
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getCode
()))
{
return
OPERATE_PASS
.
equals
(
operate
)
?
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getPass
()
:
OPERATE_WITHDRAW
.
equals
(
operate
)
?
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getRollBack
():
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getReject
();
}
else
if
(
nextTaskCode
.
equals
(
WorkFlowStatusEnum
.
INSPECTION_PLAN_INSPECT_CONFIRM
.
getCode
()))
{
return
OPERATE_PASS
.
equals
(
operate
)
?
WorkFlowStatusEnum
.
INSPECTION_PLAN_INSPECT_CONFIRM
.
getPass
()
:
OPERATE_WITHDRAW
.
equals
(
operate
)
?
WorkFlowStatusEnum
.
INSPECTION_PLAN_INSPECT_CONFIRM
.
getRollBack
():
WorkFlowStatusEnum
.
INSPECTION_PLAN_INSPECT_CONFIRM
.
getReject
();
}
return
""
;
}
private
String
getAssigneeUserId
(
InspectionPlanModel
planModel
)
{
return
planModel
.
getInspectionChargePerson
();
}
public
boolean
withdraw
(
String
instanceId
,
String
nextTaskId
,
String
applicationSeq
)
{
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if
(!
isLocked
)
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 流程执行时,状态及权限校验
commonService
.
checkForRevocationFlow
(
nextTaskId
,
instanceId
);
JyjcInspectionApplicationModel
inspectionApplicationModel
=
inspectionApplicationService
.
queryBySeq
(
Long
.
valueOf
(
applicationSeq
));
if
(
inspectionApplicationModel
==
null
)
{
log
.
warn
(
"JyjcInspectionApplicationModel Not Found!sequenceNbr => {}"
,
applicationSeq
);
return
false
;
};
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
inspectionApplicationModel
.
getProcessInstanceId
());
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
WorkflowResultDto
workflowResultDto
=
workflowResultDtos
.
get
(
0
);
JyjcCmTask
jyjcCmTask
=
cmTaskService
.
getOneBySSeq
(
applicationSeq
);
jyjcCmTask
.
setStatus
(
this
.
buildStatus
(
workflowResultDto
.
getNextTaskCode
(),
OPERATE_WITHDRAW
));
jyjcCmTask
.
setNextTaskCode
(
workflowResultDto
.
getNextTaskCode
());
jyjcCmTask
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jyjcCmTask
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
jyjcCmTask
.
setPromoter
(
""
);
cmTaskService
.
updateById
(
jyjcCmTask
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
jyjcCmTask
));
jsonObject
.
put
(
"nextTaskId"
,
workflowResultDto
.
getNextTaskId
());
jsonObject
.
put
(
"taskType"
,
BusinessTypeEnum
.
INSPECTION_PLAN
.
getCode
());
jsonObject
.
put
(
"flowStatus"
,
this
.
getDictNameByCode
(
jyjcCmTask
.
getStatus
()));
jsonObject
.
put
(
"flowStatusLabel"
,
jyjcCmTask
.
getStatus
());
jsonObject
.
remove
(
"formData"
);
taskModelService
.
rollbackTask
(
inspectionApplicationModel
.
getProcessInstanceId
(),
jsonObject
);
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
jyjcCmTask
));
return
true
;
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"撤回流程办理单失败:{}"
,
e
.
getMessage
(),
e
);
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
return
Boolean
.
FALSE
;
}
private
void
updateTaskModel
(
JyjcCmTask
model
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"relationId"
,
model
.
getSequenceNbr
());
params
.
put
(
"taskStatus"
,
model
.
getStatus
());
params
.
put
(
"taskStatusLabel"
,
model
.
getStatus
());
params
.
put
(
"flowStatus"
,
model
.
getStatus
());
params
.
put
(
"flowStatusLabel"
,
model
.
getStatus
());
JSONObject
jsonModel
=
(
JSONObject
)
JSONObject
.
toJSON
(
model
);
taskModelService
.
removeNoUsedKey
(
jsonModel
);
Map
<
String
,
Object
>
modelMap
=
new
HashMap
<>(
jsonModel
);
params
.
put
(
"model"
,
BeanUtil
.
toBeanIgnoreError
(
modelMap
,
JyjcInspectionApplicationModel
.
class
));
taskModelService
.
updateTaskModel
(
params
);
}
private
String
getDictNameByCode
(
String
code
)
{
DataDictionary
dataDictionary
=
dataDictionaryService
.
getByCode
(
code
,
"JGGZZZ"
);
return
dataDictionary
!=
null
?
dataDictionary
.
getName
()
:
""
;
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/JyjcCmTaskServiceImpl.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.dto.JyjcCmTaskDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcCmTask
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcCmTaskMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcCmWorkflowService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.springframework.stereotype.Service
;
/**
* 业务工作流关系表服务实现类
*
* @author system_generator
* @date 2026-04-03
*/
@Service
public
class
JyjcCmTaskServiceImpl
extends
BaseService
<
JyjcCmTaskDto
,
JyjcCmTask
,
JyjcCmTaskMapper
>
implements
IJyjcCmWorkflowService
{
public
JyjcCmTask
getOneBySSeq
(
String
seq
){
LambdaQueryWrapper
<
JyjcCmTask
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
JyjcCmTask:
:
getSSeq
,
seq
);
return
this
.
getOne
(
queryWrapper
);
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/JyjcInspectionApplicationServiceImpl.java
View file @
bc8d536a
...
...
@@ -144,6 +144,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
private
EquipTechParamBoilerMapper
equipTechParamBoilerMapper
;
@Autowired
private
WorkBenchTaskCreateServiceImpl
workBenchTaskCreateService
;
/**
* 分页查询
*/
...
...
@@ -767,7 +770,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
/**
* 接收
*
* @param params params
* @param params params
* @param selectedOrgInfo
* @return {@link }
* @throws
* @author yangyang
...
...
@@ -775,7 +779,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@GlobalTransactional
(
rollbackFor
=
Exception
.
class
)
public
void
doReceive
(
Map
<
String
,
Object
>
params
)
{
public
void
doReceive
(
Map
<
String
,
Object
>
params
,
ReginParams
reginParams
)
{
String
instanceId
=
params
.
get
(
"instanceId"
).
toString
();
String
nextTaskId
=
params
.
get
(
"nextTaskId"
).
toString
();
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
...
...
@@ -956,6 +960,12 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Override
public
void
afterCommit
()
{
docUpdateService
.
genDocAndUpdate
(
model
.
getSequenceNbr
()
+
""
);
try
{
workBenchTaskCreateService
.
createOneTask
(
jyjcInspectionApplication
,
reginParams
);
}
catch
(
Exception
e
)
{
log
.
error
(
"报检受理后,创建计划排期失败,单据信息:{},错误信息:{}"
,
jyjcInspectionApplication
.
getApplicationNo
(),
e
.
getMessage
());
}
}
});
}
catch
(
InterruptedException
e
)
{
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/WorkBenchTaskCreateServiceImpl.java
0 → 100644
View file @
bc8d536a
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
.
impl
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcCmTask
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.InstanceRuntimeData
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.TaskMessageDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.TaskModelDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.WorkflowResultDto
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
lombok.RequiredArgsConstructor
;
import
org.jetbrains.annotations.NotNull
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
java.util.*
;
@Service
@RequiredArgsConstructor
public
class
WorkBenchTaskCreateServiceImpl
extends
InspectionPlanCommonServiceImpl
{
private
final
CmWorkflowServiceImpl
cmWorkflowService
;
private
final
TaskModelServiceImpl
taskModelService
;
private
final
JyjcCmTaskServiceImpl
cmTaskService
;
private
final
CommonServiceImpl
commonService
;
@Value
(
"${inspect.plan.process.key:dddd}"
)
private
String
processKey
;
public
void
createOneTask
(
JyjcInspectionApplication
application
,
ReginParams
reginParams
)
{
// 启动流程
List
<
WorkflowResultDto
>
workflowResultDtos
=
startProcess
(
application
);
// 保存数据
JyjcCmTask
cmTask
=
saveJyjcCmTask
(
application
,
workflowResultDtos
);
// 创建待办
createdTaskModel
(
cmTask
,
reginParams
,
application
);
// 缓存执行节点信息
commonService
.
saveExecuteFlowData2Redis
(
cmTask
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
cmTask
));
}
private
List
<
WorkflowResultDto
>
startProcess
(
JyjcInspectionApplication
application
)
{
ActWorkflowBatchDTO
actWorkflowBatchDTO
=
new
ActWorkflowBatchDTO
();
List
<
ActWorkflowStartDTO
>
list
=
new
ArrayList
<>();
ActWorkflowStartDTO
dto
=
new
ActWorkflowStartDTO
();
dto
.
setProcessDefinitionKey
(
processKey
);
dto
.
setBusinessKey
(
String
.
valueOf
(
new
Date
().
getTime
()));
dto
.
setCompleteFirstTask
(
true
);
HashMap
<
String
,
Object
>
variables
=
new
HashMap
<>();
// 指定下一节点执行人,谁受理谁执行
variables
.
put
(
"nextAssignee"
,
RequestContext
.
getExeUserId
());
dto
.
setVariables
(
variables
);
list
.
add
(
dto
);
actWorkflowBatchDTO
.
setProcess
(
list
);
dto
.
setNextExecuteUserCompanyCode
(
application
.
getInspectionUnitCode
());
List
<
ProcessTaskDTO
>
processTasks
=
cmWorkflowService
.
startBatch
(
actWorkflowBatchDTO
);
return
taskModelService
.
buildWorkFlowInfo
(
processTasks
);
}
@NotNull
private
JyjcCmTask
saveJyjcCmTask
(
JyjcInspectionApplication
application
,
List
<
WorkflowResultDto
>
workflowResultDtos
)
{
JyjcCmTask
cmTask
=
new
JyjcCmTask
();
cmTask
.
setPromoter
(
""
);
cmTask
.
setNextTaskId
(
workflowResultDtos
.
get
(
0
).
getNextTaskId
());
cmTask
.
setNextTaskCode
(
workflowResultDtos
.
get
(
0
).
getNextTaskCode
());
cmTask
.
setNextExecuteUserIds
(
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
());
cmTask
.
setInstanceId
(
workflowResultDtos
.
get
(
0
).
getInstanceId
());
cmTask
.
setProcessKey
(
processKey
);
cmTask
.
setSSeq
(
application
.
getSequenceNbr
().
toString
());
cmTask
.
setSType
(
application
.
getBizType
());
cmTask
.
setStatus
(
WorkFlowStatusEnum
.
INSPECTION_PLAN_ASSIGN_USER
.
getPass
());
cmTaskService
.
save
(
cmTask
);
return
cmTask
;
}
private
InstanceRuntimeData
buildInstanceRuntimeData
(
JyjcCmTask
cmTask
)
{
return
InstanceRuntimeData
.
builder
()
.
nextExecuteUserIds
(
cmTask
.
getNextExecuteUserIds
())
.
promoter
(
cmTask
.
getPromoter
())
.
nextTaskId
(
cmTask
.
getNextTaskId
()).
build
();
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/resources/json/bizTypeInfo.json
View file @
bc8d536a
...
...
@@ -73,5 +73,11 @@
"type"
:
"114"
,
"pageType"
:
"edit"
,
"url"
:
"/mixuap?appId=1742358052905971713&id=1735201757841092609&roleIds={roleIds}&userId={userId}&pageType=edit"
},
{
"type"
:
"125"
,
"pageType"
:
"edit"
,
"typeName"
:
"计划排期"
,
"url"
:
"/mixuap?appId=1742358052905971713&id=2039590365681446914&userId={userId}&pageType=edit"
}
]
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment