From bc263d8bed5d1405f275bb8638a9bec9eaf06585 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期一, 31 三月 2025 09:42:00 +0800 Subject: [PATCH] 添加审签逻辑,移动flow通用代码,添加根据角色查询用户,新增时间工具类,修改指派设备bug --- lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java | 2 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowHistoricalVo.java | 73 ++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml | 18 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java | 64 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProductMix.java | 2 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskService.java | 4 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskDataVo.java | 90 ++ lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImpl.java | 8 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java | 2 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java | 13 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java | 63 - lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IHisWorkTaskMapper.java | 21 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java | 3 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/HisWorkTaskServiceImpl.java | 39 + lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskVoMapper.xml | 18 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml | 1 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java | 3 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/DispatchFileFlowTaskVo.java | 37 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java | 4 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocRelativeMapper.xml | 2 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskMapper.xml | 4 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskVoMapper.java | 11 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/util/TimeUtil.java | 111 +++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductPermissionServiceImpl.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IDispatchFileService.java | 42 + lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowInstanceServiceImpl.java | 6 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IHisWorkTaskService.java | 20 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java | 49 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/DispatchFileMapper.xml | 5 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/HisWorkTask.java | 2 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskServiceVo.java | 6 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImplVo.java | 31 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/AssignFlowTaskVo.java | 41 - lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java | 17 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java | 192 ++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/DispatchFileMapper.java | 14 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java | 13 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java | 4 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskData.java | 2 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java | 23 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/DispatchFile.java | 112 +++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java | 13 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml | 29 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml | 57 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java | 22 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskMapper.java | 4 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java | 62 ++ /dev/null | 37 - lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java | 4 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml | 27 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java | 359 +++++++++++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java | 15 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowMy.java | 2 54 files changed, 1,557 insertions(+), 250 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java index 280bfce..ec33919 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java @@ -18,7 +18,6 @@ public class DocInfo { @TableId(value = "doc_id") private String docId; - @TableField(value = "doc_name") private String docName; @TableField(value = "doc_alias") @@ -30,6 +29,9 @@ @TableField(value = "doc_status") @Dict(dicCode = "dnc_product_status") private Integer docStatus; + @TableField(value = "doc_dispatch_status") + @Dict(dicCode = "nc_doc_dispatch_status") + private Integer docDispatchStatus; @TableField(value = "publish_file_id") private String publishFileId; @TableField(value = "publish_version") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProductMix.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProductMix.java index 5cd7a3d..81e49a1 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProductMix.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProductMix.java @@ -28,7 +28,7 @@ @TableField(value = "parent_id") private Long parentId; // 鍚嶇О - @TableField(value = "name") + @TableField(value = "tree_name") private String name; // code @TableField(value = "tree_code") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml index 6184958..6f4ebd9 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml @@ -12,6 +12,7 @@ ,r.attribution_type ,r.attribution_id ,u.doc_status + ,u.doc_dispatch_status ,u.publish_file_id ,u.publish_version ,u.description diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocRelativeMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocRelativeMapper.xml index 3d25f8a..ac06bb5 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocRelativeMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocRelativeMapper.xml @@ -25,7 +25,7 @@ WHERE nr.doc_id = #{docId} AND nr.delete_flag = 0 - AND nr.attribution_type = 4 + AND nr.attribution_type = 7 AND nr.attribution_id = d.id ); </select> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml index 7511418..e7552dc 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml @@ -5,7 +5,7 @@ SELECT DISTINCT mix.id, mix.tree_code 'code', - mix.name, + mix.tree_name 'name', mix.parent_id, mix.tree_type AS 'type', mix.extend, @@ -30,21 +30,18 @@ order by mix.tree_type, mix.create_time asc </select> <select id="loadProductMixAll" resultType="org.jeecg.modules.dnc.entity.ProductMix"> - SELECT DISTINCT - mix.id, - mix.tree_code 'code', - mix.name, - mix.parent_id, - mix.tree_type AS 'type', - mix.extend, - mix.create_time - FROM - nc_product_mix mix -- 杩炴帴鏉冮檺琛紝绛涢�夐儴闂ㄧ浉鍏宠褰� - LEFT JOIN nc_permission_stream_new nps_user ON mix.id = nps_user.business_id - AND nps_user.user_id = #{userId} - AND nps_user.delete_flag = '0' - WHERE - nps_user.business_id IS NOT NULL + SELECT DISTINCT mix.id, + mix.tree_code 'code', + mix.tree_name 'name', + mix.parent_id, + mix.tree_type AS 'type', + mix.extend, + mix.create_time + FROM nc_product_mix mix -- 杩炴帴鏉冮檺琛紝绛涢�夐儴闂ㄧ浉鍏宠褰� + LEFT JOIN nc_permission_stream_new nps_user ON mix.id = nps_user.business_id + AND nps_user.user_id = #{userId} + AND nps_user.delete_flag = '0' + WHERE nps_user.business_id IS NOT NULL order by mix.tree_type, mix.create_time asc </select> </mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java index a574652..5b2adb1 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java @@ -1,16 +1,16 @@ package org.jeecg.modules.dnc.request; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; -import org.jeecg.common.aspect.annotation.Dict; @Data @NoArgsConstructor @ApiModel(value = "鏂囨。鏌ヨ鍙傛暟", description = "鏂囨。鏌ヨ鍙傛暟") public class DocInfoQueryRequest { + @ApiModelProperty(value = "鏂囨。id") + private String docId; @ApiModelProperty(value = "缁戝畾绫诲瀷 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 4 璁惧 5 宸ュ簭", example = "1", required = true) private Integer attributionType; @ApiModelProperty(value = "缁戝畾绫诲瀷瀵瑰簲鐨刬d 1 浜у搧id 2 閮ㄤ欢id 3 闆朵欢id 4 璁惧id 5 宸ュ簭id", example = "234324234", required = true) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java index a9299d5..3e25420 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoUploadRequest.java @@ -9,4 +9,6 @@ private String attributionId; private Integer attributionType; private String docClassCode; + /**鏄惁杩涘叆瀹$娴佺▼*/ + private Boolean isApprove = true; } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java index 809ae76..7d4f340 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java @@ -1,7 +1,6 @@ package org.jeecg.modules.dnc.service.impl; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -13,21 +12,19 @@ import org.jeecg.common.api.vo.FileUploadResult; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.DocInfoMapper; +import org.jeecg.modules.dnc.request.DocInfoQueryRequest; +import org.jeecg.modules.dnc.request.DocInfoUploadRequest; +import org.jeecg.modules.dnc.response.*; import org.jeecg.modules.dnc.service.*; import org.jeecg.modules.dnc.utils.CamelToSnakeRegex; import org.jeecg.modules.dnc.utils.ValidateUtil; - - -import org.jeecg.modules.dnc.request.DocInfoQueryRequest; -import org.jeecg.modules.dnc.request.DocInfoUploadRequest; import org.jeecg.modules.dnc.utils.file.FileUtilS; - -import org.jeecg.modules.dnc.entity.*; -import org.jeecg.modules.dnc.response.*; +import org.jeecg.modules.dncFlow.entity.DispatchFile; +import org.jeecg.modules.dncFlow.service.IDispatchFileService; import org.jeecg.modules.mdc.entity.MdcEquipment; -import org.jeecg.modules.system.service.ISysDictService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -59,7 +56,8 @@ private IDeviceInfoService deviceInfoService; @Autowired private IDeviceGroupService deviceGroupService; - + @Autowired + private IDispatchFileService dispatchFileService; /*澶囦唤澶勭悊*/ @Override @@ -137,11 +135,22 @@ } } - } boolean saveBool = super.save(docInfo); + if (uploadRequest.getIsApprove()&&saveBool){ + //瑙﹀彂瀹$ + DispatchFile dispatchFile = new DispatchFile(); + dispatchFile.setDocId(docInfo.getDocId()); + dispatchFile.setFileId(docFile.getFileId()); + dispatchFile.setAttributionId(uploadRequest.getAttributionId()); + dispatchFile.setAttributionType(String.valueOf(uploadRequest.getAttributionType())); + dispatchFile.setDocClassCode(uploadRequest.getDocClassCode()); + dispatchFileService.saveDispatchFile(dispatchFile); + } return saveBool; } + + @Override @Transactional(rollbackFor = {Exception.class}) @@ -161,7 +170,7 @@ } String recF = pathFile.substring(0,recNum);//灏嗚繑鍥瀌ef}ab Integer equipmentId = recF.lastIndexOf("\\"); - String deviceNo = recF.substring(equipmentId+1,recF.length()); + String deviceNo = recF.substring(equipmentId+1); if (StringUtils.isEmpty(deviceNo)) { return false; } @@ -528,10 +537,12 @@ } queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"u.create_time",docQuery.getStartTime()+" 00:00:00"); queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"u.create_time",docQuery.getEndTime()+" 23:59:59"); - if (("desc").equals(docQuery.getOrder())){ - queryWrapper.orderByDesc("u."+ CamelToSnakeRegex.camelToSnake(docQuery.getColumn())); - }else { - queryWrapper.orderByAsc("u."+CamelToSnakeRegex.camelToSnake(docQuery.getColumn())); + if (StrUtil.isNotEmpty(docQuery.getColumn())){ + if (("desc").equals(docQuery.getOrder())){ + queryWrapper.orderByDesc("u."+ CamelToSnakeRegex.camelToSnake(docQuery.getColumn())); + }else { + queryWrapper.orderByAsc("u."+CamelToSnakeRegex.camelToSnake(docQuery.getColumn())); + } } } @@ -659,10 +670,7 @@ @Transactional(rollbackFor = {Exception.class}) public boolean deleteByDocAttr(Integer attrType, String attrId) { int i = super.getBaseMapper().deleteByDocAttr(attrType, attrId); - if(i >= 0) { - return true; - } - return false; + return i >= 0; } @Override @@ -789,6 +797,7 @@ } QueryWrapper<DocInfo> queryWrapper = Wrappers.query(); + queryWrapper.eq(StrUtil.isNotEmpty(docQuery.getDocId()),"u.doc_id",docQuery.getDocId()); queryWrapper.eq("r.attribution_type", docQuery.getAttributionType()).eq("r.attribution_id", docQuery.getAttributionId()) .eq("r.classification_id", docClassification.getClassificationId()); if (StringUtils.isNotEmpty(docQuery.getDocName())) { diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java index d080ac3..b5e0bb4 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java @@ -161,7 +161,7 @@ stream.setComponentId(null); stream.setPartsId(null); stream.setProcessName(stream.getProcessName().toUpperCase()); - stream.setProcessCode(null); + stream.setProcessCode(stream.getProcessCode().toUpperCase()); boolean b = super.updateById(stream); //鍚屾淇敼缁撴瀯鏍� ProductMix productMix = productMixService.getById(Long.parseLong(id)); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductPermissionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductPermissionServiceImpl.java index dec1d4f..e799e3a 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductPermissionServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductPermissionServiceImpl.java @@ -10,7 +10,6 @@ import org.jeecg.modules.dnc.service.*; import org.jeecg.modules.dnc.ucenter.UserDepartExt; import org.jeecg.modules.dnc.utils.ValidateUtil; -import org.jeecg.modules.system.entity.DncDevicePermission; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -133,6 +132,7 @@ case "4": //宸ヨ壓瑙勭▼鐗堟湰鍙� processSpecVersionPermissionService.save(new ProcessSpecVersionPermission(id, userId)); + break; case "5": // 宸ュ簭鏉冮檺 processStreamPermissionService.save(new ProcessionPermission(id, userId)); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java new file mode 100644 index 0000000..6e7f712 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java @@ -0,0 +1,192 @@ +package org.jeecg.modules.dncFlow.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.dncFlow.entity.DispatchFile; +import org.jeecg.modules.dncFlow.service.IDispatchFileService; +import org.jeecg.modules.dncFlow.vo.DispatchFileFlowTaskVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + + /** + * @Description: nc绋嬪簭涓庣數瀛愬浘鐗堢娲� + * @Author: jeecg-boot + * @Date: 2025-03-19 + * @Version: V1.0 + */ +@Api(tags="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�") +@RestController +@RequestMapping("/dncFlow/dispatchFile") +@Slf4j +public class DispatchFileController extends JeecgController<DispatchFile, IDispatchFileService> { + @Autowired + private IDispatchFileService dispatchFileService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param dispatchFile + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-鍒嗛〉鍒楄〃鏌ヨ", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<DispatchFile>> queryPageList(DispatchFile dispatchFile, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<DispatchFile> queryWrapper = QueryGenerator.initQueryWrapper(dispatchFile, req.getParameterMap()); + Page<DispatchFile> page = new Page<DispatchFile>(pageNo, pageSize); + IPage<DispatchFile> pageList = dispatchFileService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 閲嶆柊鍚姩 + * @param id + * @return + */ + @AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閲嶆柊鍚姩") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閲嶆柊鍚姩", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閲嶆柊鍚姩") + @GetMapping(value = "/saveDispatchFile") + public Result<?> saveDispatchFile(String id){ + return dispatchFileService.reStartDispatchFile(id); + } + + + /** + * 瀹℃壒鎿嶄綔 + * @param dispatchFileFlowTaskVo + * @return + */ + @AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-瀹℃壒鎿嶄綔") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-瀹℃壒鎿嶄綔", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-瀹℃壒鎿嶄綔") + @GetMapping(value = "/approval") + public Result<?> approval(DispatchFileFlowTaskVo dispatchFileFlowTaskVo){ + return dispatchFileService.auditDispatchFile(dispatchFileFlowTaskVo); + } + + /** + * 娣诲姞 + * + * @param dispatchFile + * @return + */ + @AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-娣诲姞") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-娣诲姞", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:nc_dispatch_file:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody DispatchFile dispatchFile) { + dispatchFileService.save(dispatchFile); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param dispatchFile + * @return + */ + @AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-缂栬緫") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-缂栬緫", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:nc_dispatch_file:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody DispatchFile dispatchFile) { + dispatchFileService.updateById(dispatchFile); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閫氳繃id鍒犻櫎") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閫氳繃id鍒犻櫎", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:nc_dispatch_file:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + dispatchFileService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-鎵归噺鍒犻櫎") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-鎵归噺鍒犻櫎", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:nc_dispatch_file:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.dispatchFileService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閫氳繃id鏌ヨ") + @ApiOperation(value="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閫氳繃id鏌ヨ", notes="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<DispatchFile> queryById(@RequestParam(name="id",required=true) String id) { + DispatchFile dispatchFile = dispatchFileService.getById(id); + if(dispatchFile==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(dispatchFile); + } + + @GetMapping(value = "/selectVoById") + public Result<?> selectVoById(@RequestParam(name="id") String id){ + return dispatchFileService.queryDispatchFile(id); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param dispatchFile + */ + //@RequiresPermissions("org.jeecg.modules:nc_dispatch_file:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, DispatchFile dispatchFile) { + return super.exportXls(request, dispatchFile, DispatchFile.class, "nc绋嬪簭涓庣數瀛愬浘鐗堢娲�"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("nc_dispatch_file:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, DispatchFile.class); + } + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java index 4f258ee..833ab90 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java @@ -23,6 +23,9 @@ private String componentId; @TableField(value = "parts_id") private String partsId; + //宸ヨ壓瑙勭▼id + @TableField(value = "psv_id") + private String psvId; @TableField(value = "process_id") private String processId; @TableField(value = "step_id") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/DispatchFile.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/DispatchFile.java new file mode 100644 index 0000000..b70bfee --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/DispatchFile.java @@ -0,0 +1,112 @@ +package org.jeecg.modules.dncFlow.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: nc绋嬪簭涓庣數瀛愬浘鐗堢娲� + * @Author: jeecg-boot + * @Date: 2025-03-19 + * @Version: V1.0 + */ +@Data +@TableName("nc_dispatch_file") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nc_dispatch_file瀵硅薄", description="nc绋嬪簭涓庣數瀛愬浘鐗堢娲�") +public class DispatchFile implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**浜у搧id*/ + @Excel(name = "浜у搧id", width = 15) + @ApiModelProperty(value = "浜у搧id") + private String productId; + /**閮ㄤ欢id*/ + @Excel(name = "閮ㄤ欢id", width = 15) + @ApiModelProperty(value = "閮ㄤ欢id") + private String componentId; + /**闆朵欢id*/ + @Excel(name = "闆朵欢id", width = 15) + @ApiModelProperty(value = "闆朵欢id") + private String partsId; + /**宸ヨ壓瑙勭▼id*/ + @Excel(name = "宸ヨ壓瑙勭▼id", width = 15) + @ApiModelProperty(value = "宸ヨ壓瑙勭▼id") + private String psvId; + /**宸ュ簭id*/ + @Excel(name = "宸ュ簭id", width = 15) + @ApiModelProperty(value = "宸ュ簭id") + private String processId; + /**宸ユid*/ + @Excel(name = "宸ユid", width = 15) + @ApiModelProperty(value = "宸ユid") + private String stepId; + /**鎵�灞濱D*/ + @Excel(name = "鎵�灞濱D", width = 15) + @ApiModelProperty(value = "鎵�灞濱D") + private String attributionId; + /**鎵�灞瀟ype*/ + @Excel(name = "鎵�灞瀟ype", width = 15) + @ApiModelProperty(value = "鎵�灞瀟ype") + private String attributionType; + /**鏂囦欢绫诲瀷*/ + @Excel(name = "鏂囦欢绫诲瀷", width = 15) + @ApiModelProperty(value = "鏂囦欢绫诲瀷") + private String docClassCode; + /**璁惧绫籭d*/ + @Excel(name = "璁惧绫籭d", width = 15) + @ApiModelProperty(value = "璁惧绫籭d") + private String deviceTypeId; + /**鏂囨。id*/ + @Excel(name = "鏂囨。id", width = 15) + @ApiModelProperty(value = "鏂囨。id") + private String docId; + /**鏂囦欢琛╥d*/ + @Excel(name = "鏂囦欢琛╥d", width = 15) + @ApiModelProperty(value = "鏂囦欢琛╥d") + private String fileId; + /**褰撳墠鑺傜偣*/ + @Excel(name = "褰撳墠鑺傜偣", width = 15) + @ApiModelProperty(value = "褰撳墠鑺傜偣") + private String currentNode; + /**鑺傜偣鐘舵��*/ + @Excel(name = "鑺傜偣鐘舵��", width = 15) + @ApiModelProperty(value = "鑺傜偣鐘舵��") + private String nodeState; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃ユ湡") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private Date updateTime; + + /**鐢宠鐞嗙敱*/ + @ApiModelProperty(value = "鐢宠鐞嗙敱") + private transient String organization; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/WorkTaskDataVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/WorkTaskDataVo.java deleted file mode 100644 index c52e8b6..0000000 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/WorkTaskDataVo.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.jeecg.modules.dncFlow.entity; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.jeecg.common.aspect.annotation.Dict; -import org.jeecgframework.poi.excel.annotation.Excel; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.util.Date; -import java.util.Map; - -/** - * @Description:宸ヤ綔娴佷换鍔℃暟鎹� - */ -@Data -@ApiModel(value="act_ru_task", description="鎴戠殑寰呭姙") -public class WorkTaskDataVo implements Serializable { - /**涓婚敭*/ -// @TableField("id_") - private String id; - /**鐗堟湰鍙凤紝鐢ㄤ簬涔愯閿佹帶鍒跺苟鍙戞洿鏂�*/ -// @TableField("rev_") - private int rev; - /**鎵ц瀹炰緥ID锛屼笌鎵ц瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ -// @TableField("execution_id_") - private String executionId; - /**娴佺▼瀹炰緥ID锛屼笌娴佺▼瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ -// @TableField("proc_inst_id_") - private String procInstId; - /**娴佺▼瀹氫箟ID锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨処D瀛楁鍏宠仈*/ -// @TableField("proc_def_id_") - private String procDefId; - /**浠诲姟鍚嶇О*/ -// @TableField("name_") - private String name; - /**浠诲姟瀹氫箟Key锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨凨EY瀛楁鍏宠仈*/ -// @TableField("task_def_key_") - private String taskDefKey; - /**浠诲姟鐨勫姙鐞嗕汉锛屽嵆瀹為檯鎵ц浠诲姟鐨勭敤鎴�*/ -// @TableField("assignee_") - private String assignee; - /**浠诲姟鐨勪紭鍏堢骇*/ -// @TableField("priority_") - private int priority; - /** 浠诲姟鍒涘缓鏃堕棿*/ -// @TableField("create_time_") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date createTime; - /** 浠诲姟鐨勬殏鍋滅姸鎬侊紝鐢ㄤ簬鎺у埗浠诲姟鐨勬殏鍋滃拰鎭㈠*/ -// @TableField("suspension_state_") - private int suspensionState; - /** 娴佺▼鍙橀噺*/ - private Map<String,Object> variables; -// @TableField("act_status") - @ApiModelProperty(value = "娴佺▼鐘舵�佽鏄庯紝鏈夛細鍚姩 鎾ゅ洖 椹冲洖 瀹℃壒涓� 瀹℃壒閫氳繃 瀹℃壒寮傚父") - private String actStatus; -// @TableField("title") - @ApiModelProperty(value = "娴佺▼涓氬姟绠�瑕佹弿杩�") - private String title; -// @TableField("data_id") - @ApiModelProperty(value = "涓氬姟琛╥d锛岀悊璁哄敮涓�") - private String dataId; - - @ApiModelProperty(value = "娴佺▼鍚嶇О") - private transient String flowName; - - @ApiModelProperty(value = "娴佺▼绫诲瀷") - @Dict(dicCode = "flow_type") - private transient String category; - - /**娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d*/ - @Excel(name = "娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d", width = 15) - @ApiModelProperty(value = "娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d") - private String processDefinitionKey; - /**娴佺▼瀹氫箟id 涓�涓祦绋嬪畾涔夊敮涓�*/ - @Excel(name = "娴佺▼瀹氫箟id 涓�涓祦绋嬪畾涔夊敮涓�", width = 15) - @ApiModelProperty(value = "娴佺▼瀹氫箟id 涓�涓祦绋嬪畾涔夊敮涓�") - private String processDefinitionId; - /**娴佺▼涓氬姟瀹炰緥id 涓�涓祦绋嬩笟鍔″敮涓�锛屾湰琛ㄤ腑涔熷敮涓�*/ - @Excel(name = "娴佺▼涓氬姟瀹炰緥id 涓�涓祦绋嬩笟鍔″敮涓�锛屾湰琛ㄤ腑涔熷敮涓�", width = 15) - @ApiModelProperty(value = "娴佺▼涓氬姟瀹炰緥id 涓�涓祦绋嬩笟鍔″敮涓�锛屾湰琛ㄤ腑涔熷敮涓�") - private String processInstanceId; - - -// /**鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("task_def_id_") -// private String taskDefId; -// /**鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("scope_id_") -// private String scopeId; -// /**鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("sub_scope_id_") -// private String subScopeId; -// /**鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("scope_type_") -// private String scopeType; -// /**鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("scope_definition_id_") -// private String scopeDefinitionId; -// /**鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("propagated_stage_inst_id_") -// private String propagatedStageInstId; -// /**鐖朵换鍔D锛岀敤浜庤〃绀轰换鍔$殑灞傜骇鍏崇郴 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("parent_task_id_") -// private String parentTaskId; -// /** 浠诲姟鎻忚堪 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("description_") -// private String description; -// /**浠诲姟鐨勬墍鏈夎�咃紝鍗充换鍔″垎閰嶇粰鐨勭敤鎴� 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("owner_") -// private String owner; -// /**濮旀淳浜猴紝鐢ㄤ簬璁板綍浠诲姟鐨勫娲句汉锛堝鏋滄湁濮旀淳鎿嶄綔锛� 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("delegation_") -// private String delegation; -// /** 浠诲姟鎴鏃ユ湡 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("due_date_") -// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") -// @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") -// private Date dueDate; -// /** 浠诲姟鐨勫垎绫� 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("category_") -// private String category; -// /** 浠诲姟琛ㄥ崟Key锛岀敤浜庝笌琛ㄥ崟寮曟搸闆嗘垚 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("form_key_") -// private String formKey; -// /** 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("claim_time_") -// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") -// @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") -// private Date claimTime; -// /** 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("is_count_enabled_") -// private int iscountEnabled; -// /** 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("var_count_") -// private int varCount; -// /** 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("id_link_count_") -// private int idLinkCount; -// /** 鏆傛椂鐢ㄤ笉涓�*/ -// @TableField("sub_task_count_") -// private int subtaskCount; -} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/DispatchFileMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/DispatchFileMapper.java new file mode 100644 index 0000000..aeee2f1 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/DispatchFileMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.dncFlow.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.dncFlow.entity.DispatchFile; + +/** + * @Description: nc绋嬪簭涓庣數瀛愬浘鐗堢娲� + * @Author: jeecg-boot + * @Date: 2025-03-19 + * @Version: V1.0 + */ +public interface DispatchFileMapper extends BaseMapper<DispatchFile> { + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IHisWorkTaskMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IHisWorkTaskMapper.java deleted file mode 100644 index e7318d6..0000000 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IHisWorkTaskMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.jeecg.modules.dncFlow.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.jeecg.modules.dncFlow.entity.HisWorkTask; - -import java.util.List; - -public interface IHisWorkTaskMapper extends BaseMapper<HisWorkTask> { - - List<HisWorkTask> queryHisTaskList(@Param("drapprovedataId") String drapprovedataId); - - List<HisWorkTask> queryJjHisTaskByJjId(@Param("id") String id); - List<HisWorkTask> queryJjGgHisTaskByJjId(@Param("id") String id); - List<HisWorkTask> queryLsHisTaskByJjId(@Param("id") String id); - List<HisWorkTask> queryFxHisTaskByJjId(@Param("id") String id); -} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/DispatchFileMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/DispatchFileMapper.xml new file mode 100644 index 0000000..c19062e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/DispatchFileMapper.xml @@ -0,0 +1,5 @@ +<?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.dncFlow.mapper.DispatchFileMapper"> + +</mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/HisWorkTaskMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/HisWorkTaskMapper.xml deleted file mode 100644 index c164cb5..0000000 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/HisWorkTaskMapper.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?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.dncFlow.mapper.IHisWorkTaskMapper"> - <select id="queryHisTaskList" resultType="org.jeecg.modules.dncFlow.entity.HisWorkTask"> - SELECT - fb.id AS id, - aht.NAME_ AS name, - aht.DESCRIPTION_ AS cause, - su.realname AS assignee, - aht.START_TIME_ AS startTime, - aht.END_TIME_ AS endTime, - assign.status as status - FROM - flow_my_business fb, - act_hi_taskinst aht, - NC_ASSIGN_FILE_STREAM assign, - sys_user su - WHERE - fb.data_id= #{drapprovedataId} - AND fb.process_instance_id= aht.PROC_INST_ID_ - AND su.username= aht.ASSIGNEE_ - AND fb.data_id= assign.STREAM_ID - ORDER BY - aht.START_TIME_ ASC - </select> - <select id="queryJjHisTaskByJjId" resultType="org.jeecg.modules.dncFlow.entity.HisWorkTask"> - select fb.id as id, - aht.NAME_ as name, - su.realname as assignee, - aht.START_TIME_ as startTime, - aht.END_TIME_ as endTime, - aht.DESCRIPTION_ as cause - from flow_my_business fb - left join plm_mbom_jijiagy_approval pmjja on pmjja.id = fb.data_id - left join plm_mbom_procedurespecification pmjj on pmjj.id = pmjja.details - left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ - left join sys_user su on su.username = aht.ASSIGNEE_ - where pmjj.id = #{id} - ORDER BY aht.START_TIME_ ASC - </select> - - <select id="queryJjGgHisTaskByJjId" resultType="org.jeecg.modules.dncFlow.entity.HisWorkTask"> - select fb.id as id, - aht.NAME_ as name, - su.realname as assignee, - aht.START_TIME_ as startTime, - aht.END_TIME_ as endTime, - aht.DESCRIPTION_ as cause - from flow_my_business fb - left join plm_mbom_jjgg_approval pmjja on pmjja.id = fb.data_id - left join plm_mbom_jjgg pmjj on pmjj.id = pmjja.details - left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ - left join sys_user su on su.username = aht.ASSIGNEE_ - where pmjj.id = #{id} - ORDER BY aht.START_TIME_ ASC - </select> - - <select id="queryLsHisTaskByJjId" resultType="org.jeecg.modules.dncFlow.entity.HisWorkTask"> - select fb.id as id, - aht.NAME_ as name, - su.realname as assignee, - aht.START_TIME_ as startTime, - aht.END_TIME_ as endTime, - aht.DESCRIPTION_ as cause - from flow_my_business fb - left join plm_mbom_approval_lsgy pmjja on pmjja.id = fb.data_id - left join plm_mbom_lsgy pmjj on pmjj.id = pmjja.details - left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ - left join sys_user su on su.username = aht.ASSIGNEE_ - where pmjj.id = #{id} - ORDER BY aht.START_TIME_ ASC - </select> - - <select id="queryFxHisTaskByJjId" resultType="org.jeecg.modules.dncFlow.entity.HisWorkTask"> - select fb.id as id, - aht.NAME_ as name, - su.realname as assignee, - aht.START_TIME_ as startTime, - aht.END_TIME_ as endTime, - aht.DESCRIPTION_ as cause - from flow_my_business fb - left join plm_mbom_approval_fxgy pmjja on pmjja.id = fb.data_id - left join plm_mbom_fxgy pmjj on pmjj.id = pmjja.details - left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ - left join sys_user su on su.username = aht.ASSIGNEE_ - where pmjj.id = #{id} - ORDER BY aht.START_TIME_ ASC - </select> -</mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IDispatchFileService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IDispatchFileService.java new file mode 100644 index 0000000..cdacf7e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IDispatchFileService.java @@ -0,0 +1,42 @@ +package org.jeecg.modules.dncFlow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.dncFlow.entity.DispatchFile; +import org.jeecg.modules.dncFlow.vo.DispatchFileFlowTaskVo; + +/** + * @Description: nc绋嬪簭涓庣數瀛愬浘鐗堢娲� + * @Author: jeecg-boot + * @Date: 2025-03-19 + * @Version: V1.0 + */ +public interface IDispatchFileService extends IService<DispatchFile> { + + /** + * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹� + * @param dispatchFile + * @return + */ + Result<?> saveDispatchFile(DispatchFile dispatchFile); + + /** + * 閲嶆柊鍚姩 + * @param id + */ + Result<?> reStartDispatchFile(String id); + + /** + * 瀹℃壒鎿嶄綔 + * @param dispatchFileFlowTaskVo + * @return + */ + Result<?> auditDispatchFile(DispatchFileFlowTaskVo dispatchFileFlowTaskVo); + + /** + * 鏌ヨ瀹$鍩烘湰淇℃伅 + * @param id + */ + Result<?> queryDispatchFile(String id); + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IHisWorkTaskService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IHisWorkTaskService.java deleted file mode 100644 index 2ce2595..0000000 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IHisWorkTaskService.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.jeecg.modules.dncFlow.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.dncFlow.entity.HisWorkTask; - -import java.util.List; - -public interface IHisWorkTaskService extends IService<HisWorkTask> { - - List<HisWorkTask> queryHisTaskList(String drapprovedataId); - List<HisWorkTask> queryJjHisTaskByJjId(String id); - - List<HisWorkTask> queryJjGgHisTaskByJjId(String id); - List<HisWorkTask> queryLsHisTaskByJjId(String id); - List<HisWorkTask> queryFxHisTaskByJjId(String id); -} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java index a3c1e93..34d3494 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java @@ -289,6 +289,10 @@ //flowable澶勭悊 FlowTaskVo flowTaskVo = new FlowTaskVo(); BeanUtils.copyProperties(assignFlowTaskVo, flowTaskVo); + Map<String, Object> values=new HashMap<>(); + values.put("dataId", assignFlowTaskVo.getDataId()); + flowTaskVo.setTaskId(assignFlowTaskVo.getTaskId()); + flowTaskVo.setValues(values); flowTaskService.complete(flowTaskVo); //鏇存柊瀵硅薄灏佽 AssignFileStream up = new AssignFileStream(); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java new file mode 100644 index 0000000..b768b7e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java @@ -0,0 +1,359 @@ +package org.jeecg.modules.dncFlow.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.entity.*; +import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.mapper.DocInfoMapper; +import org.jeecg.modules.dnc.request.DocInfoQueryRequest; +import org.jeecg.modules.dnc.response.ActivitiCode; +import org.jeecg.modules.dnc.response.CommonCode; +import org.jeecg.modules.dnc.response.UcenterCode; +import org.jeecg.modules.dnc.service.*; +import org.jeecg.modules.dnc.utils.ValidateUtil; +import org.jeecg.modules.dncFlow.entity.DispatchFile; +import org.jeecg.modules.dncFlow.mapper.DispatchFileMapper; +import org.jeecg.modules.dncFlow.service.IDispatchFileService; +import org.jeecg.modules.dncFlow.vo.DispatchFileFlowTaskVo; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: nc绋嬪簭涓庣數瀛愬浘鐗堢娲� + * @Author: jeecg-boot + * @Date: 2025-03-19 + * @Version: V1.0 + */ +@Service("IDispatchFileService") +public class DispatchFileServiceImpl extends ServiceImpl<DispatchFileMapper, DispatchFile> implements IDispatchFileService, FlowCallBackServiceI { + + @Autowired + @Lazy + private IDocInfoService docInfoService; + @Autowired + private IProcessStreamService processStreamService; + @Autowired + private IWorkStepService workStepService; + @Autowired + private IPermissionStreamNewService permissionStreamNewService; + @Resource + private FlowCommonService flowCommonService; + @Resource + private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private IDeviceTypeService deviceTypeService; + @Autowired + private TaskService taskService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private DocInfoMapper docInfoMapper; + /** + * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹� + * @param dispatchFile + * @return + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public Result<?> saveDispatchFile(DispatchFile dispatchFile){ + //鏍¢獙鍙傛暟 + checkParam(dispatchFile); + //鑾峰彇鏂囦欢淇℃伅 + DocInfo docInfo = docInfoService.getById(dispatchFile.getDocId()); + PermissionStreamNew permissionStreams = getPermissionStreams(dispatchFile); + if (permissionStreams==null){ + return Result.error("鐢ㄦ埛娌℃湁鏉冮檺"); + } + dispatchFile.setAttributionType(dispatchFile.getAttributionType()); + dispatchFile.setAttributionId(dispatchFile.getAttributionId()); + dispatchFile.setDocClassCode(dispatchFile.getDocClassCode()); + super.save(dispatchFile); + System.out.println("NC绋嬪簭鍜岀數瀛愭牱鏉垮绛炬祦绋嬶細" + dispatchFile.getDocId()); + flowCommonService.initActBusiness(docInfo.getDocName()+"."+docInfo.getDocSuffix()+"鏂囦欢杩涜瀹$", + dispatchFile.getId(), "IDispatchFileService", "nc_dispatch_file", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", dispatchFile.getId()); + variables.put("organization", "瀵煎叆鏂囨。榛樿鍚姩娴佺▼"); + variables.put("proofreading",true); + Result result= flowDefinitionService.startProcessInstanceByKey("nc_dispatch_file", variables); + if (!result.isSuccess()) { + super.removeById(dispatchFile.getId()); + }else { + docInfo.setDocDispatchStatus(1); + docInfoService.updateById(docInfo); + } + return result; + } + + /** + * 閲嶆柊鍚姩 + * @param id + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public Result<?> reStartDispatchFile(String id){ + DispatchFile dispatchFile = this.getById(id); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!dispatchFile.getCreateBy().equals(user.getUsername())){ + return Result.error("鎮ㄦ病鏈夋潈闄愰噸鏂板惎鍔�"); + } + FlowMyBusiness flowMyBusiness=flowMyBusinessService.list(new QueryWrapper<FlowMyBusiness>() + .eq("data_id",dispatchFile.getId())).get(0); + String processInstanceId = flowMyBusiness.getProcessInstanceId(); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", dispatchFile.getId()); + variables.put("organization", "閲嶆柊鍚姩"); + String TaskId=taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult().getId(); + taskService.complete(TaskId, variables); + return Result.ok("閲嶆柊鍚姩鎴愬姛"); + } + + /** + * 瀹℃壒鎿嶄綔 + * @param dispatchFileFlowTaskVo + * @return + */ + @Override + public Result<?> auditDispatchFile(DispatchFileFlowTaskVo dispatchFileFlowTaskVo) { + try { + // 鍙傛暟鏍¢獙 + if (!ValidateUtil.validateString(dispatchFileFlowTaskVo.getTaskId()) || !ValidateUtil.validateString(dispatchFileFlowTaskVo.getDataId())) { + return Result.error(CommonCode.INVALID_PARAM.toString()); + } + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + dispatchFileFlowTaskVo.setAssignee(user.getUsername()); + if (!ValidateUtil.validateString(userId)) { + return Result.error(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST.toString()); + } + + // 鏁版嵁鏌ヨ + DispatchFile dispatchFile = this.getById(dispatchFileFlowTaskVo.getDataId()); + if (dispatchFile == null) { + return Result.error(CommonCode.INVALID_PARAM.toString()); + } + DocInfo docInfo = docInfoService.getById(dispatchFile.getDocId()); + if (docInfo == null) { + return Result.error(ActivitiCode.ACT_DOC_ERROR.toString()); + } + + // 璁剧疆娴佺▼鍙橀噺 + Map<String, Object> values = setProcessVariables(dispatchFile, userId, dispatchFileFlowTaskVo); + dispatchFileFlowTaskVo.setValues(values); + + // 瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(dispatchFileFlowTaskVo); + if (result.isSuccess()) { + // 鏇存柊鐘舵�� + updateStatus(dispatchFile, docInfo, dispatchFileFlowTaskVo); + docInfoService.updateById(docInfo); + this.updateById(dispatchFile); + } else { + return result; + } + + return Result.OK("鎿嶄綔鎴愬姛"); + } catch (Exception e) { + return Result.error("鎿嶄綔澶辫触锛�" + e.getMessage()); + } + } + + /** + * 鏌ヨ瀹$鍩烘湰淇℃伅 + * @param id + */ + public Result<?> queryDispatchFile(String id){ + DispatchFile dispatchFile=this.getById(id); + if (dispatchFile==null){ + return Result.error("瀹$鍩烘湰淇℃伅涓嶅瓨鍦�"); + } + DocInfoQueryRequest docInfoQueryRequest=new DocInfoQueryRequest(); + docInfoQueryRequest.setDocId(dispatchFile.getDocId()); + docInfoQueryRequest.setAttributionId(dispatchFile.getAttributionId()); + docInfoQueryRequest.setAttributionType(Integer.valueOf(dispatchFile.getAttributionType())); + docInfoQueryRequest.setDocClassCode(dispatchFile.getDocClassCode()); + List<DocInfo> docInfoList = docInfoService.findList(docInfoQueryRequest); + return Result.OK(docInfoList); + } + + private Map<String, Object> setProcessVariables(DispatchFile dispatchFile, String userId, DispatchFileFlowTaskVo dispatchFileFlowTaskVo) { + Map<String, Object> values = new HashMap<>(); + values.put("dataId", dispatchFile.getId()); + values.put("organization", dispatchFile.getOrganization()); + values.put("assignee", userId); + values.put("comment", dispatchFileFlowTaskVo.getComment()); + + if (StrUtil.isNotBlank(dispatchFileFlowTaskVo.getProofreadStatus())) { + values.put("proofreadStatus", dispatchFileFlowTaskVo.getProofreadStatus()); + } + if (dispatchFileFlowTaskVo.getRatify() != null) { + values.put("ratify", dispatchFileFlowTaskVo.getRatify()); + } + if (dispatchFileFlowTaskVo.getCut() != null) { + values.put("cut", dispatchFileFlowTaskVo.getCut()); + } + if (dispatchFileFlowTaskVo.getStereotype() != null) { + values.put("stereotype", dispatchFileFlowTaskVo.getStereotype()); + } + return values; + } + + private void updateStatus(DispatchFile dispatchFile, DocInfo docInfo, DispatchFileFlowTaskVo dispatchFileFlowTaskVo) { + if (StrUtil.isNotBlank(dispatchFileFlowTaskVo.getProofreadStatus())) { + switch (dispatchFileFlowTaskVo.getProofreadStatus()) { + case "1": + // 鐩存帴瀹氬瀷 + dispatchFile.setCurrentNode("5"); + docInfo.setDocDispatchStatus(5); + break; + case "2": + // 鏍″閫氳繃 + dispatchFile.setCurrentNode("2"); + docInfo.setDocDispatchStatus(2); + break; + default: + // 鏍″涓嶉�氳繃 + dispatchFile.setCurrentNode("1"); + docInfo.setDocDispatchStatus(1); + break; + } + } + if (dispatchFileFlowTaskVo.getRatify() != null && dispatchFileFlowTaskVo.getRatify()) { + dispatchFile.setCurrentNode("3"); + docInfo.setDocDispatchStatus(3); + } + if (dispatchFileFlowTaskVo.getCut() != null && dispatchFileFlowTaskVo.getCut()) { + dispatchFile.setCurrentNode("4"); + docInfo.setDocDispatchStatus(4); + } + if (dispatchFileFlowTaskVo.getStereotype() != null && dispatchFileFlowTaskVo.getStereotype()) { + dispatchFile.setCurrentNode("5"); + docInfo.setDocDispatchStatus(5); + } + } + + //浼犲弬楠岃瘉 + public boolean checkParam(DispatchFile dispatchFile) { + if (dispatchFile == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + if (!ValidateUtil.validateString(dispatchFile.getAttributionId()) || !ValidateUtil.validateString(dispatchFile.getDocId()) + || !ValidateUtil.validateString(dispatchFile.getFileId()) || !ValidateUtil.validateString(dispatchFile.getAttributionType())) { + 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); + } + return true; + } + + //鑾峰彇鏂囦欢淇℃伅 + private DocInfo getDocInfo(DispatchFile dispatchFile) { + DocInfo docInfo = docInfoService.getByDocAttrAndDocId(dispatchFile.getDocId(), + Integer.parseInt(dispatchFile.getAttributionType()), dispatchFile.getAttributionId()); + if (docInfo == null || docInfo.getDocStatus() == 3) { + ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); + } + return docInfo; + } + + + private PermissionStreamNew getPermissionStreams(DispatchFile dispatchFile) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + DeviceType deviceType = deviceTypeService.getById(dispatchFile.getAttributionId()); + String attributionId = deviceType != null ? deviceType.getAttributionId() : dispatchFile.getAttributionId(); + + PermissionStreamNew permissionStreams; + if (dispatchFile.getAttributionType().equals("5")) { + // 宸ュ簭 + permissionStreams = handleProcess(dispatchFile, attributionId, user); + } else { + // 宸ユ + permissionStreams = handleWorkStep(dispatchFile, attributionId, user); + } + if (permissionStreams == null) { + ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE); + } + return permissionStreams; + } + + private PermissionStreamNew handleProcess(DispatchFile dispatchFile, String attributionId, LoginUser user) { + ProcessStream processStream = processStreamService.getById(attributionId); + if (processStream == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + dispatchFile.setProductId(processStream.getProductId()); + dispatchFile.setComponentId(processStream.getComponentId()); + dispatchFile.setPartsId(processStream.getPartsId()); + dispatchFile.setPsvId(processStream.getPsvId()); + dispatchFile.setProcessId(processStream.getProcessId()); + if (deviceTypeService.getById(dispatchFile.getAttributionId()) != null) { + dispatchFile.setDeviceTypeId(deviceTypeService.getById(dispatchFile.getAttributionId()).getId()); + } + return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(), user.getId(), "5"); + } + + private PermissionStreamNew handleWorkStep(DispatchFile dispatchFile, String attributionId, LoginUser user) { + WorkStep workStep = workStepService.getById(attributionId); + if (workStep == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + dispatchFile.setProductId(workStep.getProductId()); + dispatchFile.setComponentId(workStep.getComponentId()); + dispatchFile.setPartsId(workStep.getPartsId()); + dispatchFile.setPsvId(workStep.getPsvId()); + dispatchFile.setProcessId(workStep.getProcessId()); + dispatchFile.setStepId(workStep.getId()); + if (deviceTypeService.getById(dispatchFile.getAttributionId()) != null) { + dispatchFile.setDeviceTypeId(deviceTypeService.getById(dispatchFile.getAttributionId()).getId()); + } + return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(), user.getId(), "6"); + } + + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + String dataId = values.get("dataId").toString(); + FlowMyBusiness flowMyBusiness=flowMyBusinessService.list(new QueryWrapper<FlowMyBusiness>().eq("data_id",dataId)).get(0); + return Lists.newArrayList(flowMyBusiness.getCreateBy()); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/HisWorkTaskServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/HisWorkTaskServiceImpl.java deleted file mode 100644 index e33d63a..0000000 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/HisWorkTaskServiceImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.jeecg.modules.dncFlow.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.jeecg.modules.dncFlow.entity.HisWorkTask; -import org.jeecg.modules.dncFlow.mapper.IHisWorkTaskMapper; -import org.jeecg.modules.dncFlow.service.IHisWorkTaskService; -import org.springframework.stereotype.Service; - -import java.util.List; -@Service -public class HisWorkTaskServiceImpl extends ServiceImpl<IHisWorkTaskMapper,HisWorkTask> implements IHisWorkTaskService { - @Override - public List<HisWorkTask> queryHisTaskList(String drapprovedataId) { - return baseMapper.queryHisTaskList(drapprovedataId); - } - - @Override - public List<HisWorkTask> queryJjHisTaskByJjId(String id) { - return baseMapper.queryJjHisTaskByJjId(id); - } - - @Override - public List<HisWorkTask> queryJjGgHisTaskByJjId(String id) { - return baseMapper.queryJjGgHisTaskByJjId(id); - } - - @Override - public List<HisWorkTask> queryLsHisTaskByJjId(String id) { - return baseMapper.queryLsHisTaskByJjId(id); - } - - @Override - public List<HisWorkTask> queryFxHisTaskByJjId(String id) { - return baseMapper.queryFxHisTaskByJjId(id); - } -} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/WorkTaskServiceImplVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/WorkTaskServiceImplVo.java deleted file mode 100644 index 94ae51c..0000000 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/WorkTaskServiceImplVo.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.jeecg.modules.dncFlow.service.impl; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.flowable.engine.ProcessEngine; -import org.flowable.engine.TaskService; -import org.jeecg.modules.dncFlow.entity.WorkTaskDataVo; -import org.jeecg.modules.dncFlow.mapper.IWorkTaskVoMapper; -import org.jeecg.modules.dncFlow.service.IWorkTaskServiceVo; -import org.jeecg.modules.dncFlow.vo.FlowMy; -import org.jeecg.modules.system.service.ISysUserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; - -@Service -public class WorkTaskServiceImplVo extends ServiceImpl<IWorkTaskVoMapper, WorkTaskDataVo> implements IWorkTaskServiceVo { - @Autowired - ProcessEngine processEngine; - @Autowired - private ISysUserService sysUserService; - @Override - public IPage<WorkTaskDataVo> toTaskBySelf(FlowMy flowMy, Page page) { - IPage<WorkTaskDataVo> workTaskDataVoList = baseMapper.taskBySelf(flowMy,page); - workTaskDataVoList.getRecords().forEach(workTaskDataVo -> { - TaskService taskService = processEngine.getTaskService(); - String taskId=workTaskDataVo.getId(); - Map<String, Object> variables = taskService.getVariables(taskId); - String realname=sysUserService.getUserByName((String) variables.get("INITIATOR")).getRealname(); - variables.put("INITIATOR",realname); - workTaskDataVo.setVariables(variables); - }); - return workTaskDataVoList; - } -} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/AssignFlowTaskVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/AssignFlowTaskVo.java index 87c67d3..e26360e 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/AssignFlowTaskVo.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/AssignFlowTaskVo.java @@ -1,47 +1,16 @@ package org.jeecg.modules.dncFlow.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import java.util.List; -import java.util.Map; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; /** * <p>娴佺▼浠诲姟<p> * */ @Data -@ApiModel("宸ヤ綔娴佷换鍔$浉鍏�--璇锋眰鍙傛暟") -public class AssignFlowTaskVo { - - @ApiModelProperty("鏁版嵁Id") - private String dataId; - @ApiModelProperty("浠诲姟Id") - private String taskId; - - @ApiModelProperty("鐢ㄦ埛Id") - private String userId; - - @ApiModelProperty("浠诲姟鎰忚") - private String comment; - - @ApiModelProperty("娴佺▼瀹炰緥Id") - private String instanceId; - - @ApiModelProperty("鑺傜偣") - private String targetKey; - - @ApiModelProperty("娴佺▼鍙橀噺淇℃伅") - private Map<String, Object> values; - - @ApiModelProperty("瀹℃壒浜�") - private String assignee; - - @ApiModelProperty("鍊欓�変汉") - private List<String> candidateUsers; - - @ApiModelProperty("瀹℃壒缁�") - private List<String> candidateGroups; +@ApiModel("鎸囨淳璁惧宸ヤ綔娴佷换鍔$浉鍏�--璇锋眰鍙傛暟") +public class AssignFlowTaskVo extends FlowTaskVo { private String xiugaiId; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/DispatchFileFlowTaskVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/DispatchFileFlowTaskVo.java new file mode 100644 index 0000000..4dca430 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/DispatchFileFlowTaskVo.java @@ -0,0 +1,37 @@ +package org.jeecg.modules.dncFlow.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; +@Data +@ApiModel("NC绛炬淳宸ヤ綔娴佷换鍔$浉鍏�--璇锋眰鍙傛暟") +public class DispatchFileFlowTaskVo extends FlowTaskVo { + + /**鏍″绫诲瀷 + * 1:鐩存帴瀹氬瀷 + * 2:鏍″閫氳繃 + * 3:鏍″涓嶉�氳繃 + */ + private String proofreadStatus; + + /** + * 鎵瑰噯绫诲瀷 + * true:鎵瑰噯閫氳繃 + * false:鎵瑰噯涓嶉�氳繃 + */ + private Boolean ratify ; + + /** + * 璇曞垏绫诲瀷 + * true:璇曞垏閫氳繃 + * false:璇曞垏涓嶉�氳繃 + */ + private Boolean cut; + + /** + * 瀹氬瀷绫诲瀷 + * true:瀹氬瀷閫氳繃 + * false:瀹氬瀷涓嶉�氳繃 + */ + private Boolean stereotype; +} diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java index a4cd3b5..5c99fc1 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java @@ -128,11 +128,24 @@ private transient String flowName; /**娴佺▼寮�濮嬫椂闂�*/ - private transient String startTime; + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private transient Date startTime; /**娴佺▼缁撴潫鏃堕棿*/ - private transient String endTime; + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private transient Date endTime; /**褰撳墠鐢ㄦ埛*/ private transient String currentUser; + + @ApiModelProperty(value = "鍓嶉┍鑺傜偣") + private transient String preNode; + + /**澶勭悊鏃堕暱锛堝垎閽燂級*/ + @TableField(exist = false) + @ApiModelProperty(value = "澶勭悊鏃堕暱锛堝垎閽燂級") + private transient String duration; + } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java index da88ca8..2746244 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java @@ -29,7 +29,7 @@ @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @ApiModel(value="flow_my_business瀵硅薄", description="娴佺▼涓氬姟鎵╁睍琛�") -public class FlowMyBusiness implements Serializable { +public class FlowMyBusiness implements Serializable { private static final long serialVersionUID = 1L; /**涓婚敭ID*/ diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml index 27b7a5e..cf2f3ad 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml @@ -3,17 +3,24 @@ <mapper namespace="org.jeecg.modules.flowable.apithird.business.mapper.FlowMyBusinessMapper"> <select id="PageList" resultType="org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto"> SELECT - flow_my_business.*, - ACT_HI_PROCINST.START_TIME_ as start_time, - ACT_HI_PROCINST.END_TIME_ as end_time, - ACT_RE_PROCDEF.NAME_ as flowName, - ACT_RE_PROCDEF.CATEGORY_ as category + flow_my_business.id, + flow_my_business.title, + flow_my_business.proposer, + flow_my_business.task_name, + flow_my_business.task_id, + ACT_RU_TASK.ASSIGNEE_ as todoUsers, + flow_my_business.done_Users, + ACT_HI_PROCINST.START_TIME_ AS start_time, + ACT_HI_PROCINST.END_TIME_ AS end_time, + ACT_RE_PROCDEF.NAME_ AS flowName, + ACT_RE_PROCDEF.CATEGORY_ AS category FROM - flow_my_business - LEFT JOIN ACT_HI_PROCINST ON flow_my_business.process_instance_id = ACT_HI_PROCINST.ID_ - LEFT JOIN ACT_RE_PROCDEF ON flow_my_business.process_definition_id = ACT_RE_PROCDEF.ID_ - where - 1 = 1 + flow_my_business + LEFT JOIN ACT_HI_PROCINST ON flow_my_business.process_instance_id = ACT_HI_PROCINST.ID_ + LEFT JOIN ACT_RE_PROCDEF ON flow_my_business.process_definition_id = ACT_RE_PROCDEF.ID_ + left join ACT_RU_TASK on flow_my_business.task_id = ACT_RU_TASK.ID_ + WHERE + 1 = 1 <if test="flowMyBusinessDto.category != null and flowMyBusinessDto.category != ''"> and ACT_RE_PROCDEF.CATEGORY_ = #{flowMyBusinessDto.category} </if> diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java index b1bf9e6..ce39c92 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java @@ -4,13 +4,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.flowable.engine.HistoryService; +import org.flowable.engine.history.HistoricActivityInstance; import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.mapper.FlowMyBusinessMapper; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.domain.dto.FlowTaskDto; +import org.jeecg.modules.flowable.util.TimeUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; /** * @Description: 娴佺▼涓氬姟鎵╁睍琛� @@ -23,6 +31,34 @@ @Autowired private FlowMyBusinessMapper flowMyBusinessMapper; + @Autowired + private HistoryService historyService; + + public HistoricActivityInstance getPreviousNode(String taskId) { + // 鑾峰彇褰撳墠浠诲姟鐨勬墽琛屽疄渚� ID + String executionId = historyService.createHistoricTaskInstanceQuery() + .taskId(taskId) + .singleResult() + .getExecutionId(); + + // 鏌ヨ鍘嗗彶娲诲姩瀹炰緥 + List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() + .executionId(executionId) + .activityType("userTask") + .finished() + .orderByHistoricActivityInstanceEndTime() + .desc() + .list(); + + // 鍙栫涓�涓粨鏋滐紝鍗充笂涓�绾ц妭鐐� + if (!historicActivityInstances.isEmpty()) { + return historicActivityInstances.get(0); + } + + return null; + } + + @Transactional(isolation = Isolation.READ_COMMITTED) // 闄嶄綆闅旂绾у埆 public FlowMyBusiness getByDataId(String dataId) { LambdaQueryWrapper<FlowMyBusiness> flowMyBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>(); flowMyBusinessLambdaQueryWrapper.eq(FlowMyBusiness::getDataId,dataId) @@ -58,6 +94,32 @@ * @return */ public IPage<FlowMyBusinessDto> getPageList(Page page, FlowMyBusinessDto flowMyBusinessDto){ - return flowMyBusinessMapper.PageList(page,flowMyBusinessDto); + IPage<FlowMyBusinessDto> flowMyBusinessDtoIPage =flowMyBusinessMapper.PageList(page,flowMyBusinessDto); + flowMyBusinessDtoIPage.getRecords().forEach(item -> { + if (!("").equals(item.getTaskId())&&item.getTaskId()!=null){ + HistoricActivityInstance historicActivityInstance = getPreviousNode(item.getTaskId()); + if (historicActivityInstance != null){ + item.setPreNode(historicActivityInstance.getActivityName()); + } + } + if (item.getDoneUsers() == null){ + item.setDoneUsers(""); + }else { + //鍘婚櫎[] + item.setDoneUsers(item.getDoneUsers().replaceAll("\\[", "").replaceAll("\\]", "")); + item.setDoneUsers(item.getDoneUsers().replaceAll("\"", "")); + } + //璁$畻澶勭悊鏃堕暱 + Date kssj=item.getStartTime(); + Date jssj; + if (item.getEndTime() != null){ + jssj=item.getEndTime(); + }else { + jssj=new Date(); + } + item.setDuration(TimeUtil.howLong(kssj, jssj,2)); + + }); + return flowMyBusinessDtoIPage; } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamFlowController.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java similarity index 72% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamFlowController.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java index c4f0052..19c20a9 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamFlowController.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java @@ -1,4 +1,4 @@ -package org.jeecg.modules.dncFlow.controller; +package org.jeecg.modules.flowable.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -7,22 +7,22 @@ import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.flowable.bpmn.model.BpmnModel; -import org.flowable.engine.*; +import org.flowable.engine.HistoryService; +import org.flowable.engine.ProcessEngine; +import org.flowable.engine.ProcessEngineConfiguration; +import org.flowable.engine.RepositoryService; import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.image.ProcessDiagramGenerator; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.modules.dncFlow.entity.WorkTaskData; -import org.jeecg.modules.dncFlow.entity.WorkTaskDataVo; -import org.jeecg.modules.dncFlow.service.IAssignFileStreamService; -import org.jeecg.modules.dncFlow.service.IHisWorkTaskService; -import org.jeecg.modules.dncFlow.service.IWorkTaskService; -import org.jeecg.modules.dncFlow.service.IWorkTaskServiceVo; -import org.jeecg.modules.dncFlow.vo.FlowMy; import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; import org.jeecg.modules.flowable.domain.dto.FlowTaskDto; +import org.jeecg.modules.flowable.domain.vo.FlowMy; +import org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo; import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.flowable.service.IHisWorkTaskService; +import org.jeecg.modules.flowable.service.IWorkTaskServiceVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -38,13 +38,11 @@ import java.util.List; @RestController -@RequestMapping("/nc/assign/flow") +@RequestMapping("assign/flow") @Slf4j -public class AssignFileStreamFlowController { +public class AssignStreamFlowController { @Autowired FlowMyBusinessServiceImpl flowMyBusinessService; - @Autowired - IWorkTaskService workTaskService; @Autowired IFlowTaskService flowTaskService; @Autowired @@ -52,16 +50,13 @@ @Autowired IHisWorkTaskService hisWorkTaskService; @Autowired - private TaskService taskService; - @Autowired private RepositoryService repositoryService; @Autowired private HistoryService historyService; @Autowired private ProcessEngine processEngine; - @Autowired - private IAssignFileStreamService assignFileStreamService; + @ApiOperation(value = "鑾峰彇鎬诲彴璐�", response = FlowTaskDto.class) @GetMapping(value = "/list") public Result<IPage<FlowMyBusinessDto>> queryPageList(FlowMyBusinessDto flowMyBusinessDto, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -69,37 +64,9 @@ HttpServletRequest req) { Page page = new Page(pageNo, pageSize); IPage<FlowMyBusinessDto> pageList = flowMyBusinessService.getPageList(page, flowMyBusinessDto); - pageList.getRecords().forEach(item -> { - if (item.getTodoUsers() == null){ - item.setTodoUsers(""); - }else{ - //鍘婚櫎[] - item.setTodoUsers(item.getTodoUsers().replaceAll("\\[", "").replaceAll("\\]", "")); - item.setTodoUsers(item.getTodoUsers().replaceAll("\"", "")); - } - if (item.getDoneUsers() == null){ - item.setDoneUsers(""); - }else { - //鍘婚櫎[] - item.setDoneUsers(item.getDoneUsers().replaceAll("\\[", "").replaceAll("\\]", "")); - item.setDoneUsers(item.getDoneUsers().replaceAll("\"", "")); - } - }); return Result.OK(pageList); } - /* - * 鑾峰彇鎵�鏈変换鍔″垪琛� - * */ - @GetMapping(value = "/workTasklist") - public Result<IPage<WorkTaskData>> queryTaskPageList(WorkTaskData workTaskData, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - List<WorkTaskData> list = workTaskService.queryAllworkTask(); - IPage<WorkTaskData> pageList = new Page<>(pageNo, pageSize, list.size()); - pageList.setRecords(list); - return Result.OK(pageList); - } + @ApiOperation(value = "鑾峰彇寰呭姙鍒楄〃", response = FlowTaskDto.class) @GetMapping(value = "/todoList") public Result todoList(@ApiParam(value = "褰撳墠椤电爜", required = true) @RequestParam (name="pageNum", defaultValue="1") Integer pageNum, @@ -127,8 +94,8 @@ @ApiOperation(value = "鑾峰彇宸ヤ綔娴佸巻鍙蹭换鍔�", response = FlowTaskDto.class) @GetMapping(value = "/queryHisTaskList") - public Result<?> queryHisTaskList(@RequestParam(name = "drapprovedataId") String drapprovedataId) { - return Result.OK(hisWorkTaskService.queryHisTaskList(drapprovedataId)); + public Result<?> queryHisTaskList(@RequestParam(name = "procInstId") String procInstId) { + return Result.OK(hisWorkTaskService.queryHisTaskByProcInstId(procInstId)); } @ApiOperation(value = "瀹℃壒浠诲姟-鏌ョ湅娴佺▼鍥�") diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowHistoricalVo.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowHistoricalVo.java new file mode 100644 index 0000000..3dec366 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowHistoricalVo.java @@ -0,0 +1,73 @@ +package org.jeecg.modules.flowable.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 宸ヤ綔娴佸巻鍙茶褰曪紙閫氱敤锛� + * + */ +@Data +@ApiModel("宸ヤ綔娴�--宸ヤ綔娴佸巻鍙茶褰曪紙閫氱敤锛�") +public class FlowHistoricalVo { + /** + * 娴佺▼瀹炰緥ID + */ + private String procInstId; + /** + * 涓氬姟閿� + */ + private String businessKey; + /** + * 娴佺▼寮�濮嬫椂闂� + */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startTime; + /** + * 娴佺▼缁撴潫鏃堕棿 + */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endTime; + /** + * 鑺傜偣鍚嶇О + */ + private String actName; + /** + * 鑺傜偣绫诲瀷 + */ + private String actType; + /** + * 鑺傜偣寮�濮嬫椂闂� + */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date actStartTime; + /** + * 鑺傜偣缁撴潫鏃堕棿 + */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date actEndTime; + /** + * 浠诲姟鍚嶇О + */ + private String taskName; + /** + * 澶勭悊浜� + */ + private String assignee; + /** + * 浠诲姟鑰楁椂 + */ + private String duration; + /** + * 浠诲姟鎻忚堪 + */ + private String description; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/FlowMy.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowMy.java similarity index 92% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/FlowMy.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowMy.java index 0326124..f8d311f 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/vo/FlowMy.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowMy.java @@ -1,4 +1,4 @@ -package org.jeecg.modules.dncFlow.vo; +package org.jeecg.modules.flowable.domain.vo; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java index b2e1b06..574c55a 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java @@ -44,7 +44,4 @@ @ApiModelProperty("瀹℃壒缁�") private List<String> candidateGroups; - private String xiugaiId; - - private Integer status; } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/HisWorkTask.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/HisWorkTask.java similarity index 96% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/HisWorkTask.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/HisWorkTask.java index 4e9aa2d..e579a4f 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/HisWorkTask.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/HisWorkTask.java @@ -1,4 +1,4 @@ -package org.jeecg.modules.dncFlow.entity; +package org.jeecg.modules.flowable.domain.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/WorkTaskData.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskData.java similarity index 98% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/WorkTaskData.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskData.java index b4c34a0..510285d 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/WorkTaskData.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskData.java @@ -1,4 +1,4 @@ -package org.jeecg.modules.dncFlow.entity; +package org.jeecg.modules.flowable.domain.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskDataVo.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskDataVo.java new file mode 100644 index 0000000..b4f9f6b --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/WorkTaskDataVo.java @@ -0,0 +1,90 @@ +package org.jeecg.modules.flowable.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * @Description:宸ヤ綔娴佷换鍔℃暟鎹� + */ +@Data +@ApiModel(value="act_ru_task", description="鎴戠殑寰呭姙") +public class WorkTaskDataVo implements Serializable { + /**涓婚敭*/ +// @TableField("id_") + private String id; + /**鐗堟湰鍙凤紝鐢ㄤ簬涔愯閿佹帶鍒跺苟鍙戞洿鏂�*/ +// @TableField("rev_") + private int rev; + /**鎵ц瀹炰緥ID锛屼笌鎵ц瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ +// @TableField("execution_id_") + private String executionId; + /**娴佺▼瀹炰緥ID锛屼笌娴佺▼瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ +// @TableField("proc_inst_id_") + private String procInstId; + /**娴佺▼瀹氫箟ID锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨処D瀛楁鍏宠仈*/ +// @TableField("proc_def_id_") + private String procDefId; + /**浠诲姟鍚嶇О*/ +// @TableField("name_") + private String name; + /**浠诲姟瀹氫箟Key锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨凨EY瀛楁鍏宠仈*/ +// @TableField("task_def_key_") + private String taskDefKey; + /**浠诲姟鐨勫姙鐞嗕汉锛屽嵆瀹為檯鎵ц浠诲姟鐨勭敤鎴�*/ +// @TableField("assignee_") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") + private String assignee; + /**浠诲姟鐨勪紭鍏堢骇*/ +// @TableField("priority_") + private int priority; + /** 浠诲姟鍒涘缓鏃堕棿*/ +// @TableField("create_time_") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** 浠诲姟鐨勬殏鍋滅姸鎬侊紝鐢ㄤ簬鎺у埗浠诲姟鐨勬殏鍋滃拰鎭㈠*/ +// @TableField("suspension_state_") + private int suspensionState; + /** 娴佺▼鍙橀噺*/ + private Map<String,Object> variables; +// @TableField("act_status") + @ApiModelProperty(value = "娴佺▼鐘舵�佽鏄庯紝鏈夛細鍚姩 鎾ゅ洖 椹冲洖 瀹℃壒涓� 瀹℃壒閫氳繃 瀹℃壒寮傚父") + private String actStatus; +// @TableField("title") + @ApiModelProperty(value = "娴佺▼涓氬姟绠�瑕佹弿杩�") + private String title; +// @TableField("data_id") + @ApiModelProperty(value = "涓氬姟琛╥d锛岀悊璁哄敮涓�") + private String dataId; + @ApiModelProperty(value = "鍓嶉┍鑺傜偣") + private String preNode; + + @ApiModelProperty(value = "娴佺▼鍚嶇О") + private transient String flowName; + + @ApiModelProperty(value = "娴佺▼绫诲瀷") + @Dict(dicCode = "flow_type") + private transient String category; + + /**娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d*/ + @Excel(name = "娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d", width = 15) + @ApiModelProperty(value = "娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d") + private String processDefinitionKey; + /**娴佺▼瀹氫箟id 涓�涓祦绋嬪畾涔夊敮涓�*/ + @Excel(name = "娴佺▼瀹氫箟id 涓�涓祦绋嬪畾涔夊敮涓�", width = 15) + @ApiModelProperty(value = "娴佺▼瀹氫箟id 涓�涓祦绋嬪畾涔夊敮涓�") + private String processDefinitionId; + /**娴佺▼涓氬姟瀹炰緥id 涓�涓祦绋嬩笟鍔″敮涓�锛屾湰琛ㄤ腑涔熷敮涓�*/ + @Excel(name = "娴佺▼涓氬姟瀹炰緥id 涓�涓祦绋嬩笟鍔″敮涓�锛屾湰琛ㄤ腑涔熷敮涓�", width = 15) + @ApiModelProperty(value = "娴佺▼涓氬姟瀹炰緥id 涓�涓祦绋嬩笟鍔″敮涓�锛屾湰琛ㄤ腑涔熷敮涓�") + private String processInstanceId; +} diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IHisWorkTaskMapper.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IHisWorkTaskMapper.java new file mode 100644 index 0000000..b3a1ff0 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IHisWorkTaskMapper.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.flowable.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.flowable.domain.vo.FlowHistoricalVo; +import org.jeecg.modules.flowable.domain.vo.HisWorkTask; + +import java.util.List; + +public interface IHisWorkTaskMapper extends BaseMapper<HisWorkTask> { + + List<HisWorkTask> queryHisTaskList(@Param("drapprovedataId") String drapprovedataId); + + /** + * 閫氳繃娴佺▼瀹炰緥id鏌ヨ鍘嗗彶浠诲姟銆� + * @param procInstId + * @return + */ + List<FlowHistoricalVo> queryHisTaskByProcInstId(@Param("procInstId") String procInstId); + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IWorkTaskMapper.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskMapper.java similarity index 65% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IWorkTaskMapper.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskMapper.java index 668380e..0a39a3b 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IWorkTaskMapper.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskMapper.java @@ -1,7 +1,7 @@ -package org.jeecg.modules.dncFlow.mapper; +package org.jeecg.modules.flowable.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.jeecg.modules.dncFlow.entity.WorkTaskData; +import org.jeecg.modules.flowable.domain.vo.WorkTaskData; import java.util.List; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IWorkTaskVoMapper.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskVoMapper.java similarity index 62% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IWorkTaskVoMapper.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskVoMapper.java index e111cbb..492a969 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/IWorkTaskVoMapper.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/IWorkTaskVoMapper.java @@ -1,15 +1,14 @@ -package org.jeecg.modules.dncFlow.mapper; +package org.jeecg.modules.flowable.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; -import org.jeecg.modules.dncFlow.entity.WorkTaskDataVo; -import org.jeecg.modules.dncFlow.vo.FlowMy; - -import java.util.List; +import org.jeecg.modules.flowable.domain.vo.FlowMy; +import org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo; public interface IWorkTaskVoMapper extends BaseMapper<WorkTaskDataVo> { + IPage<WorkTaskDataVo> taskBySelf(@Param("flowMy") FlowMy flowMy, @Param("page") Page page); - List<WorkTaskDataVo> allList(@Param("userId") String userId); + } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml new file mode 100644 index 0000000..ac9df17 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml @@ -0,0 +1,57 @@ +<?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.flowable.mapper.IHisWorkTaskMapper"> + <select id="queryHisTaskList" resultType="org.jeecg.modules.flowable.domain.vo.HisWorkTask"> + SELECT + fb.id AS id, + aht.NAME_ AS name, + aht.DESCRIPTION_ AS cause, + su.realname AS assignee, + aht.START_TIME_ AS startTime, + aht.END_TIME_ AS endTime, + assign.status as status + FROM + flow_my_business fb, + act_hi_taskinst aht, + NC_ASSIGN_FILE_STREAM assign, + sys_user su + WHERE + fb.data_id= #{drapprovedataId} + AND fb.process_instance_id= aht.PROC_INST_ID_ + AND su.username= aht.ASSIGNEE_ + AND fb.data_id= assign.STREAM_ID + ORDER BY + aht.START_TIME_ ASC + </select> + <select id="queryHisTaskByProcInstId" resultType="org.jeecg.modules.flowable.domain.vo.FlowHistoricalVo"> + SELECT + p.PROC_INST_ID_ AS procInstId, + p.BUSINESS_KEY_ AS businessKey, + p.START_TIME_ AS startTime, + p.END_TIME_ AS endTime, + a.ACT_NAME_ AS actName, + a.ACT_TYPE_ AS actType, + a.START_TIME_ AS actStartTime, + a.END_TIME_ AS actEndTime, + c.NAME_ AS taskName, + c.ASSIGNEE_ AS assignee, + CASE + WHEN c.DURATION_ IS NOT NULL THEN + CASE + WHEN FLOOR(c.DURATION_ / 1000.0) = 0 THEN NULL + ELSE FLOOR(c.DURATION_ / 1000.0) + END + ELSE NULL + END AS duration, + c.DESCRIPTION_ AS description + FROM + act_hi_procinst p + LEFT JOIN act_hi_actinst a ON p.PROC_INST_ID_ = a.PROC_INST_ID_ + LEFT JOIN ACT_HI_TASKINST c ON a.TASK_ID_ = c.ID_ + WHERE + p.PROC_INST_ID_ = #{procInstId} + AND a.ACT_NAME_ IS NOT NULL + ORDER BY + COALESCE(a.END_TIME_, '9999-12-31') ASC; + </select> +</mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/WorkTaskMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskMapper.xml similarity index 86% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/WorkTaskMapper.xml rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskMapper.xml index 3020aa0..78cd2da 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/WorkTaskMapper.xml +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskMapper.xml @@ -1,7 +1,7 @@ <?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.dncFlow.mapper.IWorkTaskMapper"> - <select id="queryAllworkTask" resultType="org.jeecg.modules.dncFlow.entity.WorkTaskData"> +<mapper namespace="org.jeecg.modules.flowable.mapper.IWorkTaskMapper"> + <select id="queryAllworkTask" resultType="org.jeecg.modules.flowable.domain.vo.WorkTaskData"> select id_,rev_,execution_id_,proc_inst_id_,proc_def_id_,name_,task_def_key_,assignee_,priority_,create_time_,suspension_state_,task_def_id_,scope_id_,sub_scope_id_,scope_type_,scope_definition_id_,propagated_stage_inst_id_,parent_task_id_,description_,owner_,delegation_,due_date_,category_,form_key_,claim_time_,is_count_enabled_,var_count_,id_link_count_,sub_task_count_ from act_ru_task ORDER BY create_time_ DESC </select> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/WorkTaskVoMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskVoMapper.xml similarity index 74% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/WorkTaskVoMapper.xml rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskVoMapper.xml index 1a23ed3..4137c80 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/mapper/xml/WorkTaskVoMapper.xml +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/WorkTaskVoMapper.xml @@ -1,7 +1,7 @@ <?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.dncFlow.mapper.IWorkTaskVoMapper"> - <select id="taskBySelf" resultType="org.jeecg.modules.dncFlow.entity.WorkTaskDataVo"> +<mapper namespace="org.jeecg.modules.flowable.mapper.IWorkTaskVoMapper"> + <select id="taskBySelf" resultType="org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo"> SELECT atask.id_ AS id, atask.rev_ AS rev, @@ -10,7 +10,6 @@ atask.proc_def_id_ AS procDefId, atask.name_ AS name, atask.task_def_key_ as taskDefKey, - su.realname as assignee, atask.priority_ AS priority, atask.create_time_ AS createTime, atask.suspension_state_ AS suspensionState, @@ -23,15 +22,11 @@ pro.name_ as flowName, pro.CATEGORY_ as category FROM - act_ru_task AS atask, - flow_my_business AS fmb, - ACT_RE_PROCDEF AS pro, - sys_user AS su + act_ru_task AS atask + LEFT JOIN flow_my_business fmb on atask.id_ = fmb.task_id + LEFT JOIN ACT_RE_PROCDEF pro on atask.PROC_DEF_ID_ = pro.id_ WHERE atask.assignee_ = #{flowMy.username} - AND atask.id_ = fmb.task_id - AND atask.PROC_DEF_ID_ = pro.id_ - AND atask.assignee_ = su.username <if test="flowMy.flowName!= null and flowMy.flowName!= ''"> AND pro.name_ LIKE CONCAT('%',#{flowMy.flowName},'%') </if> @@ -49,8 +44,5 @@ </if> ORDER BY create_time_ DESC - </select> - <select id="allList" parameterType="String" resultType="org.jeecg.modules.dncFlow.entity.WorkTaskDataVo"> - select * from act_ru_task </select> </mapper> diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IHisWorkTaskService.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IHisWorkTaskService.java new file mode 100644 index 0000000..e269602 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IHisWorkTaskService.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.flowable.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.flowable.domain.vo.FlowHistoricalVo; +import org.jeecg.modules.flowable.domain.vo.HisWorkTask; + +import java.util.List; + +public interface IHisWorkTaskService extends IService<HisWorkTask> { + + List<HisWorkTask> queryHisTaskList(String drapprovedataId); + + /** + * 閫氳繃娴佺▼瀹炰緥id鏌ヨ鍘嗗彶浠诲姟銆� + * @param procInstId + * @return + */ + List<FlowHistoricalVo> queryHisTaskByProcInstId(@Param("procInstId") String procInstId); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IWorkTaskService.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskService.java similarity index 66% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IWorkTaskService.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskService.java index 4d3f5b6..ad7ca6a 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IWorkTaskService.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskService.java @@ -1,7 +1,7 @@ -package org.jeecg.modules.dncFlow.service; +package org.jeecg.modules.flowable.service; import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.dncFlow.entity.WorkTaskData; +import org.jeecg.modules.flowable.domain.vo.WorkTaskData; import java.util.List; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IWorkTaskServiceVo.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskServiceVo.java similarity index 67% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IWorkTaskServiceVo.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskServiceVo.java index 55e8841..d69e423 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IWorkTaskServiceVo.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IWorkTaskServiceVo.java @@ -1,10 +1,10 @@ -package org.jeecg.modules.dncFlow.service; +package org.jeecg.modules.flowable.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.dncFlow.entity.WorkTaskDataVo; -import org.jeecg.modules.dncFlow.vo.FlowMy; +import org.jeecg.modules.flowable.domain.vo.FlowMy; +import org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo; public interface IWorkTaskServiceVo extends IService<WorkTaskDataVo> { diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java index edf2eb1..1efec6c 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java @@ -24,7 +24,6 @@ import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; import org.jeecg.modules.flowable.apithird.common.constant.ProcessConstants; import org.jeecg.modules.flowable.apithird.common.enums.FlowComment; -import org.jeecg.modules.flowable.apithird.entity.ActStatus; import org.jeecg.modules.flowable.apithird.entity.SysUser; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.IFlowThirdService; @@ -237,6 +236,7 @@ * @return */ @Override + @Transactional(rollbackFor = {Exception.class}) public Result<?> startProcessInstanceByKey(String procDefKey, Map<String, Object> variables) { ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey(procDefKey) @@ -269,15 +269,10 @@ ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables); // 缁欑涓�姝ョ敵璇蜂汉鑺傜偣璁剧疆浠诲姟鎵ц浜哄拰鎰忚 Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).active().singleResult(); - if (!sysUser.getUsername().equals(task.getAssignee())){ - return Result.error("褰撳墠鐢ㄦ埛涓嶆槸娴佺▼鍙戣捣浜�"); - } if (Objects.nonNull(task)) { - taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), sysUser.getRealname() + "鍙戣捣娴佺▼鐢宠"); + taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), variables.get("organization").toString()); taskService.setAssignee(task.getId(), sysUser.getUsername()); task.setDescription(variables.get("organization").toString()); - // 鏇存柊浠诲姟 - taskService.saveTask(task); //taskService.complete(task.getId(), variables); } //璁剧疆鎵�鏈夌敵璇蜂汉 @@ -334,7 +329,7 @@ business.setProcessDefinitionId(procDefId) .setProcessInstanceId(processInstance.getProcessInstanceId()) - .setActStatus(ActStatus.start) +//// .setActStatus(ActStatus.start) .setProposer(sysUser.getUsername()) .setTaskId(task2.getId()) .setTaskName(nextTask.getName()) @@ -347,7 +342,7 @@ // **娌℃湁涓嬩竴涓妭鐐癸紝娴佺▼宸茬粡缁撴潫浜� business.setProcessDefinitionId(procDefId) .setProcessInstanceId(processInstance.getProcessInstanceId()) - .setActStatus(ActStatus.pass) +// .setActStatus(ActStatus.pass) .setProposer(sysUser.getUsername()) .setDoneUsers(doneUserList.toJSONString()) ; diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowInstanceServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowInstanceServiceImpl.java index 4d5a3db..1d0581b 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowInstanceServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowInstanceServiceImpl.java @@ -1,6 +1,5 @@ package org.jeecg.modules.flowable.service.impl; - import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -17,11 +16,10 @@ import org.jeecg.common.util.SpringContextUtils; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; -import org.jeecg.modules.flowable.apithird.entity.ActStatus; +import org.jeecg.modules.flowable.apithird.common.exception.CustomException; import org.jeecg.modules.flowable.apithird.entity.SysUser; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.IFlowThirdService; -import org.jeecg.modules.flowable.apithird.common.exception.CustomException; import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; import org.jeecg.modules.flowable.factory.FlowServiceFactory; import org.jeecg.modules.flowable.service.IFlowInstanceService; @@ -122,7 +120,7 @@ doneUserList.add(sysUser.getUsername()); } business - .setActStatus(ActStatus.recall) +// .setActStatus(ActStatus.recall) .setTaskId("") .setTaskName("宸叉挙鍥�") .setPriority("") diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java index 2bb58bd..ab62a88 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java @@ -42,7 +42,6 @@ import org.jeecg.modules.flowable.apithird.common.constant.ProcessConstants; import org.jeecg.modules.flowable.apithird.common.enums.FlowComment; import org.jeecg.modules.flowable.apithird.common.exception.CustomException; -import org.jeecg.modules.flowable.apithird.entity.ActStatus; import org.jeecg.modules.flowable.apithird.entity.SysUser; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.IFlowThirdService; @@ -96,6 +95,10 @@ taskService.saveTask(task); } SysUser loginUser = iFlowThirdService.getLoginUser(); + //鍒ゆ柇鐢ㄦ埛鏄惁鏈夋潈闄� + if (!task.getAssignee().equals(loginUser.getUsername())){ + return Result.error("褰撳墠鐢ㄦ埛鏃犳潈闄�"); + } if (DelegationState.PENDING.equals(task.getDelegationState())) { taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.DELEGATE.getType(), taskVo.getComment()); //taskService.resolveTask(taskVo.getTaskId(), taskVo.getValues()); @@ -103,7 +106,6 @@ System.out.println("taskVo.getTaskId()--->taskVo.getInstanceId()--->FlowComment.NORMAL.getType()--->taskVo.getComment()"+taskVo.getTaskId() + "---" + taskVo.getInstanceId() + "---" + FlowComment.NORMAL.getType() + "---"+taskVo.getComment() ); taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.NORMAL.getType(), taskVo.getComment()); taskService.setAssignee(taskVo.getTaskId(), loginUser.getUsername()); - //taskService.complete(taskVo.getTaskId(), taskVo.getValues()); } /*======================瀹℃壒缁撴潫 鍥炶皟浠ュ強鍏抽敭鏁版嵁淇濆瓨======================*/ //涓氬姟鏁版嵁id @@ -157,8 +159,8 @@ if (task2!=null && task.getTaskDefinitionKey().equals(task2.getTaskDefinitionKey())){ // * 褰撳墠鑺傜偣鏄細绛捐妭鐐癸紝娌℃湁璧板畬 - business.setActStatus(ActStatus.doing) - .setTaskId(task2.getId()) + business.setTaskId(task2.getId()) +// .setActStatus(ActStatus.doing) .setDoneUsers(doneUserList.toJSONString()) ; String todoUsersStr = business.getTodoUsers(); @@ -202,8 +204,9 @@ // 鍓嶇浼犲叆鍊欓�変汉 collect_username = candidateUsers; } - business.setActStatus(ActStatus.doing) + business .setTaskId(task2.getId()) +// .setActStatus(ActStatus.doing) .setTaskNameId(nextTask.getId()) .setTaskName(nextTask.getName()) .setPriority(nextTask.getPriority()) @@ -234,7 +237,7 @@ } else { // **娌℃湁涓嬩竴涓妭鐐癸紝娴佺▼宸茬粡缁撴潫浜� - business.setActStatus(ActStatus.pass) + business .setDoneUsers(doneUserList.toJSONString()) .setTodoUsers("") .setTaskId("") @@ -250,11 +253,13 @@ if (flowCallBackService!=null)flowCallBackService.afterFlowHandle(business); return Result.OK(); } + @Override @Transactional(rollbackFor = Exception.class) public Result completeByDateId(FlowTaskVo flowTaskVo){ return this.complete(flowTaskVo); } + @Override public void taskRejectByDataId(FlowTaskVo flowTaskVo){ FlowMyBusiness business = flowMyBusinessService.getByDataId(flowTaskVo.getDataId()); @@ -409,8 +414,9 @@ if (!doneUserList.contains(loginUser.getUsername())){ doneUserList.add(loginUser.getUsername()); } - business.setActStatus(ActStatus.reject) + business .setTaskId(task2.getId()) +// .setActStatus(ActStatus.reject) .setTaskNameId(task2.getTaskDefinitionKey()) .setTaskName(task2.getName()) .setDoneUsers(doneUserList.toJSONString()) @@ -588,8 +594,9 @@ //**璺宠浆鍒扮洰鏍囪妭鐐� List<Task> task2List = taskService.createTaskQuery().processInstanceId(business.getProcessInstanceId()).active().list(); Task targetTask = task2List.get(0); - business.setActStatus(ActStatus.reject) + business .setTaskId(targetTask.getId()) +// .setActStatus(ActStatus.reject) .setTaskNameId(targetTask.getTaskDefinitionKey()) .setTaskName(targetTask.getName()) .setPriority(targetTask.getPriority()+"") diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/HisWorkTaskServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/HisWorkTaskServiceImpl.java new file mode 100644 index 0000000..32fc6b0 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/HisWorkTaskServiceImpl.java @@ -0,0 +1,39 @@ +package org.jeecg.modules.flowable.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.flowable.domain.vo.FlowHistoricalVo; +import org.jeecg.modules.flowable.domain.vo.HisWorkTask; +import org.jeecg.modules.flowable.mapper.IHisWorkTaskMapper; +import org.jeecg.modules.flowable.service.IHisWorkTaskService; +import org.jeecg.modules.flowable.util.TimeUtil; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service + +public class HisWorkTaskServiceImpl extends ServiceImpl<IHisWorkTaskMapper,HisWorkTask> implements IHisWorkTaskService { + @Override + public List<HisWorkTask> queryHisTaskList(String drapprovedataId) { + return baseMapper.queryHisTaskList(drapprovedataId); + } + + + /** + * 閫氳繃娴佺▼瀹炰緥id鏌ヨ鍘嗗彶浠诲姟銆� + * @param procInstId + * @return + */ + @Override + public List<FlowHistoricalVo> queryHisTaskByProcInstId(@Param("procInstId") String procInstId){ + List<FlowHistoricalVo> flowHistoricalVoList=baseMapper.queryHisTaskByProcInstId(procInstId); + flowHistoricalVoList.forEach(flowHistoricalVo->{ + //璁$畻鏃堕棿 + if (StrUtil.isNotEmpty(flowHistoricalVo.getDuration())){ + flowHistoricalVo.setDuration(TimeUtil.howLongByMillis(Long.parseLong(flowHistoricalVo.getDuration()),2)); + } + }); + return flowHistoricalVoList; + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/WorkTaskServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImpl.java similarity index 63% rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/WorkTaskServiceImpl.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImpl.java index 14e763e..10f93c9 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/WorkTaskServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImpl.java @@ -1,9 +1,9 @@ -package org.jeecg.modules.dncFlow.service.impl; +package org.jeecg.modules.flowable.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.jeecg.modules.dncFlow.entity.WorkTaskData; -import org.jeecg.modules.dncFlow.mapper.IWorkTaskMapper; -import org.jeecg.modules.dncFlow.service.IWorkTaskService; +import org.jeecg.modules.flowable.domain.vo.WorkTaskData; +import org.jeecg.modules.flowable.mapper.IWorkTaskMapper; +import org.jeecg.modules.flowable.service.IWorkTaskService; import org.springframework.stereotype.Service; import java.util.List; diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImplVo.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImplVo.java new file mode 100644 index 0000000..1cf95eb --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/WorkTaskServiceImplVo.java @@ -0,0 +1,31 @@ +package org.jeecg.modules.flowable.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.flowable.engine.history.HistoricActivityInstance; +import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; +import org.jeecg.modules.flowable.domain.vo.FlowMy; +import org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo; +import org.jeecg.modules.flowable.mapper.IWorkTaskVoMapper; +import org.jeecg.modules.flowable.service.IWorkTaskServiceVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class WorkTaskServiceImplVo extends ServiceImpl<IWorkTaskVoMapper, WorkTaskDataVo> implements IWorkTaskServiceVo { + @Autowired + FlowMyBusinessServiceImpl flowMyBusinessService; + @Override + public IPage<WorkTaskDataVo> toTaskBySelf(FlowMy flowMy, Page page) { + IPage<WorkTaskDataVo> workTaskDataVoIPage=baseMapper.taskBySelf(flowMy,page); + workTaskDataVoIPage.getRecords().forEach(workTaskDataVo -> { + HistoricActivityInstance historicActivityInstance=flowMyBusinessService.getPreviousNode(workTaskDataVo.getId()); + if (historicActivityInstance != null){ + workTaskDataVo.setPreNode(historicActivityInstance.getActivityName()); + workTaskDataVo.setAssignee(historicActivityInstance.getAssignee()); + } + }); + return workTaskDataVoIPage; + } +} diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/util/TimeUtil.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/util/TimeUtil.java new file mode 100644 index 0000000..7590e00 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/util/TimeUtil.java @@ -0,0 +1,111 @@ +package org.jeecg.modules.flowable.util; + +import java.util.Date; + +/** + * 鎻忚堪锛氭椂闂村伐鍏风被 + * + * @Date 2023/10/11 + */ +public class TimeUtil { + + /**涓�澶�*/ + public static final long day = 1000 * 60 * 60 * 24; + /**涓�灏忔椂*/ + public static final long hour = 1000 * 60 * 60; + /**涓�鍒嗛挓*/ + public static final long minute = 1000 * 60; + /**涓�绉�*/ + public static final long second = 1000; + + /** + * 璁$畻涓や釜鏃堕棿宸紝浠ユ椂鍒嗙鐨勬柟寮忓睍鐜般�� + * @param start + * @param end + * @param type 1淇濈暀姣 2淇濈暀绉� 3淇濈暀鍒嗛挓 4淇濈暀灏忔椂 5淇濈暀澶� + * @return + */ + public static String howLong(Date start, Date end, int type){ + if(start == null || end == null) + return ""; + return howLong(start.getTime(), end.getTime(), type); + } + + /** + * 璁$畻涓や釜鏃堕棿宸紝浠ユ椂鍒嗙鐨勬柟寮忓睍鐜般�� + * @param start + * @param end + * @return + */ + public static String howLong(Date start, Date end){ + if(start == null || end == null) + return ""; + return howLong(start.getTime(), end.getTime(), 1); + } + + /** + * 璁$畻缁欏畾鏃堕棿璺濈鐜板湪鐨勬椂闂村樊锛屼互鏃跺垎绉掔殑鏂瑰紡灞曠幇銆� + * @param startTime + * @return + */ + public static String howLong(long startTime){ + return howLong(startTime, System.currentTimeMillis(),1); + } + + /** + * 璁$畻鑰楁椂鏃堕暱 + * @param startTime 璧风偣鏃堕棿锛屾绉掓暟 + * @return + */ + public static String howLong(long startTime, long endTime ,int type) { + long millis = endTime - startTime; + return howLongByMillis(millis, type); + } + + /** + * 璁$畻鑰楁椂鏃堕暱 + * @param millis + * @param type + * @return + */ + public static String howLongByMillis(long millis, int type) { + if(millis <= 0) return "灏忎簬1绉�"; + + if(type > 5) return "鏍煎紡閿欒"; + + StringBuilder sb = new StringBuilder(); + + //澶� + if(millis >= day && type <=5){ + long days = millis / day; + sb.append(days).append("澶�"); + millis -= days * day; + } + // 灏忔椂璁� + if(millis >= hour && type <=4){ + long hours = millis / hour; + sb.append(hours).append("灏忔椂"); + millis -= hours * hour; + } + + if(millis >= minute && type <=3){ + long minutes = millis / minute; + sb.append(minutes).append("鍒嗛挓"); + millis -= minutes * minute; + } + + if(millis >= second && type <=2){ + long seconds = millis / second; + sb.append(seconds).append("绉�"); + millis -= seconds * second; + } + + if(millis > 0 && type <=1){ + sb.append(millis).append("姣"); + } + + return sb.toString(); + + } + +} diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index 6be0483..ba318e0 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -169,6 +169,68 @@ return result; } + /** + * 鑾峰彇鐢ㄦ埛鍒楄〃鏁版嵁 + * @param user + * @param req + * @return + */ + @RequestMapping(value = "/listAll", method = RequestMethod.GET) + public Result<List<SysUser>> listAll(SysUser user,HttpServletRequest req) { + Result<List<SysUser>> result = new Result<List<SysUser>>(); + QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap()); + + //update-begin-Author:wangshuai--Date:20211119--for:銆恦ue3銆戦�氳繃閮ㄩ棬id鏌ヨ鐢ㄦ埛锛岄�氳繃code鏌ヨid + //閮ㄩ棬ID + String departId = req.getParameter("departId"); + if(oConvertUtils.isNotEmpty(departId)){ + LambdaQueryWrapper<SysUserDepart> query = new LambdaQueryWrapper<>(); + query.eq(SysUserDepart::getDepId,departId); + List<SysUserDepart> list = sysUserDepartService.list(query); + List<String> userIds = list.stream().map(SysUserDepart::getUserId).collect(Collectors.toList()); + //update-begin---author:wangshuai ---date:20220322 for锛歔issues/I4XTYB]鏌ヨ鐢ㄦ埛鏃讹紝褰撻儴闂╥d 涓嬫病鏈夊垎閰嶇敤鎴锋椂鎺ュ彛鎶ラ敊------------ + if(oConvertUtils.listIsNotEmpty(userIds)){ + queryWrapper.in("id",userIds); + }else{ + return Result.OK(); + } + //update-end---author:wangshuai ---date:20220322 for锛歔issues/I4XTYB]鏌ヨ鐢ㄦ埛鏃讹紝褰撻儴闂╥d 涓嬫病鏈夊垎閰嶇敤鎴锋椂鎺ュ彛鎶ラ敊------------ + } + //鐢ㄦ埛ID + String code = req.getParameter("code"); + if(oConvertUtils.isNotEmpty(code)){ + queryWrapper.in("id",Arrays.asList(code.split(","))); + } + //update-end-Author:wangshuai--Date:20211119--for:銆恦ue3銆戦�氳繃閮ㄩ棬id鏌ヨ鐢ㄦ埛锛岄�氳繃code鏌ヨid + + //update-begin-author:taoyan--date:20220104--for: JTC-372 銆愮敤鎴峰喕缁撻棶棰樸�� online鎺堟潈銆佺敤鎴风粍浠讹紝閫夋嫨鐢ㄦ埛閮借兘鐪嬪埌琚喕缁撶殑鐢ㄦ埛 + String status = req.getParameter("status"); + if(oConvertUtils.isNotEmpty(status)){ + queryWrapper.eq("status", Integer.parseInt(status)); + } + //update-end-author:taoyan--date:20220104--for: JTC-372 銆愮敤鎴峰喕缁撻棶棰樸�� online鎺堟潈銆佺敤鎴风粍浠讹紝閫夋嫨鐢ㄦ埛閮借兘鐪嬪埌琚喕缁撶殑鐢ㄦ埛 + + //TODO 澶栭儴妯℃嫙鐧婚檰涓存椂璐﹀彿锛屽垪琛ㄤ笉鏄剧ず + queryWrapper.ne("username","_reserve_user_external"); + List<SysUser> list = sysUserService.list(queryWrapper); + //鎵归噺鏌ヨ鐢ㄦ埛鐨勬墍灞為儴闂� + //step.1 鍏堟嬁鍒板叏閮ㄧ殑 useids + //step.2 閫氳繃 useids锛屼竴娆℃�ф煡璇㈢敤鎴风殑鎵�灞為儴闂ㄥ悕瀛� + List<String> userIds = list.stream().map(SysUser::getId).collect(Collectors.toList()); + Map<String, String> useProNames = sysUserService.getProNamesByUserIds(userIds); + if(userIds!=null && userIds.size()>0){ + Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); + list.forEach(item->{ + item.setOrgCodeTxt(useDepNames.get(item.getId())); + item.setProductionName(useProNames.get(item.getId())); + }); + } + result.setSuccess(true); + result.setResult(list); + log.info(list.toString()); + return result; + } + //@RequiresRoles({"admin"}) //Permissions("system:user:add") @RequestMapping(value = "/add", method = RequestMethod.POST) diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java index 5393931..84fa63b 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java @@ -1,10 +1,12 @@ package org.jeecg.modules.system.mapper; -import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUserRole; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; /** * <p> @@ -32,4 +34,11 @@ @Select("select id from sys_role where id in (select role_id from sys_user_role where user_id = (select id from sys_user where username=#{username}))") List<String> getRoleIdByUserName(@Param("username") String username); + /** + * 鏍规嵁瑙掕壊鏌ヨ鐢ㄦ埛 + * @param roleList role_code闆嗗悎 + * */ + List<SysUser> getUsersByRoles(@Param("roleList") List<String> roleList); + + } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml new file mode 100644 index 0000000..c3812b4 --- /dev/null +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml @@ -0,0 +1,18 @@ +<?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.system.mapper.SysUserRoleMapper"> + <select id="getUsersByRoles" resultType="org.jeecg.modules.system.entity.SysUser"> + select t.* from sys_user t where t.del_flag = 0 + and t.id in ( + select t1.user_id from sys_user_role t1 + left join sys_role t2 on t1.role_id = t2.id + <if test="roleList!=null and roleList.size()>0"> + and t2.role_code in + <foreach collection="roleList" index="index" item="roleCode" open="(" separator="," close=")"> + #{roleCode} + </foreach> + </if> + where t2.id is not null + ) + </select> +</mapper> diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java index e031449..cb1ef5f 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java @@ -1,10 +1,10 @@ package org.jeecg.modules.system.service; -import java.util.Map; - +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUserRole; -import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; /** * <p> @@ -15,4 +15,11 @@ * @since 2018-12-21 */ public interface ISysUserRoleService extends IService<SysUserRole> { + + /** + * 鏍规嵁瑙掕壊鏌ヨ鐢ㄦ埛 + * @param roleList 瑙掕壊缂栫爜闆嗗悎 + * */ + List<SysUser> queryUsersByRoles(List<String> roleList); + } 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 5bfc7ff..bc363c2 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 @@ -9,9 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.FillRuleConstant; import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.FillRuleUtil; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.*; @@ -79,12 +81,25 @@ @Override public List<MdcProductionTreeModel> queryTreeListByConfig(){ SysParams sysParams = sysParamsService.getSysPramBySettingKey("dnc_production"); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>(); if (sysParams == null) { return null; }else { + List<String> productionIds = new ArrayList<>(); + if (!("admin").equals(loginUser.getUsername())) { + //涓嶆槸瓒呯骇绠$悊鍛橈紝鑾峰彇鐢ㄦ埛鎷ユ湁鐨勪骇绾� + if (loginUser.getProductionIds() != null) { + if (loginUser.getProductionIds().contains(",")) { + productionIds = Arrays.asList(loginUser.getProductionIds().split(",")); + } else { + productionIds = Collections.singletonList(loginUser.getProductionIds()); + } + } + } if (("0").equals(sysParams.getSettingValue())){ query.eq(MdcProduction::getOrgType,"2"); + query.in(!productionIds.isEmpty(), MdcProduction::getId, productionIds); query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); query.orderByAsc(MdcProduction::getProductionOrder); List<MdcProduction> list = this.list(query); diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java index 9af6f77..dad8e87 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java @@ -1,20 +1,14 @@ package org.jeecg.modules.system.service.impl; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; - -import org.jeecg.modules.system.entity.SysRole; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUserRole; import org.jeecg.modules.system.mapper.SysUserRoleMapper; -import org.jeecg.modules.system.service.ISysRoleService; import org.jeecg.modules.system.service.ISysUserRoleService; -import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; /** * <p> @@ -27,4 +21,16 @@ @Service public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements ISysUserRoleService { + @Autowired + private SysUserRoleMapper sysUserRoleMapper; + + /** + * 鏍规嵁瑙掕壊鏌ヨ鐢ㄦ埛 + * @param roleList 瑙掕壊缂栫爜闆嗗悎 + * */ + @Override + public List<SysUser> queryUsersByRoles(List<String> roleList) { + return sysUserRoleMapper.getUsersByRoles(roleList); + } + } -- Gitblit v1.9.3