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.ExcelUtils; 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 javax.servlet.http.HttpServletResponse; 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()); } regionInspectionRecordMapper.deleteIMG(regionInspectionEntity.getId()); 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"); String startHour = " 00:00:00"; String endHour = " 23:59:59"; String startTime = map.get("startTime").toString(); String endTime = map.get("endTime").toString(); if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){ startTime = startTime+startHour; endTime = endTime +endHour; map.put("startTime",startTime); map.put("endTime",endTime); } if (StringUtils.isNotBlank(map.get("status").toString())){ int intStatus = Integer.valueOf(map.get("status").toString()); map.put("intStatus",intStatus); } map.put("companyId",companyId); map.put("page",(pageNum-1)*10); map.put("limit",pageSize); List recordEntities = regionInspectionRecordMapper.selectPageList(map); Integer integer = regionInspectionRecordMapper.selectCount(map); map.put("list",recordEntities); map.put("total",integer); return BasicResult.success(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) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); userId = sysUserInfo.getUserId(); String platUserId = regionInspectionRecordMapper.selectPlatUserId(userId); RegionInspectionEntity obj = regionInspectionRecordMapper.selectInfo(regionInspectionId, platUserId); List regionList = new ArrayList<>(); if (obj!=null && 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, platUserId, regionIds[i]); List imgEntityList=null; if (recordEntity!=null){ imgEntityList = regionInspectionRecordMapper.selectImgByRecordId(recordEntity.getId()); recordEntity.setImgList(imgEntityList); } RegionInspectionHazardInformEntity regionEntity = RegionInspectionHazardInformEntity .builder() .regionInspectionId(obj.getId()) .regionHazardInformId(regionIds[i]) .region(regions[i]) .recordEntity(recordEntity) .imgList(imgEntityList) .result(recordEntity.getResult()) .status(recordEntity.getStatus()) .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(); String platUserId = regionInspectionRecordMapper.selectPlatUserId(userId); map.put("userId",platUserId); 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))); } @Override public void export(Map map, HttpServletResponse response) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); String startHour = " 00:00:00"; String endHour = " 23:59:59"; String startTime = map.get("startTime").toString(); String endTime = map.get("endTime").toString(); if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){ startTime = startTime+startHour; endTime = endTime +endHour; map.put("startTime",startTime); map.put("endTime",endTime); } if (StringUtils.isNotBlank(map.get("status").toString())){ int intStatus = Integer.valueOf(map.get("status").toString()); map.put("intStatus",intStatus); } map.put("companyId",companyId); List recordEntities = regionInspectionRecordMapper.selectPageList(map); ExcelUtils.downExcel(recordEntities,RegionInspectionRecordEntity.class,response,"打卡导出"); } }