进度审批修改监理

This commit is contained in:
guoshengxiong 2024-07-02 11:18:28 +08:00
parent ab2b00e645
commit ef02864567
5 changed files with 113 additions and 72 deletions

View File

@ -1,16 +1,15 @@
package com.zhgd.xmgl.modules.quality.mapper; package com.zhgd.xmgl.modules.quality.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhgd.annotation.DataScope;
import com.zhgd.xmgl.modules.quality.entity.QualityRegion;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.zhgd.annotation.DataScope;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import org.apache.ibatis.annotations.Mapper;
import com.zhgd.xmgl.modules.quality.entity.QualityRegion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/** /**
* @Description: 质量检查部位 * @Description: 质量检查部位
* @author pds * @author pds
@ -25,11 +24,30 @@ public interface QualityRegionMapper extends BaseMapper<QualityRegion> {
List<QualityRegion> selectChildQualityRegionList(Map<String, Object> map); List<QualityRegion> selectChildQualityRegionList(Map<String, Object> map);
/**
* @param param
* @return
*/
QualityRegion getPeerNewQualityRegion(Map<String, Object> param); QualityRegion getPeerNewQualityRegion(Map<String, Object> param);
/**
* @param id
*/
void updateDutyNull(String id); void updateDutyNull(String id);
/**
* @param oldAncestor
* @param newAncestor
* @param projectSn
* @param id
*/
void updateAncestors(@Param("oldAncestor") String oldAncestor, @Param("newAncestor") String newAncestor, @Param("projectSn") String projectSn, @Param("id") Long id); void updateAncestors(@Param("oldAncestor") String oldAncestor, @Param("newAncestor") String newAncestor, @Param("projectSn") String projectSn, @Param("id") Long id);
/**
* 通过项目sn和区域名称查询区域列表
* @param projectSn
* @param regionSet
* @return
*/
List<QualityRegion> selectBySnAndNumberOneList(@Param("sn") String projectSn, @Param("regionSet") Set<String> regionSet); List<QualityRegion> selectBySnAndNumberOneList(@Param("sn") String projectSn, @Param("regionSet") Set<String> regionSet);
} }

View File

@ -1,6 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.quality.mapper.QualityRegionMapper"> <mapper namespace="com.zhgd.xmgl.modules.quality.mapper.QualityRegionMapper">
<resultMap id="selectBySnAndNumberOneListRm" type="com.zhgd.xmgl.modules.quality.entity.QualityRegion"
autoMapping="true">
<id column="id" property="id"/>
<collection property="enterpriseInfos" ofType="com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo"
notNullColumn="enterprise_info_id">
<id property="id" column="enterprise_info_id"/>
<id property="enterpriseName" column="enterpriseName"/>
<id property="enterpriseSn" column="enterprise_sn"/>
</collection>
</resultMap>
<resultMap id="selectQualityRegionListRm" type="com.zhgd.xmgl.modules.quality.entity.QualityRegion" <resultMap id="selectQualityRegionListRm" type="com.zhgd.xmgl.modules.quality.entity.QualityRegion"
autoMapping="true"> autoMapping="true">
<id column="id" property="id"/> <id column="id" property="id"/>
@ -77,17 +88,18 @@
WHERE ancestors LIKE N'${oldAncestor},${id}%' and project_sn = #{projectSn} WHERE ancestors LIKE N'${oldAncestor},${id}%' and project_sn = #{projectSn}
</update> </update>
<select id="selectBySnAndNumberOneList" resultType="com.zhgd.xmgl.modules.quality.entity.QualityRegion"> <select id="selectBySnAndNumberOneList" resultMap="selectBySnAndNumberOneListRm">
select id, region_name SELECT qr.*,ei.id as enterprise_info_id,ei.enterprise_name as
from quality_region enterpriseName,ei.enterprise_sn
where project_sn = #{sn} from quality_region qr
JOIN quality_region_to_enterprise te ON te.quality_region_id=qr.id
JOIN enterprise_info ei on ei.id=te.enterprise_id
WHERE qr.project_sn = #{sn}
<if test="regionSet != null and regionSet.size() != 0"> <if test="regionSet != null and regionSet.size() != 0">
and region_name in and region_name in
<foreach collection="regionSet" index="index" item="item" open="(" separator="," close=")"> <foreach collection="regionSet" index="index" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
</if> </if>
group by `region_name`
HAVING COUNT(region_name) = 1
</select> </select>
</mapper> </mapper>

