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); } } 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; } 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; } 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; /**ææ´¾è®¾å¤ä¸ç¨-æå±ID*/ private transient String attributionId; /**ææ´¾è®¾å¤ä¸ç¨-æå±type*/ private transient String attributionType; } 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; } 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; } 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; } 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> { } 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> { } 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); } 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> { } 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> 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; } 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; } 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; } 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; } 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; } 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); } 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> { } 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); } 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> { } 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); //ä¿®æ¹ä¸ºmdcè½¦é´ 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(); } } 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 { } 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ï¼æä»¶ID */ public String getDeviceSpecialChar(String deviceId, String fileId){ //æ¿æ¢ä¸ºmdc设å¤è¡¨ // 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(); //ä¸è½ç´æ¥ä»doc䏿¿fileId åversion å¯è½ä¼åå¨ææ´ //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); } } } } } 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 { } 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> lxzn-module-flowable/src/main/java/org/jeecg/JeecgFlowableCloudApplication.java
ÎļþÒÑɾ³ý 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/> 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(); } } lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/flow/FlowableConfig.java
ÎļþÒÑɾ³ý 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); } 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> <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> 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); } 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; } } 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 { 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 lxzn-module-system/lxzn-system-start/src/main/resources/application.yml
@@ -3,4 +3,4 @@ name: jeecg-system profiles: active: '@profile.name@' # active: dev # active: dev