From ed9f1d757d6d3486dd69a726454eb69c3c9bc538 Mon Sep 17 00:00:00 2001 From: lyh <liuyuanheng@xalxzn.com> Date: 星期二, 25 二月 2025 11:28:04 +0800 Subject: [PATCH] flowable工作流 config配置 --- lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml | 1 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java | 19 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java | 95 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiSignExamineServiceimpl.java | 11 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IToEquipmentTaskService.java | 7 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileStreamQueryRequest.java | 17 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiSignExamine.java | 53 + lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml | 89 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiDefinitionMapper.java | 7 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java | 8 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ToEquipmentTaskServiceImpl.java | 11 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java | 7 lxzn-module-system/lxzn-system-start/src/main/resources/application.yml | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java | 16 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java | 7 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiSignExamineMapper.java | 7 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiDefinitionService.java | 60 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml | 13 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/TaskRequest.java | 13 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ActivitiDefinitionRequest.java | 11 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiSignExamineService.java | 9 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ApproveBatchRequest.java | 15 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java | 26 lxzn-module-flowable/pom.xml | 18 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ToEquipmentTaskMapper.java | 7 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java | 788 ++++++++++++++++++++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ToEquipmentTask.java | 62 + /dev/null | 21 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/ActTaskExt.java | 16 lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java | 3 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java | 111 +++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiDefinitionServiceImpl.java | 150 ++++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java | 20 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiDefinition.java | 44 + lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/AssignFileStream.java | 75 ++ lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/config/FlowableConfig.java | 65 ++ 36 files changed, 1,855 insertions(+), 29 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java new file mode 100644 index 0000000..c989068 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java @@ -0,0 +1,111 @@ +package org.jeecg.modules.flow.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.modules.flow.service.IAssignFileStreamService; +import org.jeecg.modules.flow.entity.AssignFileStream; +import org.jeecg.modules.flow.ext.AssignFileStreamExt; +import org.jeecg.modules.flow.request.ApproveBatchRequest; +import org.jeecg.modules.flow.request.AssignFileRequest; +import org.jeecg.modules.flow.request.AssignFileStreamQueryRequest; +import org.jeecg.modules.dnc.response.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@Slf4j +@Api(tags = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔") +@RestController +@RequestMapping("/nc/activit") +public class AssignFileStreamController { + @Resource + private IAssignFileStreamService assignFileStreamService; + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey") + @PostMapping("/assign/file/apply") + public ResponseResult applyAssignFile(@RequestBody AssignFileStream stream) { + ResponseResult b = assignFileStreamService.applyAssignFile(stream); + if(b.isSuccess()) { + return new ResponseResult(CommonCode.SUCCESS); + } + return b; + } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-瀹℃壒鏈嶅姟") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-瀹℃壒鏈嶅姟", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-瀹℃壒鏈嶅姟") + @PostMapping("/assign/file/approve/{taskId}/{streamId}") + public ResponseResult approveAssignFile(@PathVariable("taskId") String taskId, @PathVariable("streamId") String streamId, + @RequestBody AssignFileStream stream) { + boolean b = assignFileStreamService.approveAssignFile(taskId, streamId, stream); + if(b) + return new ResponseResult(CommonCode.SUCCESS); + return new ResponseResult(CommonCode.FAIL); + } + +// @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鑾峰彇褰撳墠鐢ㄦ埛鐨勫緟鍔炲強鍙嬀鍙栫殑浠诲姟") +// @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鑾峰彇褰撳墠鐢ㄦ埛鐨勫緟鍔炲強鍙嬀鍙栫殑浠诲姟", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鑾峰彇褰撳墠鐢ㄦ埛鐨勫緟鍔炲強鍙嬀鍙栫殑浠诲姟") +// @GetMapping("/find/task/list") +// public Result<?> getUndoTaskList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, +// @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { +// IPage<ActTaskExt> actTaskExtIPage = assignFileStreamService.getUndoTaskList(pageNo,pageSize); +// return Result.ok(actTaskExtIPage); +// } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵归噺鎸囨淳鍒拌澶�") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵归噺鎸囨淳鍒拌澶�", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵归噺鎸囨淳鍒拌澶�") + @PostMapping("/assign/file/batch/apply") + public ResponseResult applyBatchAssignFile(@RequestBody AssignFileRequest assignFileRequest) { + boolean b = assignFileStreamService.applyBatchAssignFile(assignFileRequest); + if(b) + return new ResponseResult(CommonCode.SUCCESS); + return new ResponseResult(CommonCode.FAIL); + } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵归噺瀹℃壒") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵归噺瀹℃壒", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵归噺瀹℃壒") + @PostMapping("/assign/file/batch/approve") + public ResponseResult approveBatchAssignFile(@RequestBody ApproveBatchRequest approveBatchRequest) { + boolean b = assignFileStreamService.approveBatchAssignFile(approveBatchRequest); + if(b) + return new ResponseResult(CommonCode.SUCCESS); + return new ResponseResult(CommonCode.FAIL); + } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-宸插姙鍒楄〃鑾峰彇") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-宸插姙鍒楄〃鑾峰彇", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-宸插姙鍒楄〃鑾峰彇") + @GetMapping("/find/page") + public Result<?> findPageList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, AssignFileStreamQueryRequest request) { + return assignFileStreamService.findPageList(pageNo, pageSize, request); + } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鏌ヨ鏂囨。鐨勫鎵硅褰�") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鏌ヨ鏂囨。鐨勫鎵硅褰�", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鏌ヨ鏂囨。鐨勫鎵硅褰�") + @GetMapping("/find/page/{page}/{size}/{docId}") + public QueryPageResponseResult<AssignFileStreamExt> findPageListByDocId(@PathVariable("page") int page, @PathVariable("size") int size, @PathVariable("docId") String docId) { + return assignFileStreamService.findPageListByDocId(page, size, docId); + } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鑾峰彇鍚敤娴佺▼鐨勬爣璁�") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鑾峰彇鍚敤娴佺▼鐨勬爣璁�", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鑾峰彇鍚敤娴佺▼鐨勬爣璁�") + @GetMapping("/get/enable/flag") + public DataResponseResult<Boolean> getActiveEnable() { + Boolean b = assignFileStreamService.getFlowableEnable(); + return new DataResponseResult<>(CommonCode.SUCCESS, b); + } + + @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊") + @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊") + @PostMapping("/transfer/doc") + public ResponseResult transferDocFile(String pnCode, String deviceNo) { + boolean b = assignFileStreamService.transferDocFile(pnCode, deviceNo); + if(b) + return new ResponseResult(CommonCode.SUCCESS); + return new ResponseResult(CommonCode.FAIL); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiDefinition.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiDefinition.java new file mode 100644 index 0000000..469c30a --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiDefinition.java @@ -0,0 +1,44 @@ +package org.jeecg.modules.flow.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.Api; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.jeecg.common.aspect.annotation.Dict; + +import java.util.Date; + +@Data +@NoArgsConstructor +@TableName("nc_activiti_definition_info") +@Api(value= "DNC鎸囨淳璁惧娴佺▼瀹氫箟") +public class ActivitiDefinition { + @TableId(value = "id") + private String id; + @TableField(value = "act_name") + private String actName; + @TableField(value = "depart_id") + @Dict(dictTable = "mdc_production",dicCode = "id",dicText = "production_name") + private String departId; + @TableField(value = "approve_users") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String approveUsers; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; + @TableField(value = "update_time", fill = FieldFill.UPDATE) + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date updateTime; + @JsonIgnore + @TableField(value = "create_user", select = false, fill = FieldFill.INSERT) + private String createUser; + @JsonIgnore + @TableField(value = "update_user", select = false, fill = FieldFill.UPDATE) + private String updateUser; + @JsonIgnore + @TableLogic + @TableField(value = "delete_flag", select = false) + private Integer deleteFlag = 0; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiSignExamine.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiSignExamine.java new file mode 100644 index 0000000..8fc31cd --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ActivitiSignExamine.java @@ -0,0 +1,53 @@ +package org.jeecg.modules.flow.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.Api; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.jeecg.common.aspect.annotation.Dict; + +import java.util.Date; + +@Data +@NoArgsConstructor +@TableName("nc_assign_to_sign_examine") +@Api(value= "NC绋嬪簭绛炬淳娴佺▼瀹氫箟") +public class ActivitiSignExamine { + @TableId(value = "id") + private String id; + @TableField(value = "act_name") + private String actName; + @TableField(value = "depart_id") + @Dict(dictTable = "mdc_production",dicCode = "id",dicText = "production_name") + private String departId; + @TableField(value = "proofreader_user") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String proofreaderUser; + @TableField(value = "approving_user") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String approveUser; + @TableField(value = "cutter_user") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String cutterUser; + @TableField(value = "typecast_user") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String typecastUser; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; + @TableField(value = "update_time", fill = FieldFill.UPDATE) + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date updateTime; + @JsonIgnore + @TableField(value = "create_by", select = false, fill = FieldFill.INSERT) + private String createBy; + @JsonIgnore + @TableField(value = "update_by", select = false, fill = FieldFill.UPDATE) + private String updateBy; + @JsonIgnore + @TableLogic + @TableField(value = "delete_flag", select = false) + private Integer deleteFlag = 0; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/AssignFileStream.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/AssignFileStream.java new file mode 100644 index 0000000..a8a903d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/AssignFileStream.java @@ -0,0 +1,75 @@ +package org.jeecg.modules.flow.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.Api; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.jeecg.common.aspect.annotation.Dict; + +import java.util.Date; + +@Data +@NoArgsConstructor +@TableName("nc_assign_file_stream") +@Api(value= "DNC鎸囨淳璁惧娴佺▼鎿嶄綔") +public class AssignFileStream { + @TableId(value = "stream_id") + private String streamId; + @TableField(value = "product_id") + private String productId; + @TableField(value = "component_id") + private String componentId; + @TableField(value = "parts_id") + private String partsId; + @TableField(value = "process_id") + private String processId; + @TableField(value = "step_id") + private String stepId; + @TableField(value = "doc_id") + private String docId; + @TableField(value = "file_id") + private String fileId; + @TableField(value = "device_id") + private String deviceId; + @TableField(value = "apply_user_id") + private String applyUserId; + @TableField(value = "apply_reason") + private String applyReason; + @TableField(value = "apply_time") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date applyTime; + @TableField(value = "approve_user_id") + private String approveUserId; + @TableField(value = "approve_content") + private String approveContent; + @TableField(value = "approve_time") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date approveTime; + @TableField(value = "status") + @Dict(dicCode = "dnc_assign_stream_status") + private Integer status; + @JsonIgnore + @TableField(value = "create_time", select = false, fill = FieldFill.INSERT) + private Date createTime; + @JsonIgnore + @TableField(value = "update_time", select = false, fill = FieldFill.UPDATE) + private Date updateTime; + @JsonIgnore + @TableField(value = "create_user", select = false, fill = FieldFill.INSERT) + private String createUser; + @JsonIgnore + @TableField(value = "update_user", select = false, fill = FieldFill.UPDATE) + private String updateUser; + @JsonIgnore + @TableLogic + @TableField(value = "delete_flag", select = false) + private Integer deleteFlag = 0; + + /**鎸囨淳璁惧涓撶敤-鎵�灞濱D*/ + private transient String attributionId; + + /**鎸囨淳璁惧涓撶敤-鎵�灞瀟ype*/ + private transient String attributionType; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ToEquipmentTask.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ToEquipmentTask.java new file mode 100644 index 0000000..5b2b23d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/ToEquipmentTask.java @@ -0,0 +1,62 @@ +package org.jeecg.modules.flow.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@NoArgsConstructor +@TableName("nc_to_equipment_lists") +public class ToEquipmentTask { + @TableId(value = "code") + private String code; + @TableField(value = "doc_id") + private String docId; + @TableField(value = "file_id") + private String fileId; + @TableField(value = "device_id") + private String deviceId; + @TableField(value = "device_no") + private String deviceNo; + @TableField(value = "depart_id") + private String departId; + @TableField(value = "file_name") + private String fileName; + @TableField(value = "file_encode_name") + private String fileEncodeName; + @TableField(value = "file_path") + private String filePath; + @TableField(value = "file_suffix") + private String fileSuffix; + @TableField(value = "doc_version") + private String docVersion; + @TableField(value = "file_size") + private Long fileSize; + @TableField(value = "sync_flag") + private Integer syncFlag; + @TableField(value = "sync_time") + private Date syncTime; + @TableField(value = "apply_user") + private String applyUser; + @TableField(value = "apply_time") + private Date applyTime; + @JsonIgnore + @TableField(value = "create_time", select = false, fill = FieldFill.INSERT) + private Date createTime; + @JsonIgnore + @TableField(value = "update_time", select = false, fill = FieldFill.UPDATE) + private Date updateTime; + @JsonIgnore + @TableField(value = "create_user", select = false, fill = FieldFill.INSERT) + private String createUser; + @JsonIgnore + @TableField(value = "update_user", select = false, fill = FieldFill.UPDATE) + private String updateUser; + @JsonIgnore + @TableLogic + @TableField(value = "delete_flag", select = false) + private Integer deleteFlag = 0; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/ActTaskExt.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/ActTaskExt.java new file mode 100644 index 0000000..b0bc0c4 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/ActTaskExt.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.flow.ext; + +import lombok.Data; +import lombok.NoArgsConstructor; +@Data +@NoArgsConstructor +public class ActTaskExt { + private String id; + private String name; + private String processInstanceId; + private String assignee; + private String executionId; + private String processDefinitionId; + private String businessKey; + private AssignFileStreamExt assignFileStream; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java new file mode 100644 index 0000000..642ae9d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.flow.ext; + +import lombok.Data; +import lombok.NoArgsConstructor; +import org.jeecg.modules.flow.entity.AssignFileStream; + +@Data +@NoArgsConstructor +public class AssignFileStreamExt extends AssignFileStream { + private String productName; + private String componentName; + private String partsName; + private String docName; + private String version; + private String applyUser; + private String approveUser; + private String deviceName; + private String docSuffix; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiDefinitionMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiDefinitionMapper.java new file mode 100644 index 0000000..054d02e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiDefinitionMapper.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.flow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.flow.entity.ActivitiDefinition; + +public interface ActivitiDefinitionMapper extends BaseMapper<ActivitiDefinition> { +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiSignExamineMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiSignExamineMapper.java new file mode 100644 index 0000000..803a105 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ActivitiSignExamineMapper.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.flow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.flow.entity.ActivitiSignExamine; + +public interface ActivitiSignExamineMapper extends BaseMapper<ActivitiSignExamine> { +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java new file mode 100644 index 0000000..e6740ff --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java @@ -0,0 +1,26 @@ +package org.jeecg.modules.flow.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.flow.entity.AssignFileStream; +import org.jeecg.modules.flow.ext.AssignFileStreamExt; + +public interface AssignFileStreamMapper extends BaseMapper<AssignFileStream> { + /** + * 鍏宠仈鐢ㄦ埛琛� 鑾峰彇鐢ㄦ埛鏄电О + * @param streamId + * @return + */ + AssignFileStreamExt getAssignFileStreamDetail(@Param("streamId") String streamId); + + /** + * 鍒嗛〉鏌ヨ宸插姙浠诲姟 + * @param page + * @param wrapper + * @return + */ + IPage<AssignFileStreamExt> findByPage(IPage<AssignFileStreamExt> page, @Param(Constants.WRAPPER) Wrapper<AssignFileStreamExt> wrapper); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ToEquipmentTaskMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ToEquipmentTaskMapper.java new file mode 100644 index 0000000..8ff63d7 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/ToEquipmentTaskMapper.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.flow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.flow.entity.ToEquipmentTask; + +public interface ToEquipmentTaskMapper extends BaseMapper<ToEquipmentTask> { +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml new file mode 100644 index 0000000..cdbc3cb --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml @@ -0,0 +1,89 @@ +<?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="org.jeecg.modules.flow.mapper.AssignFileStreamMapper"> + <select id="getAssignFileStreamDetail" resultType="org.jeecg.modules.flow.ext.AssignFileStreamExt" parameterType="String"> + select a.stream_id + , a.product_id + , a.component_id + , a.parts_id + , a.process_id + , a.doc_id + , a.file_id + , a.device_id + , a.apply_user_id + , a.apply_reason + , a.apply_time + , a.approve_user_id + , a.approve_content + , a.approve_time + , a.status + , u1.realname as applyUser + , u2.realname as approveUser + , p.product_name as productName + , c.component_name as componentName + , pt.parts_name as partsName + , dc.doc_name as docName + , dc.publish_version as version + , dc.doc_suffix as docSuffix + , de.device_name as deviceName + from (select * from nc_assign_file_stream where stream_id=#{streamId}) a + left join sys_user u1 + on a.apply_user_id=u1.id + left join sys_user u2 + on a.approve_user_id=u2.id + left join nc_product_info p + on a.product_id=p.product_id + left join nc_component_info c + on a.component_id=c.component_id + left join nc_parts_info pt + on a.parts_id=pt.parts_id + left join nc_doc_info dc + on a.doc_id=dc.doc_id + left join nc_device_info de + on a.device_id=de.device_id + + </select> + + <select id="findByPage" resultType="org.jeecg.modules.flow.ext.AssignFileStreamExt" parameterType="String"> + select a.stream_id + , a.product_id + , a.component_id + , a.parts_id + , a.process_id + , a.doc_id + , a.file_id + , a.device_id + , a.apply_user_id + , a.apply_reason + , a.apply_time + , a.approve_user_id + , a.approve_content + , a.approve_time + , a.status + , u1.realname as applyUser + , u2.realname as approveUser + , p.product_name as productName + , c.component_name as componentName + , pt.parts_name as partsName + , dc.doc_name as docName + , dc.publish_version as version + , dc.doc_suffix as docSuffix + , de.device_name as deviceName + from (select * from nc_assign_file_stream where delete_flag=0 and approve_time is not null) a + left join sys_user u1 + on a.apply_user_id=u1.id + left join sys_user u2 + on a.approve_user_id=u2.id + left join nc_product_info p + on a.product_id=p.product_id + left join nc_component_info c + on a.component_id=c.component_id + left join nc_parts_info pt + on a.parts_id=pt.parts_id + left join nc_doc_info dc + on a.doc_id=dc.doc_id + left join nc_device_info de + on a.device_id=de.device_id + ${ew.customSqlSegment} + </select> +</mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ActivitiDefinitionRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ActivitiDefinitionRequest.java new file mode 100644 index 0000000..d23079c --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ActivitiDefinitionRequest.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.flow.request; + +import lombok.Data; + +@Data +public class ActivitiDefinitionRequest { + private String actName; + //鎺掑簭瀛楁 + private String descStr; + private String ascStr; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ApproveBatchRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ApproveBatchRequest.java new file mode 100644 index 0000000..213ca8e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/ApproveBatchRequest.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.flow.request; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +@Data +@NoArgsConstructor +public class ApproveBatchRequest implements Serializable { + private String approveContent; + private Integer status; + private List<TaskRequest> taskArr; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java new file mode 100644 index 0000000..645da28 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.flow.request; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +public class AssignFileRequest implements Serializable { + private String processId; + private String fileId; + private String docId; + private String applyReason; + private String[] deviceIds; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileStreamQueryRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileStreamQueryRequest.java new file mode 100644 index 0000000..d6166bb --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileStreamQueryRequest.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.flow.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@ApiModel(value = "宸插姙浠诲姟鏌ヨ鏉′欢", description = "宸插姙浠诲姟鏌ヨ") +public class AssignFileStreamQueryRequest { + //鎺掑簭瀛楁 + @ApiModelProperty(value = "闄嶅簭鎺掑垪", notes="鎺掑簭瀛楁涓烘暟鎹簱鍏蜂綋瀛楁鍚嶏紝闇�瑕佽В鏋愶紱 澶氫釜瀛楁浠ヨ嫳鏂囬�楀彿鍒嗛殧") + private String descStr; + @ApiModelProperty(value = "鍗囧簭鎺掑垪", notes="鎺掑簭瀛楁涓烘暟鎹簱鍏蜂綋瀛楁鍚嶏紝闇�瑕佽В鏋愶紱 澶氫釜瀛楁浠ヨ嫳鏂囬�楀彿鍒嗛殧") + private String ascStr; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/TaskRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/TaskRequest.java new file mode 100644 index 0000000..8af48ea --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/TaskRequest.java @@ -0,0 +1,13 @@ +package org.jeecg.modules.flow.request; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +public class TaskRequest implements Serializable { + private String id; + private String businessKey; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiDefinitionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiDefinitionService.java new file mode 100644 index 0000000..b67624d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiDefinitionService.java @@ -0,0 +1,60 @@ +package org.jeecg.modules.flow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.flow.entity.ActivitiDefinition; +import org.jeecg.modules.flow.request.ActivitiDefinitionRequest; + +import java.util.List; + +public interface IActivitiDefinitionService extends IService<ActivitiDefinition> { + /** + * 娣诲姞閰嶇疆 + * @param definition + * @return + */ + boolean addDefinition(ActivitiDefinition definition); + /** + * 缂栬緫閰嶇疆 + * @param definition + * @return + */ + boolean editDefinition(String id, ActivitiDefinition definition); + + /** + * 鍒犻櫎閰嶇疆 + * @param id + * @return + */ + boolean deleteDefinition(String id); + + /** + * 鑾峰彇閮ㄩ棬鐨勬祦绋嬪畾涔� + * @param departId + * @return + */ + ActivitiDefinition getByDepartId(String departId); + + /** + * 鍒嗛〉鏌ヨ + * @param page + * @param size + * @param request + * @return + */ + Result<?> findPageList(int page, int size, ActivitiDefinitionRequest request); + + /** + * 鑾峰彇澶氫釜閮ㄩ棬鐨勫鎵逛汉 鍘婚噸 + * @param departIds + * @return + */ + List<String> getByDepartIds(List<String> departIds); + + /** + * 鏍规嵁鐢ㄦ埛淇℃伅鑾峰彇瀹℃壒 + * @param userId + * @return + */ + List<ActivitiDefinition> findByUserId(String userId); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiSignExamineService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiSignExamineService.java new file mode 100644 index 0000000..1ad8dc8 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IActivitiSignExamineService.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.flow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.flow.entity.ActivitiSignExamine; + + +public interface IActivitiSignExamineService extends IService<ActivitiSignExamine> { + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java new file mode 100644 index 0000000..6b6e86f --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java @@ -0,0 +1,95 @@ +package org.jeecg.modules.flow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.flow.entity.AssignFileStream; +import org.jeecg.modules.flow.ext.AssignFileStreamExt; +import org.jeecg.modules.flow.request.ApproveBatchRequest; +import org.jeecg.modules.flow.request.AssignFileRequest; +import org.jeecg.modules.flow.request.AssignFileStreamQueryRequest; +import org.jeecg.modules.dnc.response.QueryPageResponseResult; +import org.jeecg.modules.dnc.response.ResponseResult; + +public interface IAssignFileStreamService extends IService<AssignFileStream> { + /** + * 鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey + * @param stream + * @return + */ + ResponseResult applyAssignFile(AssignFileStream stream); + + /**securedoc + * 鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey + * @param stream + * @return + */ + boolean applyAssignFileActive(AssignFileStream stream); + /** + * 鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey + * @param stream + * @return + */ + ResponseResult applyAssignFileNonActive(AssignFileStream stream); + + + /** + * 鍏宠仈鐢ㄦ埛琛� 鑾峰彇鐢ㄦ埛鏄电О + * @param streamId + * @return + */ + AssignFileStreamExt getAssignFileStreamDetail(String streamId); + + /** + * 瀹℃壒鏈嶅姟 + * @param taskId + * @param streamId + * @param stream + * @return + */ + boolean approveAssignFile(String taskId, String streamId, AssignFileStream stream); + + /** + * 鎵归噺鎸囨淳鍒拌澶� + * @param assignFileRequest + * @return + */ + boolean applyBatchAssignFile(AssignFileRequest assignFileRequest); + + /** + * 鎵归噺瀹℃壒 + * @param approveBatchRequest + * @return + */ + boolean approveBatchAssignFile(ApproveBatchRequest approveBatchRequest); + + /** + * 宸插姙鍒楄〃鑾峰彇 + * @param page + * @param size + * @return + */ + Result<?> findPageList(int page, int size, AssignFileStreamQueryRequest request); + + /** + * 鏌ヨ鏂囨。鐨勫鎵硅褰� + * @param page + * @param size + * @param docId + * @return + */ + QueryPageResponseResult<AssignFileStreamExt> findPageListByDocId(int page, int size, String docId); + + /** + * 鑾峰彇鍚敤娴佺▼鐨勬爣璁� + * @return + */ + Boolean getFlowableEnable(); + + /** + * 鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊 + * @param pnCode + * @param deviceNo + * @return + */ + boolean transferDocFile(String pnCode, String deviceNo); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IToEquipmentTaskService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IToEquipmentTaskService.java new file mode 100644 index 0000000..9f30e60 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IToEquipmentTaskService.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.flow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.flow.entity.ToEquipmentTask; + +public interface IToEquipmentTaskService extends IService<ToEquipmentTask> { +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiDefinitionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiDefinitionServiceImpl.java new file mode 100644 index 0000000..b6c5074 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiDefinitionServiceImpl.java @@ -0,0 +1,150 @@ +package org.jeecg.modules.flow.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.flow.service.IActivitiDefinitionService; +import org.jeecg.modules.flow.entity.ActivitiDefinition; +import org.jeecg.modules.flow.mapper.ActivitiDefinitionMapper; +import org.jeecg.modules.flow.request.ActivitiDefinitionRequest; +import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.mapper.DepartmentMapper; +import org.jeecg.modules.dnc.response.ActivitiDefinitionCode; +import org.jeecg.modules.dnc.response.CommonCode; +import org.jeecg.modules.dnc.utils.ValidateUtil; +import org.jeecg.modules.system.entity.MdcProduction; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.IMdcProductionService; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Service +public class ActivitiDefinitionServiceImpl extends ServiceImpl<ActivitiDefinitionMapper, ActivitiDefinition> implements IActivitiDefinitionService { + @Autowired + private DepartmentMapper departmentMapper; + @Autowired + private ISysUserService userService; + @Autowired + private IMdcProductionService iMdcProductionService; + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean addDefinition(ActivitiDefinition definition) { + if(definition == null || !ValidateUtil.validateString(definition.getDepartId()) + || !ValidateUtil.validateString(definition.getActName()) || !ValidateUtil.validateString(definition.getApproveUsers())) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + ActivitiDefinition en = getByDepartId(definition.getDepartId()); + if(en != null) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_IS_EXIST); + //淇敼涓簃dc杞﹂棿 + MdcProduction mdcProduction=iMdcProductionService.getById(definition.getDepartId()); + if(mdcProduction == null) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_DEPART_NONE); + String[] userIds = definition.getApproveUsers().split(","); + if(userIds == null|| userIds.length < 1) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_USER_NONE); + List<String> userIdList = new ArrayList<>(userIds.length); + Collections.addAll(userIdList, userIds); + Collection<SysUser> userList = userService.listByIds(userIdList); + if(userList == null || userList.isEmpty() || userList.size() != userIds.length) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_USER_NONE); + return super.save(definition); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean editDefinition(String id, ActivitiDefinition definition) { + if(!ValidateUtil.validateString(id) || definition == null) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + ActivitiDefinition en = super.getById(id); + if(en == null) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_NOT_EXIST); + String[] userIds = definition.getApproveUsers().split(","); + if(userIds == null|| userIds.length < 1) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_USER_NONE); + List<String> userIdList = new ArrayList<>(userIds.length); + Collections.addAll(userIdList, userIds); + Collection<SysUser> userList = userService.listByIds(userIdList); + if(userList == null || userList.isEmpty() || userList.size() != userIds.length) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_USER_NONE); + definition.setId(id); + definition.setDepartId(null); + return super.updateById(definition); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean deleteDefinition(String id) { + if(!ValidateUtil.validateString(id)) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + ActivitiDefinition en = super.getById(id); + if(en == null) + ExceptionCast.cast(ActivitiDefinitionCode.DEF_NOT_EXIST); + return super.removeById(id); + } + + @Override + public ActivitiDefinition getByDepartId(String departId) { + if(!ValidateUtil.validateString(departId)) + return null; + List<ActivitiDefinition> list = super.lambdaQuery().eq(ActivitiDefinition::getDepartId, departId).list(); + if(list == null || list.isEmpty()) + return null; + return list.get(0); + } + + @Override + public Result<?> findPageList(int page, int size, ActivitiDefinitionRequest request) { + if(page < 1 || size < 1) { + ExceptionCast.cast(CommonCode.INVALID_PAGE); + } + IPage<ActivitiDefinition> pageData = new Page<>(page, size); + LambdaQueryChainWrapper<ActivitiDefinition> lambdaQuery = super.lambdaQuery(); + if(request != null) { + if(ValidateUtil.validateString(request.getActName())) { + lambdaQuery.like(ActivitiDefinition::getActName, request.getActName()); + } + } + lambdaQuery.orderByDesc(ActivitiDefinition::getCreateTime); + IPage<ActivitiDefinition> definitionIPage = lambdaQuery.page(pageData); + return Result.ok(definitionIPage); + + } + + @Override + public List<String> getByDepartIds(List<String> departIds) { + if(departIds == null || departIds.isEmpty()) + return null; + List<ActivitiDefinition> list = super.lambdaQuery().in(ActivitiDefinition::getDepartId, departIds).list(); + if(list == null || list.isEmpty()) + return null; + Map<String, String> userIdMap = new HashMap<>(); + list.forEach(item -> { + if(ValidateUtil.validateString(item.getApproveUsers())) { + String[] arr = item.getApproveUsers().split(","); + if(arr != null && arr.length > 0) { + for (String s : arr) { + userIdMap.put(s, s); + } + } + } + }); + if(userIdMap.isEmpty()) + return null; + List<String> userIds = new ArrayList<>(); + userIdMap.forEach((key, value) -> { + userIds.add(key); + }); + return userIds; + } + + @Override + public List<ActivitiDefinition> findByUserId(String userId) { + return super.lambdaQuery().like(ActivitiDefinition::getApproveUsers, userId).list(); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiSignExamineServiceimpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiSignExamineServiceimpl.java new file mode 100644 index 0000000..a96f31a --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ActivitiSignExamineServiceimpl.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.flow.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.flow.entity.ActivitiSignExamine; +import org.jeecg.modules.flow.mapper.ActivitiSignExamineMapper; +import org.jeecg.modules.flow.service.IActivitiSignExamineService; +import org.springframework.stereotype.Service; + +@Service +public class ActivitiSignExamineServiceimpl extends ServiceImpl<ActivitiSignExamineMapper, ActivitiSignExamine> implements IActivitiSignExamineService { +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java new file mode 100644 index 0000000..97159f1 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java @@ -0,0 +1,788 @@ +package org.jeecg.modules.flow.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.flow.entity.ToEquipmentTask; +import org.jeecg.modules.flow.service.IActivitiDefinitionService; +import org.jeecg.modules.flow.service.IAssignFileStreamService; +import org.jeecg.modules.flow.service.IToEquipmentTaskService; +import org.jeecg.modules.flow.entity.AssignFileStream; +import org.jeecg.modules.flow.ext.AssignFileStreamExt; +import org.jeecg.modules.flow.mapper.AssignFileStreamMapper; +import org.jeecg.modules.flow.request.ApproveBatchRequest; +import org.jeecg.modules.flow.request.AssignFileRequest; +import org.jeecg.modules.flow.request.AssignFileStreamQueryRequest; +import org.jeecg.modules.flow.request.TaskRequest; +import org.jeecg.modules.dnc.entity.*; +import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.ext.NcTxtFilePathInfo; +import org.jeecg.modules.dnc.response.*; +import org.jeecg.modules.dnc.service.*; +import org.jeecg.modules.dnc.utils.ValidateUtil; +import org.jeecg.modules.dnc.utils.date.DateUtil; +import org.jeecg.modules.dnc.utils.file.FileUtilS; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.system.entity.MdcProduction; +import org.jeecg.modules.system.service.IMdcProductionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class AssignFileStreamServiceImpl extends ServiceImpl<AssignFileStreamMapper, AssignFileStream> implements IAssignFileStreamService { + private static final String PROCESS_KEY = "assign_nc_to_device"; + private static final String APPLY_VARIABLE = "apply_user"; + private static final String APPROVE_VARIABLE = "approve_users"; + private static final String SEND_CODE = "SEND"; + + @Value("${flowable.enable}") + private Boolean flowableEnable; + + @Autowired + private IDocInfoService docInfoService; + @Autowired + private IProcessStreamService processStreamService; + @Autowired + private IWorkStepService workStepService; + @Autowired + private IPermissionStreamService permissionStreamService; + @Autowired + private IDocClassificationService classificationService; + @Autowired + private IToEquipmentTaskService equipmentTaskService; + @Autowired + private IDeviceInfoService deviceInfoService; + @Autowired + private IDocFileService docFileService; + @Autowired + private IActivitiDefinitionService definitionService; + @Autowired + private IDocRelativeService docRelativeService; + @Autowired + private ISynchronizedFlagService synchronizedFlagService; + @Autowired + private IDeviceGroupService deviceGroupService; + @Autowired + private IDncPassLogService dncPassLogService; + @Autowired + private IDeviceCharactersService iDeviceCharactersService; + @Autowired + private IMdcEquipmentService iMdcEquipmentService; + @Autowired + private IMdcProductionService iMdcProductionService; + @Autowired + private StringRedisTemplate redisTemplate; + @Autowired + private TaskService taskService; + @Resource + private FlowCommonService flowCommonService; + @Resource + private IFlowDefinitionService flowDefinitionService; + + @Value("${securedoc.serverIp}") + private String serverIp; + @Value("${securedoc.serverPort}") + private int serverPort; + @Value("${securedoc.whether}") + private String whether; + @Value("${securedoc.localFilePath}") + private String localFilePath; + + @Override + @Transactional(rollbackFor = {Exception.class}) + public ResponseResult applyAssignFile(AssignFileStream stream) { + synchronized (this){ + //鍒ゆ柇璁惧鐗规畩瀛楃 + String specialChar = getDeviceSpecialChar(stream.getDeviceId(),stream.getFileId()); + if (StrUtil.isNotEmpty(specialChar)){ + //鎶涘嚭鐗规畩瀛楃寮傚父 + return createSpecialCharErrorResponse(specialChar); + } + if(flowableEnable) { + boolean b = applyAssignFileActive(stream); + if (b) { + return ResponseResult.SUCCESS(); + } else { + return ResponseResult.SUCCESS(); + } + + }else { + return applyAssignFileNonActive(stream); + } + } + } + + /** + * 鍒ゆ柇璁惧鐗规畩瀛楃 + * @param deviceId,fileId + * 璁惧ID锛屾枃浠禝D + */ + public String getDeviceSpecialChar(String deviceId, String fileId){ + //鏇挎崲涓簃dc璁惧琛� +// DeviceInfo deviceInfo = deviceInfoService.getById(deviceId); + MdcEquipment mdcEquipment = iMdcEquipmentService.getById(deviceId); + if(mdcEquipment == null) + ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); +// DocFile docFile = docFileService.getById(fileId); + DocInfo docInfo = docInfoService.getOne(new QueryWrapper<DocInfo>().eq("publish_file_id",fileId)); + if(docInfo == null) + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + List<DeviceCharacters> deviceCharactersList=iDeviceCharactersService.list( + new LambdaQueryWrapper<DeviceCharacters>().eq(DeviceCharacters::getDeviceNo,mdcEquipment.getEquipmentId())); + if (deviceCharactersList.isEmpty()){ + return ""; + }else { + List<String> specialCharList=deviceCharactersList.stream().map(DeviceCharacters::getCharacters).collect(Collectors.toList()); + if(!specialCharList.isEmpty()){ + //瀵规瘮鏂囦欢鍚嶆槸鍚﹀寘鍚壒娈婂瓧绗� + String fileName=docInfo.getDocName(); + for(String specialChar:specialCharList){ + if (fileName.contains(specialChar)){ + return specialChar; + } + } + }else { + return ""; + } + } + return ""; + } + + private ResponseResult createSpecialCharErrorResponse(String specialChar) { + return new ResponseResult(new ResultCode() { + @Override + public boolean success() { + return false; + } + @Override + public int code() { + return 88881; + } + @Override + public String message() { + return "鏂囦欢鍚嶇О瀛樺湪璁惧鐗规畩瀛楃" + specialChar; + } + }); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean applyAssignFileActive(AssignFileStream stream) { + validateParams(stream); + DocInfo docInfo = getDocInfo(stream); + MdcEquipment mdcEquipment = getMdcEquipment(stream); + DocFile docFile = docFileService.getById(stream.getFileId()); + DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 4, stream.getDeviceId()); + if (deviceDoc != null) { + handleExistingDeviceDoc(docFile, mdcEquipment, stream.getDeviceId()); + } + deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 4, stream.getDeviceId()); + if (deviceDoc != null) { + handleExistingDeviceDoc(docFile, mdcEquipment, stream.getDeviceId()); + } + List<PermissionStream> permissionStreams = getPermissionStreams(stream); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); +// List<String> departIds = getDepartIds(permissionStreams, userId); +// List<String> userIdList = getUserIdList(departIds); +// saveBusinessObject(stream, userId); +// ProcessInstance processInstance = startProcessInstance(stream, userIdList); +// completeTask(processInstance, userId); + System.out.println("鎸囨淳NC鏂囨。鍒拌澶囨祦绋嬶細" + stream.getDocId()); + flowCommonService.initActBusiness("鎸囨淳NC鏂囨。鍒拌澶囨祦绋嬶細" + stream.getStreamId(), stream.getStreamId(), "IAssignFileStreamService", "assign_nc_to_device", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("id", stream.getStreamId()); + variables.put("approveContent", stream.getApproveContent()); + flowDefinitionService.startProcessInstanceByKey("assign_nc_to_device", variables); + return true; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public ResponseResult applyAssignFileNonActive(AssignFileStream stream) { + //鏉冮檺鏍¢獙 + validateParams(stream); + DocInfo docInfo = getDocInfo(stream); + MdcEquipment mdcEquipment = getMdcEquipment(stream); + DocFile docFile = getDocFile(stream); + DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 4, stream.getDeviceId()); + if(deviceDoc != null) { + // 鍒犻櫎 澶囦唤 瑕嗙洊 鍘熸湁鐨� + List<String> strings=iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ mdcEquipment.getEquipmentId(), + docFile.getFileName(), docFile.getFileSuffix()); + } + } + /*deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 4, stream.getDeviceId()); + if(deviceDoc != null) { + // 鍒犻櫎 澶囦唤 瑕嗙洊 鍘熸湁鐨� + List<String> strings = deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ deviceInfo.getDeviceNo(), + docFile.getFileName(), docFile.getFileSuffix()); + } + }*/ + getPermissionStreams(stream); + //鎻掑叆鏂囨。鍒拌澶囧彂閫佹枃妗� + if(deviceDoc == null) { + DocClassification classification = classificationService.getByCode(SEND_CODE); + if(classification == null) + ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); + DocRelative docRelative = new DocRelative(); + docRelative.setDocId(docInfo.getDocId()); + docRelative.setClassificationId(classification.getClassificationId()); + docRelative.setAttributionType(4); + docRelative.setAttributionId(stream.getDeviceId()); + boolean b = docRelativeService.save(docRelative); + if(!b) { + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + } + + } + handleFileTransfer(mdcEquipment, docFile); + handleFileProcessing(docFile, mdcEquipment, whether, localFilePath); + synchronizedFlagService.updateFlag(2); + return new ResponseResult(CommonCode.SUCCESS); + } + + @Override + public AssignFileStreamExt getAssignFileStreamDetail(String streamId) { + if(!ValidateUtil.validateString(streamId)) + return null; + return super.getBaseMapper().getAssignFileStreamDetail(streamId); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean approveAssignFile(String taskId, String streamId, AssignFileStream stream) { + if(!ValidateUtil.validateString(taskId) || !ValidateUtil.validateString(streamId) || stream == null) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + if(!ValidateUtil.validateString(userId)) + ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); + if(!ValidateUtil.validateInteger(stream.getStatus())) + ExceptionCast.cast(ActivitiCode.ACT_STATUS_ERROR); + AssignFileStream en = super.getById(streamId); + if(en == null) + ExceptionCast.cast(ActivitiCode.ACT_BUSINESS_DETAIL_ERROR); + Task task = taskService.createTaskQuery().taskId(taskId).taskCandidateOrAssigned(userId).singleResult(); + if(task == null) + ExceptionCast.cast(ActivitiCode.ACT_TASK_ERROR); + if(!ValidateUtil.validateString(task.getAssignee())) { + //鎷惧彇浠诲姟 + taskService.claim(task.getId(), userId); + //瀹屾垚浠诲姟 + taskService.complete(task.getId()); + }else { + //瀹屾垚浠诲姟 + taskService.complete(task.getId()); + } + //鏇存柊瀵硅薄灏佽 + AssignFileStream up = new AssignFileStream(); + up.setApproveContent(stream.getApproveContent()); + up.setStatus(stream.getStatus()); + up.setApproveUserId(userId); + up.setApproveTime(DateUtil.getNow()); + up.setStreamId(streamId); + boolean b = super.updateById(up); + if(!b) + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + if(up.getStatus() == 2) { + //鍚屾剰鎿嶄綔 + DocInfo docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 5, en.getProcessId()); + if(docInfo == null || docInfo.getDocStatus() == 3) + ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); + DeviceInfo deviceInfo = deviceInfoService.getById(en.getDeviceId()); + if(deviceInfo == null) + ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); + DocFile docFile = docFileService.getById(en.getFileId()); + if(docFile == null) + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(en.getDocId(),4, en.getDeviceId()); + if(deviceDoc != null) { + // 鍒犻櫎 澶囦唤 瑕嗙洊 鍘熸湁鐨� + List<String> strings = deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ deviceInfo.getDeviceNo(), + docFile.getFileName(), docFile.getFileSuffix()); + /* //docInfoService.getBaseMapper().deleteById(deviceDoc.getDocId()); + boolean doc = docRelativeService.deleteCopyDocByAttrNext(deviceDoc.getDocId(),4,stream.getDeviceId()); + if (!doc) { + ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR_DELEVE); + }*/ + + } + } else { + //鎻掑叆鏂囨。鍒拌澶囧彂閫佹枃妗� + DocClassification classification = classificationService.getByCode(SEND_CODE); + if(classification == null) + ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); + + DocRelative docRelative = new DocRelative(); + docRelative.setDocId(docInfo.getDocId()); + docRelative.setClassificationId(classification.getClassificationId()); + docRelative.setAttributionType(4); + docRelative.setAttributionId(en.getDeviceId()); + b = docRelativeService.save(docRelative); + } + if(!b) + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + if (deviceInfo != null) { + List<String> strings = deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNc(docFile.getFilePath(),path + "/"+ deviceInfo.getDeviceNo(), + docFile.getFileEncodeName(), + docFile.getFileName(),docFile.getFileSuffix()); + if (!copyFileNc) { + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + } else { + FileUtilS.deleteZipFromToSend(path + "/"+ deviceInfo.getDeviceNo(), + docFile.getFileName(),docFile.getFileSuffix()); + + } + } + + } + return synchronizedFlagService.updateFlag(1); + }else if(up.getStatus() == 3) { + //鎷掔粷鎿嶄綔 浠�涔堜篃涓嶅仛 + return true; + }else { + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + } + return false; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean applyBatchAssignFile(AssignFileRequest assignFileRequest) { + if(assignFileRequest == null) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + String[] deviceIds = assignFileRequest.getDeviceIds(); + if(deviceIds == null || deviceIds.length < 1) + ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); + AssignFileStream stream; + for(String id : deviceIds) { + stream = new AssignFileStream(); + stream.setProcessId(assignFileRequest.getProcessId()); + stream.setDocId(assignFileRequest.getDocId()); + stream.setFileId(assignFileRequest.getFileId()); + stream.setApplyReason(assignFileRequest.getApplyReason()); + stream.setDeviceId(id); + ResponseResult b = applyAssignFile(stream); + if(!b.isSuccess()) + ExceptionCast.cast(ActivitiCode.ACT_APPLY_ERROR); + } + return true; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean approveBatchAssignFile(ApproveBatchRequest approveBatchRequest) { + if(approveBatchRequest == null) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + List<TaskRequest> list = approveBatchRequest.getTaskArr(); + if(list == null || list.isEmpty()) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + list.forEach(item -> { + AssignFileStream stream = new AssignFileStream(); + stream.setApproveContent(approveBatchRequest.getApproveContent()); + stream.setStatus(approveBatchRequest.getStatus()); + boolean b = approveAssignFile(item.getId(), item.getBusinessKey(), stream); + if(!b) + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + }); + return synchronizedFlagService.updateFlag(1); + } + + @Override + public Result<?> findPageList(int page, int size, AssignFileStreamQueryRequest request) { + if(page < 1 || size < 1) { + ExceptionCast.cast(CommonCode.INVALID_PAGE); + } + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + if(!ValidateUtil.validateString(userId)) + ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); + LambdaQueryWrapper<AssignFileStreamExt> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(AssignFileStreamExt::getApproveUserId, userId); + lambdaQueryWrapper.orderByDesc(AssignFileStreamExt::getApproveTime); + IPage<AssignFileStreamExt> pageData = new Page<>(page, size); + if(request != null) { + if(ValidateUtil.validateString(request.getAscStr())) { + String[] ascArr = request.getAscStr().split(","); +// ((Page<AssignFileStreamExt>) pageData).setAsc(ascArr); + } + if(ValidateUtil.validateString(request.getDescStr())) { + String[] descStr = request.getDescStr().split(","); +// ((Page<AssignFileStreamExt>) pageData).setDesc(descStr); + } + } + IPage<AssignFileStreamExt> streamExtIPage = super.getBaseMapper().findByPage(pageData, lambdaQueryWrapper); + return Result.ok(streamExtIPage); + } + + @Override + public QueryPageResponseResult<AssignFileStreamExt> findPageListByDocId(int page, int size, String docId) { + if(page < 1 || size < 1) { + ExceptionCast.cast(CommonCode.INVALID_PAGE); + } + if(!ValidateUtil.validateString(docId)) + ExceptionCast.cast(ActivitiCode.ACT_DOC_ID_NONE); + QueryWrapper<AssignFileStreamExt> queryWrapper = Wrappers.query(); + queryWrapper.eq("a.doc_id", docId); + queryWrapper.orderByDesc("approve_time"); + IPage<AssignFileStreamExt> pageData = new Page<>(page, size); + IPage<AssignFileStreamExt> streamExtIPage = super.getBaseMapper().findByPage(pageData, queryWrapper); + return new QueryPageResponseResult<>(CommonCode.SUCCESS, streamExtIPage); + } + + @Override + public Boolean getFlowableEnable(){ + if(flowableEnable != null) { + return flowableEnable; + } + return false; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean transferDocFile(String pnCode, String deviceNo) { + List<ProcessStream> streams = processStreamService.validateDeviceProcessInfo(pnCode, deviceNo); + DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(deviceNo); + if(deviceInfo == null) + ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); + //鍒犻櫎鍘熸潵璁惧涓嬬殑鎵�鏈夋枃妗� + docRelativeService.deleteByDocAttr(4, deviceInfo.getDeviceId()); + List<DocInfo> docInfoList = docInfoService.getByProcessIds(streams); + if(docInfoList == null || docInfoList.isEmpty()) + ExceptionCast.cast(DocumentCode.DOC_NOT_EXIST); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + if(!ValidateUtil.validateString(userId)) + ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); + for(DocInfo docInfo : docInfoList) { + DocFile docFile = docFileService.getById(docInfo.getPublishFileId()); + if(docFile == null) + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + //鎻掑叆鏂囨。鍒拌澶囧彂閫佹枃妗� + DocClassification classification = classificationService.getByCode(SEND_CODE); + if(classification == null) + ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); + DocRelative docRelative = new DocRelative(); + docRelative.setDocId(docInfo.getDocId()); + docRelative.setClassificationId(classification.getClassificationId()); + docRelative.setAttributionType(4); + docRelative.setAttributionId(deviceInfo.getDeviceId()); + boolean b = docRelativeService.save(docRelative); + if(!b) + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + //鎻掑叆鏂囦欢浼犺緭浠诲姟琛� + ToEquipmentTask equipmentTask = new ToEquipmentTask(); + //涓嶈兘鐩存帴浠巇oc涓嬁fileId 鍜寁ersion 鍙兘浼氬瓨鍦ㄦ枌鏇� + //equipmentTask.setFileId(docInfo.getPublishFileId()); + //equipmentTask.setDocVersion(docInfo.getPublishVersion()); + equipmentTask.setDocId(docInfo.getDocId()); + equipmentTask.setSyncFlag(1); + equipmentTask.setDeviceNo(deviceInfo.getDeviceNo()); + equipmentTask.setDeviceId(deviceInfo.getDeviceId()); + equipmentTask.setDepartId(deviceInfo.getDepartId()); + //鏂囦欢鐩稿叧淇℃伅 + equipmentTask.setFileId(docFile.getFileId()); + equipmentTask.setDocVersion(docFile.getDocVersion()); + equipmentTask.setFileName(docInfo.getDocName()); + equipmentTask.setFileEncodeName(docFile.getFileEncodeName()); + equipmentTask.setFilePath(docFile.getFilePath()); + equipmentTask.setFileSuffix(docFile.getFileSuffix()); + equipmentTask.setFileSize(docFile.getFileSize()); + b = equipmentTaskService.save(equipmentTask); + if(!b) { + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); + } + } + return synchronizedFlagService.updateFlag(1); + } + + //浼犲弬楠岃瘉 + private void validateParams(AssignFileStream stream) { + if (stream == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + if (!ValidateUtil.validateString(stream.getAttributionId()) || !ValidateUtil.validateString(stream.getDocId()) + || !ValidateUtil.validateString(stream.getFileId()) || !ValidateUtil.validateString(stream.getAttributionType())) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + if (!ValidateUtil.validateString(stream.getDeviceId())) { + ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); + } + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + if (!ValidateUtil.validateString(userId)) { + ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); + } + } + + //鑾峰彇鏂囦欢淇℃伅 + private DocInfo getDocInfo(AssignFileStream stream) { + DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), Integer.parseInt(stream.getAttributionType()), stream.getAttributionId()); + if (docInfo == null || docInfo.getDocStatus() == 3) { + ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); + } + return docInfo; + } + + //鑾峰彇鏂囦欢 + private void handleExistingDeviceDoc(DocFile docFile, MdcEquipment mdcEquipment, String deviceId) { + List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getEquipmentId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/" + mdcEquipment.getEquipmentId(), + docFile.getFileName(), docFile.getFileSuffix()); + if (!copyFileNc) { + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + } else { + DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(deviceId, 4, deviceId); + boolean doc = docRelativeService.deleteDocByAttr(deviceDoc.getDocId(), 4, deviceId); + if (!doc) { + ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR_DELEVE); + } + } + } + } + + //鏉冮檺鏍¢獙 + private List<PermissionStream> getPermissionStreams(AssignFileStream stream) { + List<PermissionStream> permissionStreams = new ArrayList<>(); + if (stream.getAttributionType().equals("5")) { + // 宸ュ簭 + ProcessStream processStream = processStreamService.getById(stream.getAttributionId()); + if (processStream == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + stream.setProductId(processStream.getProductId()); + stream.setComponentId(processStream.getComponentId()); + stream.setPartsId(processStream.getPartsId()); + stream.setProcessId(processStream.getProcessId()); + permissionStreams = permissionStreamService + .getByProcessId(processStream.getProductId(), processStream.getComponentId(), processStream.getPartsId(), processStream.getProcessId()); + } else { + // 宸ユ + WorkStep workStep = workStepService.getById(stream.getAttributionId()); + if (workStep == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + stream.setProductId(workStep.getProductId()); + stream.setComponentId(workStep.getComponentId()); + stream.setPartsId(workStep.getPartsId()); + stream.setProcessId(workStep.getProcessId()); + stream.setStepId(workStep.getId()); + permissionStreams = permissionStreamService + .getByStepId(workStep.getProductId(), workStep.getComponentId(), workStep.getPartsId(), workStep.getProcessId(), workStep.getId()); + } + if (permissionStreams == null || permissionStreams.isEmpty()) { + ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE); + } + return permissionStreams; + } + + //鑾峰彇閮ㄩ棬淇℃伅 + //todo 淇敼 + private List<String> getDepartIds(List<PermissionStream> permissionStreams, String userId) { + Map<String, MdcProduction> map = iMdcProductionService.getUserAssignedDepart(userId); + List<String> departIds = permissionStreams.stream() + .filter(item -> map.containsKey(item.getDepartId())) + .map(PermissionStream::getDepartId) + .collect(Collectors.toList()); + if (departIds.isEmpty()) { + ExceptionCast.cast(ActivitiCode.ACT_USER_NOT_PERM); + } + return departIds; + } + + //鑾峰彇澶氫釜閮ㄩ棬鐨勫鎵逛汉 鍘婚噸 + private List<String> getUserIdList(List<String> departIds) { + List<String> userIdList = definitionService.getByDepartIds(departIds); + if (userIdList == null || userIdList.isEmpty()) { + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_USERS_NONE); + } + return userIdList; + } + + //灏佽鏁版嵁 + private void saveBusinessObject(AssignFileStream stream, String userId) { + String streamId = IdWorker.getIdStr(); + stream.setStreamId(streamId); + stream.setApplyUserId(userId); + stream.setApplyTime(DateUtil.getNow()); + stream.setStatus(1); + boolean b = super.save(stream); + if (!b) { + ExceptionCast.cast(ActivitiCode.ACT_BUSINESS_SAVE_ERROR); + } + } + + //寮�濮嬪伐浣滄祦 +// private ProcessInstance startProcessInstance(AssignFileStream stream, List<String> userIdList) { +// String approveUsers = String.join(",", userIdList); +// Map<String, Object> avariableMap = new HashMap<>(); +// avariableMap.put(APPLY_VARIABLE, stream.getApplyUserId()); +// avariableMap.put(APPROVE_VARIABLE, approveUsers); +// ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(PROCESS_KEY, stream.getStreamId(), avariableMap); +// if (processInstance == null) { +// ExceptionCast.cast(ActivitiCode.ACT_APPROVE_USERS_NONE); +// } +// return processInstance; +// } + + //鎷惧彇浠诲姟 + private void completeTask(ProcessInstance processInstance, String userId) { + Task task = taskService.createTaskQuery().processDefinitionKey(PROCESS_KEY).taskAssignee(userId) + .processInstanceId(processInstance.getId()).singleResult(); + if (task == null) { + ExceptionCast.cast(ActivitiCode.ACT_APPROVE_USERS_NONE); + } + taskService.complete(task.getId()); + } + + //鑾峰彇璁惧 + private MdcEquipment getMdcEquipment(AssignFileStream stream) { + MdcEquipment mdcEquipment = iMdcEquipmentService.getById(stream.getDeviceId()); + if (mdcEquipment == null) { + ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); + } + return mdcEquipment; + } + + //鑾峰彇鏂囦欢 + private DocFile getDocFile(AssignFileStream stream) { + DocFile docFile = docFileService.getById(stream.getFileId()); + if (docFile == null) { + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + } + return docFile; + } + + //鎻掑叆鏂囦欢浼犺緭浠诲姟琛� + private void handleFileTransfer(MdcEquipment mdcEquipment, DocFile docFile) { + List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNc(docFile.getFilePath(), path + "/" + mdcEquipment.getEquipmentId(), + docFile.getFileEncodeName(), + docFile.getFileName(), docFile.getFileSuffix()); + if (!copyFileNc) { + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + } else { + FileUtilS.deleteZipFromToSend(path + "/" + mdcEquipment.getEquipmentId(), + docFile.getFileName(), docFile.getFileSuffix()); + } + } else { + throw new RuntimeException("鏂囦欢浼犺緭璺緞鑾峰彇澶辫触"); + } + } + + //灏佽澶勭悊鏂囦欢 + private void handleFileProcessing(DocFile docFile, MdcEquipment mdcEquipment, String whether, String localFilePath) { + if (whether.equals("true") && !docFile.getFileSuffix().equals("zip") && !docFile.getFileSuffix().equals("rar")) { + String size = FileUtilS.fileSizeNC(docFile.getFilePath(), docFile.getFileEncodeName()); + List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); + if (strings != null && !strings.isEmpty()) { + String path = StringUtils.join(strings.toArray(), "/"); + Date dateFirst = DateUtil.getNow(); + DncPassLog passInfoTxt = new DncPassLog(); + passInfoTxt.setDayTime(DateUtil.format(dateFirst, DateUtil.STR_YEARMONTHDAY)); + DncPassLog dncPassLog = dncPassLogService.findDayTime(DateUtil.format(dateFirst, DateUtil.STR_YEARMONTHDAY)); + Integer fileTxt = 0, fileNc = 0; + if (dncPassLog != null) { + fileTxt = dncPassLog.getSequenceNumber() + 1; + fileNc = fileTxt + 1; + } else { + fileTxt = 1; + fileNc = fileTxt + 1; + } + String sequence = String.format("%06d", fileTxt); + String sequenceNc = String.format("%06d", fileNc); + passInfoTxt.setSequenceNumber(fileTxt); + passInfoTxt.setSequenceOrder(sequence); + passInfoTxt.setCreateTime(dateFirst); + passInfoTxt.setPassType("02"); + dncPassLogService.save(passInfoTxt); + + DncPassLog passInfoNc = new DncPassLog(); + passInfoNc.setSequenceNumber(fileNc); + passInfoNc.setSequenceOrder(sequenceNc); + passInfoNc.setDayTime(DateUtil.format(dateFirst, DateUtil.STR_YEARMONTHDAY)); + passInfoNc.setPassType("02"); + passInfoNc.setPassName(docFile.getFileName()); + try { + Thread.sleep(1000); + Date date = new Date(); + passInfoNc.setCreateTime(date); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + dncPassLogService.save(passInfoNc); + + NcTxtFilePathInfo ncTxt = new NcTxtFilePathInfo(); + ncTxt.setEquipmentId(mdcEquipment.getEquipmentId()); + ncTxt.setFileNcName("02A" + DateUtil.format(dateFirst, DateUtil.STR_YEARMONTHDAY) + sequenceNc); + ncTxt.setFileTxtName("02A" + DateUtil.format(dateFirst, DateUtil.STR_YEARMONTHDAY) + sequence); + ncTxt.setFilePath(path + "/" + mdcEquipment.getEquipmentId() + "/"); + ncTxt.setOrigFileName(docFile.getFileName()); + ncTxt.setOrigFileSuffix(docFile.getFileSuffix()); + ncTxt.setFileAddOrDelete(1); + String loFilePath = localFilePath + ncTxt.getFileTxtName() + ".nc"; + try { + String allList = ncTxt.getFileTxtName() + "\n" + + ncTxt.getFileNcName() + "\n" + + ncTxt.getOrigFileName() + "\n" + + ncTxt.getOrigFileSuffix() + "\n" + + ncTxt.getFilePath() + "\n" + + ncTxt.getEquipmentId() + "\n" + + ncTxt.getFileAddOrDelete().toString() + "\n" + + size + "\n"; + FileUtilS.fileWriterSql(loFilePath, allList); + boolean copyFileNc = FileUtilS.copyFileUpName(path + "/" + mdcEquipment.getEquipmentId() + "/send/" + + docFile.getFileName(), + localFilePath + ncTxt.getFileNcName(), + docFile.getFileSuffix(), "NC"); + if (!copyFileNc) { + FileUtilS.deleteNcFile(loFilePath); + } + } catch (IOException e) { + throw new RuntimeException("鏂囦欢澶勭悊澶辫触", e); + } + } + } + } + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ToEquipmentTaskServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ToEquipmentTaskServiceImpl.java new file mode 100644 index 0000000..13e0d2c --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/ToEquipmentTaskServiceImpl.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.flow.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.flow.entity.ToEquipmentTask; +import org.jeecg.modules.flow.service.IToEquipmentTaskService; +import org.jeecg.modules.flow.mapper.ToEquipmentTaskMapper; +import org.springframework.stereotype.Service; + +@Service +public class ToEquipmentTaskServiceImpl extends ServiceImpl<ToEquipmentTaskMapper, ToEquipmentTask> implements IToEquipmentTaskService { +} diff --git a/lxzn-module-flowable/pom.xml b/lxzn-module-flowable/pom.xml index 51615bc..56d4169 100644 --- a/lxzn-module-flowable/pom.xml +++ b/lxzn-module-flowable/pom.xml @@ -22,7 +22,7 @@ <groupId>org.flowable</groupId> <artifactId>flowable-engine</artifactId> <scope>compile</scope> - <version>6.4.0</version> + <version>6.5.0</version> <exclusions> <exclusion> <groupId>org.mybatis</groupId> @@ -33,7 +33,7 @@ <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter-basic</artifactId> - <version>6.4.0</version> + <version>6.5.0</version> </dependency> <!--琛ㄨ揪寮忚В鏋愬伐鍏�--> <dependency> @@ -47,6 +47,20 @@ <artifactId>xercesImpl</artifactId> <version>2.12.0</version> </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-core</artifactId> + </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <scope>provided</scope> + </dependency> </dependencies> </project> diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/JeecgFlowableCloudApplication.java b/lxzn-module-flowable/src/main/java/org/jeecg/JeecgFlowableCloudApplication.java deleted file mode 100644 index 2dc8f42..0000000 --- a/lxzn-module-flowable/src/main/java/org/jeecg/JeecgFlowableCloudApplication.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.jeecg;//package org.jeecg; -// -//import org.springframework.boot.SpringApplication; -//import org.springframework.boot.autoconfigure.SpringBootApplication; -//import org.springframework.cloud.openfeign.EnableFeignClients; -// -//@SpringBootApplication -//@EnableFeignClients -//public class JeecgFlowableCloudApplication { -// -// public static void main(String[] args) { -// SpringApplication.run(JeecgDemoCloudApplication.class, args); -// } -//} diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java index 3669e75..90af8d8 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java @@ -7,8 +7,9 @@ import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; import org.jeecg.modules.flowable.apithird.common.exception.CustomException; import org.jeecg.modules.flowable.service.impl.FlowInstanceServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; /** *涓氬姟妯″潡璋冪敤API鐨勯泦鍚� @@ -18,9 +19,9 @@ */ @Service public class FlowCommonService { - @Autowired + @Resource FlowMyBusinessServiceImpl flowMyBusinessService; - @Autowired + @Resource FlowInstanceServiceImpl flowInstanceService; /** * 鍒濆鐢熸垚鎴栦慨鏀逛笟鍔′笌娴佺▼鐨勫叧鑱斾俊鎭�<br/> diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/config/FlowableConfig.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/config/FlowableConfig.java new file mode 100644 index 0000000..c40dc09 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/config/FlowableConfig.java @@ -0,0 +1,65 @@ +package org.jeecg.modules.flowable.config; +import org.flowable.engine.ProcessEngine; +import org.flowable.engine.ProcessEngineConfiguration; +import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration; +import org.flowable.eventregistry.impl.EventRegistryEngineConfiguration; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.flowable.eventregistry.impl.EventRegistryEngine; +import javax.sql.DataSource; + +@Configuration +public class FlowableConfig { + + @Value("${spring.datasource.dynamic.datasource.master.url}") + private String jdbcUrl; + @Value("${spring.datasource.dynamic.datasource.master.username}") + private String jdbcUsername; + @Value("${spring.datasource.dynamic.datasource.master.password}") + private String jdbcPassword; + @Value("${spring.datasource.dynamic.datasource.master.driver-class-name}") + private String jdbcDriver; + + @Bean + public DataSource dataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setUrl(jdbcUrl); + dataSource.setUsername(jdbcUsername); + dataSource.setPassword(jdbcPassword); + dataSource.setDriverClassName(jdbcDriver); + return dataSource; + } + + @Bean(name = "processEngine") + @DependsOn("dataSource") + public ProcessEngine createProcessEngine(DataSource dataSource) { + StandaloneProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration(); + cfg.setDataSource(dataSource); + cfg.setDatabaseType("mssql"); + + // 鍙互鏍规嵁闇�瑕佹坊鍔犳洿澶氶厤缃� + cfg.setActivityFontName("瀹嬩綋"); + cfg.setLabelFontName("瀹嬩綋"); + cfg.setAnnotationFontName("瀹嬩綋"); + + // 璁剧疆鏁版嵁搴撴ā寮忔洿鏂扮瓥鐣ヤ负鑷姩鏇存柊 + cfg.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); + + return cfg.buildProcessEngine(); + } + + @Bean(name = "eventRegistryEngine") + public EventRegistryEngine eventRegistryEngine(DataSource dataSource) { + EventRegistryEngineConfiguration config = new EventRegistryEngineConfiguration(); + config.setDataSource(dataSource); + // 璁剧疆鏁版嵁搴撴ā寮忔洿鏂扮瓥鐣ワ紝杩欓噷閫夋嫨鑷姩鏇存柊 + config.setDatabaseSchemaUpdate("true"); + return config.buildEventRegistryEngine(); + } +} + + + diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/flow/FlowableConfig.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/flow/FlowableConfig.java deleted file mode 100644 index 468cb9e..0000000 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/flow/FlowableConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.jeecg.modules.flowable.flow; - -import org.flowable.spring.SpringProcessEngineConfiguration; -import org.flowable.spring.boot.EngineConfigurationConfigurer; -import org.springframework.context.annotation.Configuration; - - -/** - */ -@Configuration -public class FlowableConfig implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> { - - @Override - public void configure(SpringProcessEngineConfiguration engineConfiguration) { - engineConfiguration.setActivityFontName("瀹嬩綋"); - engineConfiguration.setLabelFontName("瀹嬩綋"); - engineConfiguration.setAnnotationFontName("瀹嬩綋"); - - } -} - diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java index de6a479..60f15e2 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java @@ -41,4 +41,11 @@ * @return */ String findThreeProductionId(@Param("userId") String userId); + + /** + * 鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛鍏ㄩ儴杞﹂棿鏉冮檺 + * @param userId + * @return + */ + List<MdcProduction> findAllProductionId(@Param("userId") String userId); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml index 119e935..f5228ba 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml @@ -31,4 +31,15 @@ <select id="findThreeProductionId" resultType="java.lang.String"> SELECT TOP 1 t2.id id FROM mdc_user_production t1 LEFT JOIN mdc_production t2 ON t1.pro_id = t2.id WHERE t1.user_id = #{userId} AND t2.org_type = '3' </select> -</mapper> \ No newline at end of file + <select id="findAllProductionId" resultType="org.jeecg.modules.system.entity.MdcProduction"> + SELECT + t1.* + FROM + mdc_production t1 + LEFT JOIN mdc_user_production t2 ON t1.id = t2.pro_id + LEFT JOIN sys_user t3 on t3.ID=t2.user_id + WHERE + t3.id = #{userId} + AND t1.org_type = '3' + </select> +</mapper> diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java index 4f8f510..ca00c50 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java @@ -6,6 +6,7 @@ import org.jeecg.modules.system.model.ProductionIdModel; import java.util.List; +import java.util.Map; /** * @Description: 浜х嚎琛� @@ -103,4 +104,11 @@ * @return */ List<String> findListParentTree(String parentId,List<String> stringList); + + /** + * 鑾峰彇鐢ㄦ埛鎵�鍦ㄧ殑閮ㄩ棬 + * @param userId + * @return + */ + Map<String, MdcProduction> getUserAssignedDepart(String userId); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java index 9aca7fc..ceba76d 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.modules.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -368,4 +369,23 @@ } return stringList; } + + /** + * 鑾峰彇鐢ㄦ埛宸插垎閰嶇殑閮ㄩ棬鍒楄〃 + * @param userId + * @return + */ + @Override + public Map<String, MdcProduction> getUserAssignedDepart(String userId){ + if(StrUtil.isEmpty(userId)) + return null; + List<MdcProduction> userPermDepart = this.baseMapper.findAllProductionId(userId); + if(userPermDepart == null || userPermDepart.isEmpty()) + return null; + Map<String, MdcProduction> map = new HashMap<>(); + userPermDepart.forEach(item -> { + map.put(item.getId(), item); + }); + return map; + } } diff --git a/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java b/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java index fb33d25..b2edb45 100644 --- a/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java +++ b/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java @@ -1,6 +1,7 @@ package org.jeecg; import lombok.extern.slf4j.Slf4j; +import org.flowable.spring.boot.eventregistry.EventRegistryServicesAutoConfiguration; import org.jeecg.common.util.oConvertUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; @@ -20,7 +21,7 @@ */ @Slf4j @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, - ManagementWebSecurityAutoConfiguration.class}) + ManagementWebSecurityAutoConfiguration.class, EventRegistryServicesAutoConfiguration.class}) //@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class}) public class JeecgSystemApplication extends SpringBootServletInitializer { diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml index da6655d..f94e1b9 100644 --- a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml +++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml @@ -151,6 +151,7 @@ # async-executor-activate: false # async-executor-enabled: true flowable: + enable: true #鍏抽棴瀹氭椂浠诲姟JOB async-executor-activate: false database-schema-update: true diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application.yml index d52c03d..a543aab 100644 --- a/lxzn-module-system/lxzn-system-start/src/main/resources/application.yml +++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application.yml @@ -3,4 +3,4 @@ name: jeecg-system profiles: active: '@profile.name@' -# active: dev \ No newline at end of file +# active: dev -- Gitblit v1.9.3