Commit d4a27d23 authored by suhuiguang's avatar suhuiguang

feat(检验检测):报检单据数据过滤

1.增加业务负责人过滤逻辑,仅是业务负责人时,只显示负责人名下的数据
parent a4bf6f99
...@@ -40,7 +40,7 @@ public interface JyjcInspectionApplicationMapper extends BaseMapper<JyjcInspecti ...@@ -40,7 +40,7 @@ public interface JyjcInspectionApplicationMapper extends BaseMapper<JyjcInspecti
@Param("currentInspectionUnitCode") String currentInspectionUnitCode, @Param("currentInspectionUnitCode") String currentInspectionUnitCode,
@Param("currentUserId") String currentUserId, @Param("currentUserId") String currentUserId,
@Param("sort") SortVo sortMap, @Param("sort") SortVo sortMap,
@Param("orgCode") String orgCode); @Param("orgCode") String orgCode, @Param("chargePersonType") String chargePersonType);
Page<JyjcInspectionApplicationModel> selectForPage2(@Param("page") Page<JyjcInspectionApplication> page, Page<JyjcInspectionApplicationModel> selectForPage2(@Param("page") Page<JyjcInspectionApplication> page,
@Param("jyjcInspectionApplicationModel") JyjcInspectionApplicationModel jyjcInspectionApplicationModel, @Param("jyjcInspectionApplicationModel") JyjcInspectionApplicationModel jyjcInspectionApplicationModel,
......
...@@ -125,14 +125,37 @@ ...@@ -125,14 +125,37 @@
and tzjia.application_unit_code = #{jyjcInspectionApplicationModel.applicationUnitCode} and tzjia.application_unit_code = #{jyjcInspectionApplicationModel.applicationUnitCode}
</if> </if>
<if test="identity == 'apply'"> <if test="identity == 'apply'">
and (tzjia.application_unit_code = #{currentApplicationUnitCode} or tzjia.inspection_unit_code = <choose>
#{currentApplicationUnitCode} OR tzjia.transfer_to_user_ids LIKE concat ( '%', #{currentUserId}, '%' ) <when test="chargePersonType != null and chargePersonType == 'jy'">
or tzjia.inspection_charge_person = #{currentUserId}) and( tzjia.inspection_charge_person = #{currentUserId} and tzjia.biz_type in ('supervise', 'firstinspect', 'entrust'))
</when>
<when test="chargePersonType != null and chargePersonType == 'jc'">
and( tzjia.inspection_charge_person = #{currentUserId} and tzjia.biz_type = 'detection')
</when>
<otherwise>
and (
tzjia.application_unit_code = #{currentApplicationUnitCode} or tzjia.inspection_unit_code =
#{currentApplicationUnitCode} OR tzjia.transfer_to_user_ids LIKE concat ( '%', #{currentUserId}, '%' )
)
</otherwise>
</choose>
</if> </if>
<if test="identity == 'receive'"> <if test="identity == 'receive'">
and (tzjia.inspection_unit_code = #{currentInspectionUnitCode} OR tzjia.transfer_to_user_ids LIKE concat <choose>
( '%', #{currentUserId}, '%' ) or tzjia.inspection_charge_person = #{currentUserId}) <when test="chargePersonType != null and chargePersonType == 'jy'">
and tzjia.instance_id <![CDATA[<>]]> '' and( tzjia.inspection_charge_person = #{currentUserId} and tzjia.biz_type in ('supervise', 'firstinspect', 'entrust'))
</when>
<when test="chargePersonType != null and chargePersonType == 'jc'">
and( tzjia.inspection_charge_person = #{currentUserId} and tzjia.biz_type = 'detection')
</when>
<otherwise>
and (
tzjia.inspection_unit_code = #{currentInspectionUnitCode}
OR tzjia.transfer_to_user_ids LIKE concat( '%', #{currentUserId}, '%' )
)
and tzjia.instance_id <![CDATA[<>]]> ''
</otherwise>
</choose>
</if> </if>
<if test="orgCode != null and orgCode != ''"> <if test="orgCode != null and orgCode != ''">
AND tzjia.instance_id <![CDATA[<>]]> '' AND tzjia.instance_id <![CDATA[<>]]> ''
......
...@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
...@@ -25,6 +26,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.ContraptionQueryParams; ...@@ -25,6 +26,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.ContraptionQueryParams;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.api.enums.JYJCBusinessTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.JYJCBusinessTypeEnum;
import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.common.api.service.ICompensateFlowDataOfRedis; import com.yeejoin.amos.boot.module.common.api.service.ICompensateFlowDataOfRedis;
import com.yeejoin.amos.boot.module.jg.api.entity.JgResumeInfo; import com.yeejoin.amos.boot.module.jg.api.entity.JgResumeInfo;
import com.yeejoin.amos.boot.module.jg.api.entity.JgResumeInfoEq; import com.yeejoin.amos.boot.module.jg.api.entity.JgResumeInfoEq;
...@@ -64,6 +66,7 @@ import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMap ...@@ -64,6 +66,7 @@ import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgProjectContraptionMap
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.model.DictionarieModel; import com.yeejoin.amos.feign.systemctl.model.DictionarieModel;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model; import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
...@@ -230,6 +233,31 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -230,6 +233,31 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Value("${xa.dt.inspect.disabled:true}") @Value("${xa.dt.inspect.disabled:true}")
private Boolean xaDtInspectDisabled; private Boolean xaDtInspectDisabled;
/**
* 检测机构-用户组
*/
@Value("${jcjg.permission.group.id:1945047210483806209}")
private String jcjgGroupId;
/**
* 检验机构-用户组
*/
@Value("${jyjg.permission.group.id:1945047035287728129}")
private String jyjgGroupId;
/**
* 检验机构业务办理人员-用户组
*/
@Value("${jyywy.permission.group.id:1947231335688990722}")
private String jyywyGroupId;
/**
* 检测机构业务办理人员-用户组
*/
@Value("${jcywy.permission.group.id:1947231362847109122}")
private String jcywyGroupId;
@NotNull @NotNull
public static List<DictionarieModel> getDictionarieModels(String bizTypes) { public static List<DictionarieModel> getDictionarieModels(String bizTypes) {
...@@ -585,7 +613,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -585,7 +613,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
} }
Map<String, String> statusCodeNameMap = getStatusMap(); Map<String, String> statusCodeNameMap = getStatusMap();
String orgCode = "jgLook".equals(client) ? reginParams.getCompany().getOrgCode() : null; String orgCode = "jgLook".equals(client) ? reginParams.getCompany().getOrgCode() : null;
Page<JyjcInspectionApplicationModel> result = this.getBaseMapper().selectForPage(page, model, identity, currentApplicationUnitCode, currentInspectionUnitCode, currentUserId, sortMap, orgCode); // 业务负责人逻辑,控制仅是业务负责人时,只显示负责人是当前登录人的单据
String chargePersonType = getChargePersonType(reginParams, companyType);
Page<JyjcInspectionApplicationModel> result = this.getBaseMapper().selectForPage(page, model, identity, currentApplicationUnitCode, currentInspectionUnitCode, currentUserId, sortMap, orgCode, chargePersonType);
result.getRecords().forEach(r -> { result.getRecords().forEach(r -> {
r.setLoginPersonCompanyCode(companyCode); r.setLoginPersonCompanyCode(companyCode);
r.setStatusName(this.buildStatusNameByActualStatus(statusCodeNameMap, r.getActualStatus())); r.setStatusName(this.buildStatusNameByActualStatus(statusCodeNameMap, r.getActualStatus()));
...@@ -2101,4 +2131,44 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -2101,4 +2131,44 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
public void compensate(JyjcInspectionApplicationModel application) { public void compensate(JyjcInspectionApplicationModel application) {
commonService.saveExecuteFlowData2Redis(application.getProcessInstanceId(), this.buildInstanceRuntimeData(application)); commonService.saveExecuteFlowData2Redis(application.getProcessInstanceId(), this.buildInstanceRuntimeData(application));
} }
/**
* 查询判断当前人是否是单独的业务负责人
*
* @return jc-检测业务负责人;jy-检验业务负责人
*/
private String getChargePersonType(ReginParams loginInfo, String companyType) {
// 角色id维护到字典extend字段,多个用逗号分隔(不再写死的代码,便于调整)
List<DataDictionary> dataDictionaries = dataDictionaryService.getByType(BizCommonConstant.YWFZR_DICT_TYPE);
Map<String, Set<String>> bizTypeRoleMap = dataDictionaries.stream().collect(Collectors.toMap(DataDictionary::getCode,
d -> Arrays.stream(d.getExtend().split(",")).collect(Collectors.toSet())));
// 按照登录单位的类型,将不同单位类型转换成对应的负责人类型
String roleKey = "";
if (UnitTypeEnum.SYDW.getName().equals(companyType) || UnitTypeEnum.AGWDW.getName().equals(companyType)) {
roleKey = BizCommonConstant.BIZ_TYPE_JC;
} else if(UnitTypeEnum.JYJG.getName().equals(companyType)) {
roleKey = BizCommonConstant.BIZ_TYPE_JY;
} else if(UnitTypeEnum.JCJG.getName().equals(companyType)) {
roleKey = BizCommonConstant.BIZ_TYPE_JC;
}
Set<String> loginUserAllRoleIds = loginInfo.getUserModel().getOrgRoles().values().stream().flatMap(Collection::stream).map(RoleModel::getSequenceNbr).map(Objects::toString).collect(Collectors.toSet());
Set<String> roleIds = bizTypeRoleMap.get(roleKey);
// 按照单位类型查询需要的角色
Set<String> unitRoles = getUnitRoles(companyType);
// 包含对应的业务负责人且不包含检验机构角色、检验业务办理人员、检测机构角色、检测业务办理人员,则为对应的负责人
if(loginUserAllRoleIds.containsAll(roleIds) && unitRoles != null && loginUserAllRoleIds.stream().noneMatch(unitRoles::contains)) {
return roleKey;
}
return null;
}
private Set<String> getUnitRoles(String companyType){
if(UnitTypeEnum.JYJG.getName().equals(companyType)){
return Sets.newHashSet(jyjgGroupId, jyywyGroupId);
} else if(UnitTypeEnum.JCJG.getName().equals(companyType)){
return Sets.newHashSet(jcjgGroupId, jcywyGroupId);
}
return null;
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment