Merge remote-tracking branch 'origin/develop_master' into develop_master

This commit is contained in:
yuezhihang
2022-07-04 13:29:44 +08:00
18 changed files with 369 additions and 14 deletions
@@ -1,6 +1,8 @@
package com.adc.da.common;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -46,5 +48,8 @@ public class BusProcessNew {
private long commitStatus;
@TableField( exist = false)
@ApiModelProperty(value = "当前节点信息")
private String nowTaskInfo;
}
@@ -0,0 +1,46 @@
package com.adc.da.slrs.sarBussStandSn.controller;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.adc.da.base.web.BaseController;
/**
* <p>
* 企业标准信息表 前端控制器
* </p>
*
* @author super_liu
* @since 2022-07-01
*/
@RestController
@Api(tags = "|SarBussStandSn|")
@RequestMapping("/${restPath}/sarBussStandSn/sar-buss-stand-sn")
public class SarBussStandSnController extends BaseController<SarBussStandSn> {
@Autowired
private ISarBussStandSnService iSarBussStandSnService;
@ApiOperation(value = "效验当前顺序号是否存在")
@GetMapping("verifySnExists")
public ResponseMessage<Object> verifySnExists(@RequestParam("taskId") String taskId,@RequestParam("standSn") String standSn,@RequestParam("standSort") String standSort){
synchronized (this){
return Result.success(iSarBussStandSnService.verifySnExists(taskId,standSn,standSort));
}
}
@ApiOperation(value = "更新企标顺序号状态")
@GetMapping("modSnByProcess")
public ResponseMessage<Object> modSnByProcess(@RequestParam("taskId") String taskId){
return Result.success(iSarBussStandSnService.modSnByProcess(taskId));
}
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarBussStandSn.dao;
import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 企业标准信息表 Mapper 接口
* </p>
*
* @author super_liu
* @since 2022-07-01
*/
public interface SarBussStandSnDao extends BaseMapper<SarBussStandSn> {
}
@@ -0,0 +1,70 @@
package com.adc.da.slrs.sarBussStandSn.entity;
import com.adc.da.base.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
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 java.util.Date;
/**
* <p>
* 企业标准信息表
* </p>
*
* @author super_liu
* @since 2022-07-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="SarBussStandSn对象", description="企业标准信息表")
public class SarBussStandSn extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId("ID")
private String id;
@ApiModelProperty(value = "计划库制定状态 0 默认 buss1_1 技术标准 制定 buss2_1 产品标准 制定 ")
@TableField("REVISE_STATUS")
private String reviseStatus;
@ApiModelProperty(value = "企标顺序号")
@TableField("STAND_SN")
private String standSn;
@ApiModelProperty(value = "企标类别")
@TableField("STAND_SORT")
private String standSort;
@ApiModelProperty(value = "企标编号使用状态 yes 已使用 no 未使用")
@TableField("USE_STATUS")
private String useStatus;
@ApiModelProperty(value = "是否有效")
@TableField("VALID_FLAG")
private String validFlag;
@ApiModelProperty(value = "创建时间")
@TableField("CREATION_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date creationTime;
@ApiModelProperty(value = "修改时间")
@TableField("MODIFY_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date modifyTime;
@ApiModelProperty(value = "任务ID 不为 null 取当前任务顺序号")
@TableField("TASK_ID")
private String taskId;
}
@@ -0,0 +1,19 @@
package com.adc.da.slrs.sarBussStandSn.service;
import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 企业标准信息表 服务类
* </p>
*
* @author super_liu
* @since 2022-07-01
*/
public interface ISarBussStandSnService extends IService<SarBussStandSn> {
Boolean verifySnExists(String taskId,String standSn,String standSort);
Boolean modSnByProcess(String taskId);
}
@@ -0,0 +1,63 @@
package com.adc.da.slrs.sarBussStandSn.service.impl;
import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn;
import com.adc.da.slrs.sarBussStandSn.dao.SarBussStandSnDao;
import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService;
import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* 企业标准信息表 服务实现类
* </p>
*
* @author super_liu
* @since 2022-07-01
*/
@Service
public class SarBussStandSnServiceImpl extends ServiceImpl<SarBussStandSnDao, SarBussStandSn> implements ISarBussStandSnService {
@Autowired
private ISarBussStandSnService iSarBussStandSnService;
@Autowired
private ISarBussionessStandService iSarBussionessStandService;
@Override
public Boolean verifySnExists(String taskId,String standSn,String standSort){
QueryWrapper<SarBussStandSn> qw = new QueryWrapper();
qw.eq("STAND_SORT",standSort);
qw.eq("STAND_SN",standSn);
qw.and(wrapper -> wrapper.ne("TASK_ID",taskId).or().isNull("TASK_ID"));
int count = iSarBussStandSnService.count(qw);
QueryWrapper qw2 = new QueryWrapper();
qw2.eq("STAND_SORT",standSort);
qw2.eq("STAND_NUMBER",standSn);
int count2 = iSarBussionessStandService.count(qw2);
if(count > 0 || count2 > 0){
return false;
}
return true;
}
@Override
public Boolean modSnByProcess(String taskId){
QueryWrapper qw = new QueryWrapper();
qw.eq("TASK_ID",taskId);
int count = iSarBussStandSnService.count(qw);
if(count > 0){
UpdateWrapper updateWrapper = new UpdateWrapper();
updateWrapper.set("USE_STATUS","no");
updateWrapper.set("TASK_ID",null);
updateWrapper.eq("TASK_ID",taskId);
return iSarBussStandSnService.update(updateWrapper);
}
return false;
}
}
@@ -83,9 +83,11 @@ public class SarBussionessStandController extends BaseController<SarBussionessSt
@ApiOperation(value = "|SarBussionessStandEO|根据计划库制定状态查询企标编号")
@GetMapping("/getStandInfoByReviseStatus")
//@RequiresPermissions("lawss:sarStandardsInfo:get")
public ResponseMessage<SarBussionessStand> getStandInfoByReviseStatus(String reviseStatus,String standSort) {
SarBussionessStand result = sarBussionessStandEOService.getStandInfoByReviseStatus(reviseStatus,standSort);
return Result.success(result);
public ResponseMessage<SarBussionessStand> getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId) {
synchronized (this){
SarBussionessStand result = sarBussionessStandEOService.getStandInfoByReviseStatus(reviseStatus,standSort,taskId);
return Result.success(result);
}
}
@ApiOperation(value = "|SarBussionessStandEO|删除")
@@ -19,7 +19,7 @@ import java.util.List;
*/
public interface ISarBussionessStandService extends IService<SarBussionessStand> {
SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort);
SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId);
void attrInfoDetails (SarBussionessStand row) throws Exception;
@@ -29,6 +29,8 @@ import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile;
import com.adc.da.slrs.sarBussStandItems.dao.SarBussStandItemsDao;
import com.adc.da.slrs.sarBussStandMenu.dao.SarBussStandMenuDao;
import com.adc.da.slrs.sarBussStandMenu.entity.SarBussStandMenu;
import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn;
import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService;
import com.adc.da.slrs.sarBussStandVal.dao.SarBussStandValDao;
import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
@@ -164,9 +166,68 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
@Autowired
private INewsFeedService iNewsFeedService;
@Autowired
private ISarBussStandSnService iSarBussStandSnService;
@Override
public SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort){
return sarBussionessStandEODao.getStandInfoByReviseStatus(reviseStatus,standSort);
public SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId){
SarBussionessStand bussionessStand = new SarBussionessStand();
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ",""));
int count = iSarBussStandSnService.count(queryWrapper);
// 1 先验证 当前企标类别 是否存在顺序号
if(count > 0){
QueryWrapper qw = new QueryWrapper();
qw.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ",""));
qw.eq("TASK_ID",taskId);
qw.eq("USE_STATUS","yes");
SarBussStandSn sns = iSarBussStandSnService.getOne(qw);
// 1.1 防止不同步撤回 页面未退出 及 防止页面刷新 已锁定的顺序号 被一直叠加 获取当前任务之前生成的顺序号
if(sns != null && sns.getId() != null){
// 1.1.1 返回顺序号
bussionessStand.setNewStandSn(sns.getStandSn());
}else {
QueryWrapper wrapper = new QueryWrapper();
wrapper.select("MIN(DISTINCT CAST(STAND_SN AS decimal(9))) AS STAND_SN");
wrapper.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ",""));
wrapper.isNull("TASK_ID");
wrapper.eq("USE_STATUS","no");
SarBussStandSn standSn = iSarBussStandSnService.getOne(wrapper);
// 1.1.2 查询 被撤回的 任务ID 被重置NULL 及 状态被重置 no 未使用 最小值 。。 "自动带入" "自动获取" 未被使用最小 顺序号
if(standSn != null && standSn.getId() != null) {
// 1.1.2.1 返回顺序号
bussionessStand.setNewStandSn(standSn.getStandSn());
}else {
QueryWrapper wrapper1 = new QueryWrapper();
wrapper1.select("MAX(DISTINCT CAST(STAND_SN AS decimal(9)))+1 AS STAND_SN");
wrapper1.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ",""));
SarBussStandSn one = iSarBussStandSnService.getOne(wrapper1);
// 1.1.2.2 返回顺序号
bussionessStand.setNewStandSn(one.getStandSn());
// 1.1.2.3 获取新的顺序号 存入顺序号表中
saveBussStandSn(reviseStatus, standSort, one.getStandSn(),taskId);
}
}
}else {
// 2 获取企标库中 当前类别 最新 顺序号 (前提必须顺序号为正规数据)
bussionessStand = sarBussionessStandEODao.getStandInfoByReviseStatus(reviseStatus,standSort);
saveBussStandSn(reviseStatus, standSort, bussionessStand.getNewStandSn(),taskId);
}
return bussionessStand;
}
private void saveBussStandSn(String reviseStatus, String standSort, String standSn,String taskId) {
SarBussStandSn sn = new SarBussStandSn();
sn.setId(UUIDUtils.randomUUID20());
sn.setStandSort(standSort);
sn.setStandSn(standSn);
sn.setModifyTime(new Date());
sn.setReviseStatus(reviseStatus);
sn.setTaskId(taskId);
iSarBussStandSnService.saveOrUpdate(sn);
}
public ResponseMessage<SarBussionessStand> deleteSarBussionessStand(SarBussionessStandEOPage page) throws Exception {
@@ -105,6 +105,12 @@ public class TsInstitutionController extends BaseController<TsInstitution> {
return tsInstitutionService.getNext(institutionId,userName);
}
@ApiOperation("topNum 获取人员上几级部门")
@GetMapping("/selectNowInst")
public List<TsInstitution> selectNowInst(String institutionId,String userName,String topNum){
return tsInstitutionService.selectNowInst(institutionId,userName,topNum);
}
@GetMapping("/getNextTwo")
public List<TsInstitution> getNextTwo(String userName){
return tsInstitutionService.getNextTwo(userName);
@@ -112,8 +118,8 @@ public class TsInstitutionController extends BaseController<TsInstitution> {
@ApiOperation("获得下一级的部门和人员")
@GetMapping("/getNextById")
public List<TsUserVO> getNextById(String ids){
return tsInstitutionService.getNextById(ids);
public List<TsUserVO> getNextById(String ids,Integer topNum){
return tsInstitutionService.getNextById(ids,topNum);
}
@ApiOperation("获得第一级部门目录")
@@ -7,6 +7,7 @@ import com.adc.da.slrs.sarInstitution.entity.TsUserVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -18,6 +19,7 @@ import java.util.List;
* @author zyl
* @since 2021-06-22
*/
@Repository
public interface TsInstitutionDao extends BaseMapper<TsInstitution> {
/**
* 根据部门id查询此部门的子一级部门
@@ -37,6 +39,8 @@ public interface TsInstitutionDao extends BaseMapper<TsInstitution> {
List<TsInstitution> selectNextUsers(@Param("institutionIds") List<String> institutionIds,@Param("userName") String userName);
List<TsInstitution> selectNowInst(@Param("institutionId") String institutionId,@Param("topNum") String topNum);
List<TsUserVO> selectNextUserByIds(@Param("ids") List<String> ids);
@@ -48,6 +48,9 @@ public class TsInstitution extends BaseEntity {
@ApiModelProperty(value = "子机构")
private List<Object> children;
@TableField(exist = false)
private List<TsInstitution> topChildren;
@JsonIgnore
@TableField(exist = false)
@ApiModelProperty(value = "人员")
@@ -126,4 +126,15 @@ public class TsUserVO {
@ApiModelProperty(value = "单位Id")
@TableField(exist = false)
private String unitId;
@ApiModelProperty(value = "上级单位 根据规则参数 返回上几级单位")
@TableField(exist = false)
private String topUnit;
@ApiModelProperty(value = "上级单位Id 根据规则参数 返回上几级单位")
@TableField(exist = false)
private String topUnitId;
@TableField(exist = false)
private List<TsInstitution> children;
}
@@ -39,11 +39,13 @@ public interface ITsInstitutionService extends IService<TsInstitution> {
*/
public List<TsInstitution> getNext(String institutionId,String userName);
public List<TsInstitution> selectNowInst(String institutionId,String userName,String topNum);
public List<TsInstitution> getNextTwo(String userName);
public List<TsInstitution> getInstitutionIdToDept(String institutionIds,String userName);
public List<TsUserVO> getNextById(String ids);
public List<TsUserVO> getNextById(String ids,Integer topNum);
/**
* 获得第一级的部门
@@ -14,6 +14,9 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.bouncycastle.pqc.math.linearalgebra.IntUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -211,6 +214,10 @@ public class TsInstitutionServiceImpl extends ServiceImpl<TsInstitutionDao, TsIn
return tsUsers;
}
public List<TsInstitution> selectNowInst(String institutionId,String userName,String topNum){
return tsInstitutionDao.selectNowInst(institutionId, topNum);
}
/**
* 通过部门id获得这个部门下的下一级部门
* @return
@@ -223,6 +230,7 @@ public class TsInstitutionServiceImpl extends ServiceImpl<TsInstitutionDao, TsIn
for(TsInstitution tsInstitution:tsInstitutions){
tsInstitution.setDisabled(true);
}
tsInstitutions.addAll(tsUsers);
return tsInstitutions;
}
@@ -254,10 +262,13 @@ public class TsInstitutionServiceImpl extends ServiceImpl<TsInstitutionDao, TsIn
return tsInstitutions;
}
public List<TsUserVO> getNextById(String ids){
@Override
public List<TsUserVO> getNextById(String ids,Integer topNum){
List<String> strings=new ArrayList<>(Arrays.asList(ids.split(",")));
List<TsUserVO> tsUsers=tsInstitutionDao.selectNextUserByIds(strings);
List<TsUserVO> res=new ArrayList<>();
List<TsInstitution> list = tsInstitutionDao.selectList(new QueryWrapper<>());
if (null!=tsUsers && tsUsers.size()>0){
Map<String,TsUserVO> middle=new HashMap<>();
for (TsUserVO u:tsUsers) {
@@ -269,9 +280,36 @@ public class TsInstitutionServiceImpl extends ServiceImpl<TsInstitutionDao, TsIn
res.add(middle.get(s));
});
}
// 新需求 按规则取用户上几级部门
if(!res.isEmpty() && topNum != null){
Map<String, TsInstitution> map = list.stream().collect(Collectors.toMap(TsInstitution::getId, tsInstitution -> tsInstitution));
for (TsUserVO userVO : res) {
List<TsInstitution> tsInstitutions = new ArrayList<>();
List<TsInstitution> institutions = getTopChild(map,userVO.getInstitutionId(),topNum,tsInstitutions);
if(!institutions.isEmpty()){
if(institutions.size() >= topNum){
userVO.setTopUnitId(institutions.get(topNum).getId());
userVO.setTopUnit(institutions.get(topNum).getName());
}else {
userVO.setTopUnitId(institutions.get(institutions.size()-1).getId());
userVO.setTopUnit(institutions.get(institutions.size()-1).getName());
}
}
}
}
return res;
}
public List<TsInstitution> getTopChild(Map<String, TsInstitution> map,String id,int topNum,List<TsInstitution> institutions){
TsInstitution institution = map.get(id);
if( institution != null && StringUtils.isNotBlank(institution.getParentId())){
institutions.add(institution);
getTopChild(map,institution.getParentId(),topNum,institutions);
}
return institutions;
}
public List<TsInstitution> getFirst(){
//查询第一层机构
@@ -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="com.adc.da.slrs.sarBussStandSn.dao.SarBussStandSnDao">
</mapper>
@@ -351,8 +351,8 @@
</select>
<select id="getStandInfoByReviseStatus" resultMap="BaseResultMap" parameterType="java.lang.String">
select MAX(DISTINCT CAST(STAND_SN AS decimal(9)))+1 AS newStandSn from sar_bussioness_stand
where revise_status = #{value} and REPLACE(STAND_SORT,' ','') = REPLACE(#{standSort},' ','') and valid_flag=0
select MAX(DISTINCT CAST(stand_number AS decimal(9)))+1 AS newStandSn from sar_bussioness_stand
where REPLACE(STAND_SORT,' ','') = REPLACE(#{standSort},' ','') and valid_flag=0
</select>
<!-- 删除记录 -->
@@ -81,6 +81,11 @@
order by ts_institution.id
</select>
<!-- 查询当前用户上几级部门-->
<select id="selectNowInst" resultMap="TsInstitution">
SELECT * from ts_institution where FIND_IN_SET(id,queryChildrenInstitution(#{institutionId},#{topNum}));
</select>
<!-- 只查询这个部门下的子一级人员-->
<select id="selectNextUser" resultMap="TsUser">
select ts_user.EMAIL,ts_user.ACCOUNT,ts_user.CREATION_TIME,ts_user.DISABLE_FLAG,ts_user.EXT_INFO,ts_user.USID,
@@ -104,13 +109,12 @@
ts_user.USER_TYPE,ts_user.VALID_FLAG,ts_user.WORK_NUM,concat(ts_user.UNAME,concat(concat("(",ts_user.ACCOUNT),")")) as uname
from ts_user
left join ts_institution on ts_user.INSTITUTION_ID=ts_institution.id
WHERE 1=1
WHERE 1=1
<if test="ids != null and ids.size()> 0 ">
and ts_user.USID in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>