View File

@ -12,7 +12,7 @@
join worker_info wi on wi.enterprise_id= qrte.enterprise_id join worker_info wi on wi.enterprise_id= qrte.enterprise_id
join system_user su on su.worker_id = wi.id join system_user su on su.worker_id = wi.id
join base_role_user bru on bru.user_id = su.user_id join base_role_user bru on bru.user_id = su.user_id
join base_role br on br.role_name = '监理' join base_role br on br.role_name = '监理' and su.user_id = #{param.userId}
</if> </if>
${ew.customSqlSegment} ${ew.customSqlSegment}
</select> </select>

View File

@ -77,10 +77,6 @@ public class XzTaskProgressContentServiceImpl extends ServiceImpl<XzTaskProgress
public IPage<XzTaskProgressContent> queryPageList(HashMap<String, Object> paramMap) { public IPage<XzTaskProgressContent> queryPageList(HashMap<String, Object> paramMap) {
QueryWrapper<XzTaskProgressContent> queryWrapper = getQueryWrapper(paramMap); QueryWrapper<XzTaskProgressContent> queryWrapper = getQueryWrapper(paramMap);
Page<XzTaskProgressContent> page = PageUtil.getPage(paramMap); Page<XzTaskProgressContent> page = PageUtil.getPage(paramMap);
if (SecurityUtils.getUser() != null) {
Integer accountType = SecurityUtils.getUser().getAccountType();
paramMap.put("accountType", accountType);
}
IPage<XzTaskProgressContent> pageList = baseMapper.queryList(page, queryWrapper, paramMap); IPage<XzTaskProgressContent> pageList = baseMapper.queryList(page, queryWrapper, paramMap);
pageList.setRecords(dealList(pageList.getRecords())); pageList.setRecords(dealList(pageList.getRecords()));
return pageList; return pageList;
@ -138,6 +134,12 @@ public class XzTaskProgressContentServiceImpl extends ServiceImpl<XzTaskProgress
String date = MapUtils.getString(paramMap, "date"); String date = MapUtils.getString(paramMap, "date");
Integer isAudit = MapUtils.getInteger(paramMap, "isAudit"); Integer isAudit = MapUtils.getInteger(paramMap, "isAudit");
String alias = "c."; String alias = "c.";
//这条进度审批数据会发送给区域1下面绑定责任单位的监理角色的人
if (SecurityUtils.getUser() != null) {
Integer accountType = SecurityUtils.getUser().getAccountType();
paramMap.put("accountType", accountType);
paramMap.put("userId", SecurityUtils.getUser().getUserId());
}
QueryWrapper<XzTaskProgressContent> queryWrapper = QueryGenerator.initPageQueryWrapper(XzTaskProgressContent.class, paramMap, alias); QueryWrapper<XzTaskProgressContent> queryWrapper = QueryGenerator.initPageQueryWrapper(XzTaskProgressContent.class, paramMap, alias);
if (StrUtil.isNotBlank(taskName)) { if (StrUtil.isNotBlank(taskName)) {
queryWrapper.like("xtp.task_name", taskName); queryWrapper.like("xtp.task_name", taskName);
@ -160,7 +162,7 @@ public class XzTaskProgressContentServiceImpl extends ServiceImpl<XzTaskProgress
@Override @Override
public List<XzTaskProgressContent> queryList(HashMap<String, Object> paramMap) { public List<XzTaskProgressContent> queryList(HashMap<String, Object> paramMap) {
QueryWrapper<XzTaskProgressContent> queryWrapper = getQueryWrapper(paramMap); QueryWrapper<XzTaskProgressContent> queryWrapper = getQueryWrapper(paramMap);
return dealList(baseMapper.queryList(queryWrapper, null)); return dealList(baseMapper.queryList(queryWrapper, new HashMap<>(16)));
} }
private List<XzTaskProgressContent> dealList(List<XzTaskProgressContent> list) { private List<XzTaskProgressContent> dealList(List<XzTaskProgressContent> list) {

View File

@ -261,14 +261,16 @@ public class XzTaskProgressServiceImpl extends ServiceImpl<XzTaskProgressMapper,
Collection<XzTaskProgress> progressTaskList = analysisMpp(mppFile, projectSn, createUserId); Collection<XzTaskProgress> progressTaskList = analysisMpp(mppFile, projectSn, createUserId);
log.info("importData的新增数据{}", progressTaskList); log.info("importData的新增数据{}", progressTaskList);
if (Objects.equals(type, 1)) { int deleteAndReplace = 1;
int replace = 2;
if (Objects.equals(type, deleteAndReplace)) {
taskProgressMapper.delete(queryWrapper); taskProgressMapper.delete(queryWrapper);
taskProgressContentMapper.delete(Wrappers.lambdaQuery(XzTaskProgressContent.class).eq(XzTaskProgressContent::getProjectSn, projectSn)); taskProgressContentMapper.delete(Wrappers.lambdaQuery(XzTaskProgressContent.class).eq(XzTaskProgressContent::getProjectSn, projectSn));
taskProgressAlarmMapper.delete(Wrappers.lambdaQuery(XzTaskProgressAlarm.class).eq(XzTaskProgressAlarm::getProjectSn, projectSn)); taskProgressAlarmMapper.delete(Wrappers.lambdaQuery(XzTaskProgressAlarm.class).eq(XzTaskProgressAlarm::getProjectSn, projectSn));
if (CollUtil.isNotEmpty(progressTaskList)) { if (CollUtil.isNotEmpty(progressTaskList)) {
this.saveBatch(progressTaskList); this.saveBatch(progressTaskList);
} }
} else if (Objects.equals(type, 2)) { } else if (Objects.equals(type, replace)) {
taskProgressAlarmMapper.delete(Wrappers.lambdaQuery(XzTaskProgressAlarm.class).eq(XzTaskProgressAlarm::getProjectSn, projectSn)); taskProgressAlarmMapper.delete(Wrappers.lambdaQuery(XzTaskProgressAlarm.class).eq(XzTaskProgressAlarm::getProjectSn, projectSn));
//新增 //新增
Set<String> oldSet = progressTasks.stream().map(taskProgress -> taskProgress.getTaskName()).collect(Collectors.toSet()); Set<String> oldSet = progressTasks.stream().map(taskProgress -> taskProgress.getTaskName()).collect(Collectors.toSet());
@ -298,7 +300,6 @@ public class XzTaskProgressServiceImpl extends ServiceImpl<XzTaskProgressMapper,
*/ */
private Collection<XzTaskProgress> analysisMpp(MultipartFile mppFile, String projectSn, Long createUserId) { private Collection<XzTaskProgress> analysisMpp(MultipartFile mppFile, String projectSn, Long createUserId) {
List<XzTaskProgress> projectTaskList = new LinkedList<>(); List<XzTaskProgress> projectTaskList = new LinkedList<>();
List<XzTaskProgress> rtList = new LinkedList<>();
Set<String> userNameSet = new LinkedHashSet<>(); Set<String> userNameSet = new LinkedHashSet<>();
Set<String> regionSet = new LinkedHashSet<>(); Set<String> regionSet = new LinkedHashSet<>();
Set<String> enterpriseSet = new LinkedHashSet<>(); Set<String> enterpriseSet = new LinkedHashSet<>();
@ -309,12 +310,47 @@ public class XzTaskProgressServiceImpl extends ServiceImpl<XzTaskProgressMapper,
ProjectFile pf = mppRead.read(new File(basePath + fileName)); ProjectFile pf = mppRead.read(new File(basePath + fileName));
// 递归拿到对应的数据, 跳过第0级无用数据 // 递归拿到对应的数据, 跳过第0级无用数据
List<Task> childTasks = pf.getChildTasks(); List<Task> childTasks = pf.getChildTasks();
if (CollUtil.isNotEmpty(childTasks)) { if (CollUtil.isEmpty(childTasks)) {
throw new RuntimeException("mpp文件数据为空");
}
structureTaskDataList(projectTaskList, userNameSet, childTasks.get(0).getChildTasks(), 0L, projectSn, createUserId, null, regionSet, enterpriseSet); structureTaskDataList(projectTaskList, userNameSet, childTasks.get(0).getChildTasks(), 0L, projectSn, createUserId, null, regionSet, enterpriseSet);
if (CollUtil.isEmpty(enterpriseSet)) {
throw new OpenPromptException("未导入数据,未找到对应的承包商");
}
if (CollUtil.isEmpty(regionSet)) {
throw new OpenPromptException("未导入数据,未找到对应的区域");
}
//验证和导入区域
List<QualityRegion> regions = qualityRegionMapper.selectBySnAndNumberOneList(projectSn, regionSet);
if (CollUtil.isEmpty(regions)) {
throw new OpenPromptException("未导入数据,未找到对应的绑定承包商的区域");
}
Map<String, QualityRegion> regionMap = regions.stream().collect(Collectors.toMap(QualityRegion::getRegionName, Function.identity(), (qualityRegion, qualityRegion2) -> qualityRegion));
for (XzTaskProgress progress : projectTaskList) {
QualityRegion region = regionMap.get(progress.getQualityRegionName());
if (region == null || region.getEnterpriseInfos() == null || !region.getEnterpriseInfos().stream().map(EnterpriseInfo::getEnterpriseName).collect(Collectors.toSet()).contains(progress.getEnterpriseName())) {
throw new OpenAlertException(progress.getQualityRegionName() + "" + progress.getEnterpriseName() + "不对应");
}
progress.setQualityRegionId(regionMap.get(progress.getQualityRegionName()).getId());
}
//验证和导入承包商
List<EnterpriseInfo> enterpriseInfos = enterpriseInfoMapper.selectBySnAndNumberOneList(projectSn, enterpriseSet);
if (CollUtil.isEmpty(enterpriseInfos)) {
throw new OpenPromptException("未导入数据,未找到对应的承包商");
}
Map<String, Long> enterpriseMap = enterpriseInfos.stream().collect(Collectors.toMap(EnterpriseInfo::getEnterpriseName, EnterpriseInfo::getId));
for (XzTaskProgress progressTask : projectTaskList) {
Long l = enterpriseMap.get(progressTask.getEnterpriseName());
if (l != null) {
progressTask.setEnterpriseId(l);
}
}
// 判断是否具有负责人 // 判断是否具有负责人
if (CollUtil.isNotEmpty(userNameSet)) { if (CollUtil.isNotEmpty(userNameSet)) {
List<SystemUser> dutyUserList = systemUserMapper.selectBySnAndNumberOneList(projectSn, userNameSet); List<SystemUser> dutyUserList = systemUserMapper.selectBySnAndNumberOneList(projectSn, userNameSet);
// 用户不为空时进行负责人id赋值 // 用户不为空时进行负责人id赋值
if (CollUtil.isNotEmpty(dutyUserList)) { if (CollUtil.isNotEmpty(dutyUserList)) {
Map<String, Long> userMap = dutyUserList.stream().collect(Collectors.toMap(SystemUser::getRealName, SystemUser::getUserId)); Map<String, Long> userMap = dutyUserList.stream().collect(Collectors.toMap(SystemUser::getRealName, SystemUser::getUserId));
@ -324,46 +360,13 @@ public class XzTaskProgressServiceImpl extends ServiceImpl<XzTaskProgressMapper,
} }
} }
if (CollUtil.isNotEmpty(regionSet)) { Map<Long, XzTaskProgress> progressTaskMap = projectTaskList.stream().collect(Collectors.toMap(XzTaskProgress::getId, Function.identity()));
List<QualityRegion> dutyUserList = qualityRegionMapper.selectBySnAndNumberOneList(projectSn, regionSet);
if (CollUtil.isNotEmpty(dutyUserList)) {
Map<String, Long> userMap = dutyUserList.stream().collect(Collectors.toMap(QualityRegion::getRegionName, QualityRegion::getId));
for (XzTaskProgress progressTask : projectTaskList) {
progressTask.setQualityRegionId(userMap.get(progressTask.getQualityRegionName()));
}
}
}
if (CollUtil.isEmpty(enterpriseSet)) {
throw new OpenPromptException("未导入数据,未找到对应的承包商");
}
List<EnterpriseInfo> dutyUserList = enterpriseInfoMapper.selectBySnAndNumberOneList(projectSn, enterpriseSet);
if (CollUtil.isEmpty(dutyUserList)) {
throw new OpenPromptException("未导入数据,未找到对应的承包商");
}
Map<String, Long> userMap = dutyUserList.stream().collect(Collectors.toMap(EnterpriseInfo::getEnterpriseName, EnterpriseInfo::getId));
for (XzTaskProgress progressTask : projectTaskList) {
Long l = userMap.get(progressTask.getEnterpriseName());
if (l != null) {
progressTask.setEnterpriseId(l);
rtList.add(progressTask);
}
}
if (CollUtil.isEmpty(rtList)) {
throw new OpenPromptException("未导入数据,未找到对应的承包商");
}
Map<Long, XzTaskProgress> progressTaskMap = rtList.stream().collect(Collectors.toMap(XzTaskProgress::getId, Function.identity()));
return progressTaskMap.values(); return progressTaskMap.values();
}
throw new RuntimeException("mpp文件数据为空");
} catch (MPXJException e) { } catch (MPXJException e) {
throw new OpenAlertException("上传甘特图失败,请上传.mpp文件"); throw new OpenAlertException("上传甘特图失败,请上传.mpp文件");
} catch (Exception e) { } catch (Exception e) {
log.error("解析文件错误!", e); log.error("解析文件错误!", e);
throw new RuntimeException("操作失败:" + e.getMessage()); throw new OpenAlertException("操作失败:" + e.getMessage());
} }
} }
@ -425,9 +428,15 @@ public class XzTaskProgressServiceImpl extends ServiceImpl<XzTaskProgressMapper,
progressTask.setDutyUserName(dutyUserName); progressTask.setDutyUserName(dutyUserName);
userNameSet.add(dutyUserName); userNameSet.add(dutyUserName);
String regionName = task.getText(5); String regionName = task.getText(5);
if (StrUtil.isBlank(regionName)) {
throw new OpenAlertException("区域不能为空");
}
progressTask.setQualityRegionName(regionName); progressTask.setQualityRegionName(regionName);
regionSet.add(regionName); regionSet.add(regionName);
String enterpriseName = task.getText(6); String enterpriseName = task.getText(6);
if (StrUtil.isBlank(enterpriseName)) {
throw new OpenAlertException("承包商不能为空");
}
progressTask.setEnterpriseName(enterpriseName); progressTask.setEnterpriseName(enterpriseName);
enterpriseSet.add(enterpriseName); enterpriseSet.add(enterpriseName);