会签管理,库管员多选

This commit is contained in:
hayu 2025-05-26 00:52:01 +08:00
parent cc9662b2d9
commit 9946989992
6 changed files with 187 additions and 44 deletions

View File

@ -65,9 +65,9 @@ public class signProcessController extends BaseController {
*/
@ApiOperation(value = "获取会签流程配置管理详细信息")
@RequiresPermissions("signProcess:info:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(signProcessService.selectProcessInfoById(id));
@GetMapping(value = "/{ids}")
public AjaxResult getInfo(@PathVariable("ids") Long[] ids) {
return success(signProcessService.selectProcessInfoById(ids));
}
@ -94,8 +94,8 @@ public class signProcessController extends BaseController {
@PreventRepeatSubmit
@RequiresPermissions("signProcess:info:remove")
@SysLog(title = "会签流程配置管理", businessType = OperaType.DELETE, module = "会签流程配置管理->删除会签流程配置管理")
@PostMapping("/delProcess/{id}")
public AjaxResult delProcess(@PathVariable("id") Long id) {
return signProcessService.delProcess(id);
@PostMapping("/delProcess/{ids}")
public AjaxResult delProcess(@PathVariable("ids") Long[] ids) {
return signProcessService.delProcess(ids);
}
}

View File

@ -21,6 +21,10 @@ public class SignProcessVo extends BaseEntity {
@ApiModelProperty(value = "id")
private Long id;
private Long[] ids;
private String idStr;
/** 会签流程id */
@ApiModelProperty(value = "会签流程id")
private String processId;
@ -33,6 +37,12 @@ public class SignProcessVo extends BaseEntity {
@ApiModelProperty(value = "组织id")
private Long orgId;
private String orgIdStr;
/** 组织id */
@ApiModelProperty(value = "组织ids")
private Long[] orgIds;
/** 会签流程名称 */
@ApiModelProperty(value = "会签流程名称")
private String processName;

View File

@ -3,6 +3,7 @@ package com.bonus.material.countersign.mapper;
import com.bonus.material.countersign.domain.SignConfigVo;
import com.bonus.material.countersign.domain.SignProcessVo;
import com.bonus.material.purchase.domain.PurchaseSignRecord;
import feign.Param;
import java.util.List;
@ -40,6 +41,14 @@ public interface SignProcessMapper
*/
List<SignProcessVo> getList(SignProcessVo signProcessVo);
/**
* 查询会签流程配置管理列表
*
* @param signProcessVo 会签流程配置管理
* @return 会签流程配置管理集合
*/
List<SignProcessVo> getListNew(SignProcessVo signProcessVo);
/**
* 新增时查询流程id和会签类型下会签组织是否重复
*
@ -62,7 +71,7 @@ public interface SignProcessMapper
* @param id 主键
* @return 会签流程配置管理
*/
SignProcessVo selectProcessInfoById(Long id);
SignProcessVo selectProcessInfoById(@Param("id") Long[] id);
/**
* 修改时查询查询流程id和会签类型下会签组织是否重复

View File

@ -36,7 +36,7 @@ public interface ISignProcessService {
* @param id 主键
* @return 会签流程配置管理
*/
SignProcessVo selectProcessInfoById(Long id);
SignProcessVo selectProcessInfoById(Long[] id);
/**
@ -50,8 +50,8 @@ public interface ISignProcessService {
/**
* 删除会签流程配置管理信息
*
* @param id 主键
* @param ids 主键
* @return 结果
*/
AjaxResult delProcess(Long id);
AjaxResult delProcess(Long[] ids);
}

View File

@ -7,8 +7,11 @@ import com.bonus.material.countersign.mapper.SignConfigMapper;
import com.bonus.material.countersign.mapper.SignProcessMapper;
import com.bonus.material.countersign.service.ISignConfigService;
import com.bonus.material.countersign.service.ISignProcessService;
import org.hibernate.validator.internal.util.StringHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.List;
@ -32,7 +35,26 @@ public class SignProcessServiceImpl implements ISignProcessService
*/
@Override
public List<SignProcessVo> getList(SignProcessVo signProcessVo) {
return signProcessMapper.getList(signProcessVo);
List<SignProcessVo> list = signProcessMapper.getListNew(signProcessVo);
if (list.size()>0){
for (SignProcessVo signProcessVos : list) {
//将idStr用逗号分割放入ids数组中
String[] split = signProcessVos.getIdStr().split(",");
Long[] ids = new Long[split.length];
for (int i = 0; i < split.length; i++) {
ids[i] = Long.parseLong(split[i].trim());
}
signProcessVos.setIds(ids);
//将orgIdStr用逗号分割放入orgIds数组中
String[] splitTwo = signProcessVos.getOrgIdStr().split(",");
Long[] orgIds = new Long[splitTwo.length];
for (int i = 0; i < splitTwo.length; i++) {
orgIds[i] = Long.parseLong(splitTwo[i].trim());
}
signProcessVos.setOrgIds(orgIds);
}
}
return list;
}
/**
@ -42,18 +64,24 @@ public class SignProcessServiceImpl implements ISignProcessService
* @return 结果
*/
@Override
public AjaxResult insertProcessInfo(SignProcessVo signProcessVo)
{
public AjaxResult insertProcessInfo(SignProcessVo signProcessVo) {
try {
if (signProcessVo != null && signProcessVo.getOrgIds() != null) {
for (Long orgId : signProcessVo.getOrgIds()) {
signProcessVo.setOrgId(orgId);
int count = signProcessMapper.selectProcessRepeat(signProcessVo);
if (count > 0) {
return AjaxResult.error("该会签流程和类型下已有该会签组织,请重新选择新增");
}
int countTwo = signProcessMapper.insertProcessInfo(signProcessVo);
if(countTwo == 1){
return AjaxResult.success();
}
if (countTwo <= 0) {
return AjaxResult.error("会签流程配置新增失败");
}
}
return AjaxResult.success();
} else {
return AjaxResult.error("请选择会签组织");
}
} catch (Exception e) {
return AjaxResult.error();
}
@ -62,13 +90,30 @@ public class SignProcessServiceImpl implements ISignProcessService
/**
* 查询会签流程配置管理详情
*
* @param id 主键
* @param ids 主键
* @return 会签流程配置管理
*/
@Override
public SignProcessVo selectProcessInfoById(Long id)
public SignProcessVo selectProcessInfoById(Long[] ids)
{
return signProcessMapper.selectProcessInfoById(id);
SignProcessVo signProcessVo = signProcessMapper.selectProcessInfoById(ids);
if (signProcessVo != null && !StringHelper.isNullOrEmptyString(signProcessVo.getOrgIdStr())){
//将orgIdStr用逗号分割放入orgIds数组中
String[] split = signProcessVo.getOrgIdStr().split(",");
Long[] orgIds = new Long[split.length];
for (int i = 0; i < split.length; i++) {
orgIds[i] = Long.parseLong(split[i].trim());
}
signProcessVo.setOrgIds(orgIds);
//将idStr用逗号分割放入ids数组中
String[] splitTwo = signProcessVo.getIdStr().split(",");
Long[] id = new Long[splitTwo.length];
for (int i = 0; i < splitTwo.length; i++) {
id[i] = Long.parseLong(splitTwo[i].trim());
}
signProcessVo.setIds(id);
}
return signProcessVo;
}
@ -79,19 +124,32 @@ public class SignProcessServiceImpl implements ISignProcessService
* @return 结果
*/
@Override
public AjaxResult updateProcessInfo(SignProcessVo signProcessVo)
{
@Transactional(rollbackFor = Exception.class)
public AjaxResult updateProcessInfo(SignProcessVo signProcessVo) {
try {
int count = signProcessMapper.selectProcessRepeatEdit(signProcessVo);
//先将数据删除
for (Long id : signProcessVo.getIds()) {
int count = signProcessMapper.delProcess(id);
if (count <= 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error("会签流程配置修改失败");
}
}
for (Long orgId : signProcessVo.getOrgIds()) {
signProcessVo.setOrgId(orgId);
int count = signProcessMapper.selectProcessRepeat(signProcessVo);
if (count > 0) {
return AjaxResult.error("该会签流程和类型下已有该会签组织,请重新选择修改");
}
int countTwo = signProcessMapper.updateProcessInfo(signProcessVo);
if(countTwo == 1){
return AjaxResult.success();
}
int countTwo = signProcessMapper.insertProcessInfo(signProcessVo);
if (countTwo <= 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error("会签流程配置修改失败");
}
}
return AjaxResult.success();
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
@ -99,18 +157,23 @@ public class SignProcessServiceImpl implements ISignProcessService
/**
* 删除会签流程配置管理信息
*
* @param id 主键
* @param ids 主键
* @return 结果
*/
@Override
public AjaxResult delProcess(Long id)
{
@Transactional(rollbackFor = Exception.class)
public AjaxResult delProcess(Long[] ids) {
try {
if (ids != null || ids.length > 0) {
for (Long id : ids) {
int count = signProcessMapper.delProcess(id);
if(count == 1){
return AjaxResult.success();
}
if (count <= 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error("会签流程配置删除失败");
}
}
}
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.error();
}

View File

@ -4,6 +4,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.material.countersign.mapper.SignProcessMapper">
<select id="getListNew" resultType="com.bonus.material.countersign.domain.SignProcessVo">
select
sc.id as id,sc.id as idStr,sc.process_id as processId,sc.sign_type as signType,sc.org_id as orgIdStr,
sd.dept_name as orgName,sdd.dict_label as processName,sdd2.dict_label as signTypeName
from sign_config sc
left join sys_dict_data sdd on sc.process_id = sdd.dict_value
left join sys_dict_data sdd2 on sc.sign_type = sdd2.dict_value
left join sys_dept sd on sc.org_id = sd.dept_id and sd.del_flag = 0
where
sc.del_flag = 0
and sdd.dict_type = 'countersign_process_config_name' and sdd.status = 0
and sdd2.dict_type = 'countersign_process_type_name' and sdd2.status = 0
<if test="keyWord != null and keyWord != ''">
and (sdd.dict_label like concat('%', #{keyWord}, '%') or sdd2.dict_label like concat('%', #{keyWord}, '%')
or sd.dept_name like concat('%', #{keyWord}, '%'))
</if>
AND sd.dept_name NOT LIKE '%库管%'
union
SELECT
sc.id AS id,
GROUP_CONCAT(sc.id) AS idStr,
sc.process_id AS processId,
sc.sign_type AS signType,
GROUP_CONCAT(sc.org_id) AS orgIdStr,
GROUP_CONCAT(sd.dept_name) AS orgName,
sdd.dict_label AS processName,
sdd2.dict_label AS signTypeName
FROM
sign_config sc
LEFT JOIN sys_dict_data sdd ON sc.process_id = sdd.dict_value
LEFT JOIN sys_dict_data sdd2 ON sc.sign_type = sdd2.dict_value
LEFT JOIN sys_dept sd ON sc.org_id = sd.dept_id AND sd.del_flag = 0
WHERE
sc.del_flag = 0
AND sdd.dict_type = 'countersign_process_config_name'
AND sdd.status = 0
AND sdd2.dict_type = 'countersign_process_type_name'
AND sdd2.status = 0
<if test="keyWord != null and keyWord != ''">
and (sdd.dict_label like concat('%', #{keyWord}, '%') or sdd2.dict_label like concat('%', #{keyWord}, '%')
or sd.dept_name like concat('%', #{keyWord}, '%'))
</if>
AND sd.dept_name LIKE '%库管%'
GROUP BY
sc.process_id,
sc.sign_type,
sdd.dict_label,
sdd2.dict_label
</select>
<select id="getList" resultType="com.bonus.material.countersign.domain.SignProcessVo">
select
sc.id as id,sc.process_id as processId,sc.sign_type as signType,sc.org_id as orgId,
@ -55,11 +105,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</insert>
<select id="selectProcessInfoById" parameterType="Long" resultType="com.bonus.material.countersign.domain.SignProcessVo">
select
sc.id as id,sc.process_id as processId,sc.sign_type as signType,sc.org_id as orgId
from sign_config sc
where sc.id = #{id} and sc.del_flag = 0
<select id="selectProcessInfoById" resultType="com.bonus.material.countersign.domain.SignProcessVo">
SELECT
sc.id AS id,
GROUP_CONCAT(sc.id) AS idStr,
sc.process_id AS processId,
sc.sign_type AS signType,
GROUP_CONCAT(sc.org_id) AS orgIdStr
FROM
sign_config sc
WHERE
sc.del_flag = 0
AND sc.id IN
<foreach collection="array" item="id" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY sc.process_id,sc.sign_type
</select>
<select id="selectProcessRepeatEdit" resultType="int">