package com.thhy.secure.modules.biz.regionInspection.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.thhy.general.common.BasicResult; import com.thhy.general.config.SysUserInfo; import com.thhy.general.utils.UUIDUtils; import com.thhy.general.utils.UserInfoUtils; import com.thhy.secure.modules.biz.regionInspection.entity.*; import com.thhy.secure.modules.biz.regionInspection.mapper.RegionInspectionMapper; import com.thhy.secure.modules.biz.regionInspection.mapper.RegionInspectionRecordMapper; import com.thhy.secure.modules.biz.regionInspection.service.RegionInspectionRecordService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; /** * @Author QiuYuHao * @CreateDate 2023-11-17 15:51:37 * 区域巡检打卡记录表实现 */ @Service public class RegionInspectionRecordServiceImpl implements RegionInspectionRecordService { @Autowired private RegionInspectionRecordMapper regionInspectionRecordMapper; @Autowired private RegionInspectionMapper regionInspectionMapper; /** * 小程序提交打卡 * @param regionInspectionEntity * @return */ @Override @Transactional(rollbackFor = Exception.class) public BasicResult insertAndUpdate(RegionInspectionRecordEntity regionInspectionEntity) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String userId = sysUserInfo.getUserId(); //修改逻辑 if (StringUtils.isNotBlank(regionInspectionEntity.getId())){ regionInspectionEntity.setUpdateUser(userId); regionInspectionEntity.setInspectionTime(new Date()); regionInspectionEntity.setUpdateTime(new Date()); } synchronized (this){ //修改打卡记录 regionInspectionEntity.setCreateUser(userId); regionInspectionRecordMapper.insert(regionInspectionEntity); //添加记录相对应的图片 if (!regionInspectionEntity.getImgList().isEmpty()){ regionInspectionEntity.getImgList().forEach(obj->{ RegionInspectionRecordImgEntity recordImgEntity = RegionInspectionRecordImgEntity .builder() .id(UUIDUtils.create()) .regionInspectionRecordId(regionInspectionEntity.getId()) .imgName(obj.getImgName()) .imgPath(obj.getImgPath()) .build(); regionInspectionRecordMapper.insertIMG(recordImgEntity); }); } //判断每个人提交打卡的时候 判断一次这个任务是否完全被所有人打过卡了 Map map = new HashMap(); map.put("companyId",sysUserInfo.getCompanyId()); map.put("regionInspectionId",regionInspectionEntity.getRegionInspectionId()); //此任务每个人对任务打卡是否完成 不精确到此人去哪个区域打卡 只精确到这个人是否完成任务 任务分多个区域 List recordEntities = regionInspectionRecordMapper.selectPageList(map); int peopleDKCount = recordEntities.size();//若干人对应的若干任务 AtomicInteger atomicInteger = new AtomicInteger();//记录完成打卡次数 if (!recordEntities.isEmpty()){ recordEntities.forEach(obj->{ String statusName = obj.getStatusName(); if("完成".equals(statusName)){ atomicInteger.incrementAndGet(); } }); } //如果若干人对应若干任务数量和 完成打卡次数相等 那么此任务 已经完结 修改任务状态 if (peopleDKCount == atomicInteger.get()){ RegionInspectionEntity r = RegionInspectionEntity .builder() .id(regionInspectionEntity.getRegionInspectionId()) .status(1) .build(); //修改任务状态 regionInspectionMapper.insert(r); } } return BasicResult.success(); } @Override public BasicResult delete(String id) { regionInspectionRecordMapper.delete(id); return BasicResult.success(); } @Override public BasicResult selectPageList(Map map) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); int pageNum = (int) map.get("pageNum"); int pageSize = (int) map.get("pageSize"); PageHelper.startPage(pageNum,pageSize); map.put("companyId",companyId); return BasicResult.success(new PageInfo<>( regionInspectionRecordMapper.selectPageList(map) )); } @Override public BasicResult selectInfo(String regionInspectionId, String userId) { RegionInspectionEntity obj = regionInspectionRecordMapper.selectInfo(regionInspectionId, userId); List regionList = new ArrayList<>(); if (obj.getRegionIds()!=null){ String[] regionIds = obj.getRegionIds().intern().split(","); String[] regions = obj.getRegions().intern().split(","); //区域对象数组 for (int i = 0; i < regionIds.length; i++) { RegionInspectionHazardInformEntity regionEntity = RegionInspectionHazardInformEntity .builder() .regionInspectionId(obj.getId()) .regionHazardInformId(regionIds[i]) .region(regions[i]).build(); regionList.add(regionEntity); } } obj.setRegionList(regionList); return BasicResult.success(obj); } @Override public BasicResult selectAppInfo(String regionInspectionId, String userId) { RegionInspectionEntity obj = regionInspectionRecordMapper.selectInfo(regionInspectionId, userId); List regionList = new ArrayList<>(); if (obj.getRegionIds()!=null){ String[] regionIds = obj.getRegionIds().intern().split(","); String[] regions = obj.getRegions().intern().split(","); //区域对象数组 for (int i = 0; i < regionIds.length; i++) { RegionInspectionRecordEntity recordEntity = regionInspectionRecordMapper.regionInfo( regionInspectionId, userId, regionIds[i]); RegionInspectionHazardInformEntity regionEntity = RegionInspectionHazardInformEntity .builder() .regionInspectionId(obj.getId()) .regionHazardInformId(regionIds[i]) .region(regions[i]) .recordEntity(recordEntity).build(); regionList.add(regionEntity); } } obj.setRegionList(regionList); return BasicResult.success(obj); } @Override public BasicResult regionInfo(String regionInspectionId, String userId, String regionHazardInformId) { return BasicResult.success( regionInspectionRecordMapper.regionInfo( regionInspectionId, userId, regionHazardInformId)); } @Override public BasicResult selectAppList(Map map) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); String userId = sysUserInfo.getUserId(); map.put("userId",userId); map.put("companyId",companyId); int pageNum = (int) map.get("pageNum"); int pageSize = (int) map.get("pageSize"); PageHelper.startPage(pageNum,pageSize); return BasicResult.success(new PageInfo<>(regionInspectionRecordMapper.selectAppList(map))); } }