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());
|
}
|
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<RegionInspectionRecordEntity> 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<RegionInspectionRecordEntity> 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<RegionInspectionHazardInformEntity> 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<RegionInspectionHazardInformEntity> 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<RegionInspectionRecordImgEntity> 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())
|
.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<RegionInspectionRecordEntity> recordEntities = regionInspectionRecordMapper.selectPageList(map);
|
ExcelUtils.downExcel(recordEntities,RegionInspectionRecordEntity.class,response,"打卡导出");
|
}
|
}
|