Commit 061d3b27 authored by 高建强's avatar 高建强

item:巡查数据-站端与中心级数据同步

parent c7f385f5
package com.yeejoin.amos.patrol.common.enums; package com.yeejoin.amos.patrol.common.enums;
public enum PatrolDataSyncTopicEnum { public enum PatrolDataSyncTopicEnum {
EQM_PATROL_CREATED("check", "eqm.patrol.created"),
CHECK("check", "patrol/sync/check"), CHECK("check", "patrol/sync/check"),
CHECK_INPUT("checkInput", "patrol/sync/checkInput"), CHECK_INPUT("checkInput", "patrol/sync/checkInput"),
CHECK_SHOT("checkShot", "patrol/sync/checkShot"), CHECK_SHOT("checkShot", "patrol/sync/checkShot"),
PLAN_TASK_DETAIL("planTaskDetail", "patrol/sync/planTaskDetail"); PLAN_TASK("planTask", "patrol/sync/planTask"),
PLAN_TASK_DETAIL("planTaskDetail", "patrol/sync/planTaskDetail"),
CHECK_INPUT_BO("checkInputBo", "patrol/sync/checkShotBo");
private String type; private String type;
private String topic; private String topic;
......
package com.yeejoin.amos.patrol.business.bo;
import lombok.Data;
import java.util.Date;
/**
* 基本实体扩展类
*/
@Data
public class BasicEntityBo {
private long id;
private Date createDate;
}
package com.yeejoin.amos.patrol.business.bo;
import lombok.Data;
/**
* @ProjectName: YeeAMOSPatrolRoot
* @Package: com.yeejoin.amos.patrol.business.bo
* @ClassName: CheckInputBo
* @Author: Jianqiang Gao
* @Description: CheckInputBo
* @Date: 2022/6/1 9:30
* @Version: 1.0
*/
@Data
public class CheckInputSyncBo extends BasicEntityBo {
/**
* 巡检记录id
*/
private Long checkId;
/**
* 检查项id
*/
private Long inputId;
/**
* 巡检点检查项
*/
private Long routePointItemId;
/**
* 是否合格
*/
private String isOk;
/**
* 序号
*/
private int orderNo;
/**
* 权限系统org code
*/
private String orgCode;
/**
* 检查点分类id
*/
private Long pointClassifyId;
/**
* 检查点分类名称
*/
private String pointClassifyName;
/**
* 评分
*/
private int score;
/**
* 备注
*/
private String remark;
private String bizOrgName;
private String bizOrgCode;
private String pointName;
private String pointId;
private String inputName;
private String inputValue;
private String checkStatus;
private String planName;
private String planId;
private String routeName;
private String routeId;
private String userName;
private String userId;
private String depName;
private String depId;
private String eqName;
private String eqId;
private String eqCode;
private String systemName;
private String planTaskId;
private String planCompletionTime;
private String equipmentTypeCode;
private String companyCode;
private String inputCode;
private String pointCode;
private String buildName;
private String buildCode;
private String protectedObjectCode;
private String protectedObjectName;
private String checkTime;
}
\ No newline at end of file
package com.yeejoin.amos.patrol.business.dao.mapper; package com.yeejoin.amos.patrol.business.dao.mapper;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.business.dto.InputCheckDto; import com.yeejoin.amos.patrol.business.dto.InputCheckDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface CheckInputMapper extends BaseMapper { public interface CheckInputMapper extends BaseMapper {
InputCheckDto getByCheckIdAndItemId(@Param(value = "checkId") Long checkId, @Param(value = "itemId") Long itemId); InputCheckDto getByCheckIdAndItemId(@Param(value = "checkId") Long checkId, @Param(value = "itemId") Long itemId);
InputCheckDto getByCheckIdAndItemIdAndRoutePointItemId(@Param(value = "checkId") Long checkId, @Param(value = InputCheckDto getByCheckIdAndItemIdAndRoutePointItemId(@Param(value = "checkId") Long checkId, @Param(value =
"itemId") Long itemId, @Param(value = "routePointItemId") Long routePointItemId, @Param(value = "checkInputId") Long checkInputId); "itemId") Long itemId, @Param(value = "routePointItemId") Long routePointItemId, @Param(value = "checkInputId") Long checkInputId);
List<CheckInputSyncBo> getCheckInputSyncBoList(Map<String, Object> map);
} }
...@@ -3,9 +3,12 @@ package com.yeejoin.amos.patrol.business.service.action; ...@@ -3,9 +3,12 @@ package com.yeejoin.amos.patrol.business.service.action;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.business.dao.mapper.CheckInputMapper;
import com.yeejoin.amos.patrol.business.dao.repository.ICheckInputDao; import com.yeejoin.amos.patrol.business.dao.repository.ICheckInputDao;
import com.yeejoin.amos.patrol.business.dao.repository.IInputItemDao; import com.yeejoin.amos.patrol.business.dao.repository.IInputItemDao;
import com.yeejoin.amos.patrol.business.entity.mybatis.EquipmentInputItemRo; import com.yeejoin.amos.patrol.business.entity.mybatis.EquipmentInputItemRo;
import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService;
import com.yeejoin.amos.patrol.common.enums.CheckStatusEnum; import com.yeejoin.amos.patrol.common.enums.CheckStatusEnum;
import com.yeejoin.amos.patrol.common.enums.YesOrNoEnum; import com.yeejoin.amos.patrol.common.enums.YesOrNoEnum;
import com.yeejoin.amos.patrol.dao.entity.CheckInput; import com.yeejoin.amos.patrol.dao.entity.CheckInput;
...@@ -16,7 +19,12 @@ import org.slf4j.LoggerFactory; ...@@ -16,7 +19,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
/** /**
...@@ -38,6 +46,12 @@ public class AcceptEquipmentRules { ...@@ -38,6 +46,12 @@ public class AcceptEquipmentRules {
@Value("${input.statute.prefix}") @Value("${input.statute.prefix}")
private String statutePre; private String statutePre;
@Autowired
private IPatrolDataSyncService patrolDataSyncService;
@Autowired
private CheckInputMapper checkInputMapper;
public void getContent( public void getContent(
String itemNo, String itemNo,
...@@ -119,6 +133,17 @@ public class AcceptEquipmentRules { ...@@ -119,6 +133,17 @@ public class AcceptEquipmentRules {
checkInput.setIsOk(CheckStatusEnum.UNQUALIFIED.getCode()); checkInput.setIsOk(CheckStatusEnum.UNQUALIFIED.getCode());
} }
checkInputDao.save(checkInput); checkInputDao.save(checkInput);
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
Map<String, Object> map = new HashMap<>();
map.put("id", checkInput.getId());
List<CheckInputSyncBo> checkInputSyncBoList = checkInputMapper.getCheckInputSyncBoList(map);
patrolDataSyncService.checkInputBoDataSync(checkInputSyncBoList);
}
});
log.info(checkInput.getPointClassifyName()+"规则校验返回结果修改成功"); log.info(checkInput.getPointClassifyName()+"规则校验返回结果修改成功");
} }
} }
...@@ -19,6 +19,8 @@ import com.alibaba.fastjson.JSON; ...@@ -19,6 +19,8 @@ import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.MessageModel; import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.business.dao.mapper.*;
import com.yeejoin.amos.patrol.business.feign.JcsFeignClient; import com.yeejoin.amos.patrol.business.feign.JcsFeignClient;
import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService; import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService;
import com.yeejoin.amos.patrol.dao.entity.Plan; import com.yeejoin.amos.patrol.dao.entity.Plan;
...@@ -45,10 +47,6 @@ import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; ...@@ -45,10 +47,6 @@ import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel; import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.patrol.business.constants.XJConstant; import com.yeejoin.amos.patrol.business.constants.XJConstant;
import com.yeejoin.amos.patrol.business.dao.mapper.CheckMapper;
import com.yeejoin.amos.patrol.business.dao.mapper.PlanTaskDetailMapper;
import com.yeejoin.amos.patrol.business.dao.mapper.PlanTaskMapper;
import com.yeejoin.amos.patrol.business.dao.mapper.RouteMapper;
import com.yeejoin.amos.patrol.business.dao.repository.ICatalogTreeDao; import com.yeejoin.amos.patrol.business.dao.repository.ICatalogTreeDao;
import com.yeejoin.amos.patrol.business.dao.repository.ICheckDao; import com.yeejoin.amos.patrol.business.dao.repository.ICheckDao;
import com.yeejoin.amos.patrol.business.dao.repository.ICheckInputDao; import com.yeejoin.amos.patrol.business.dao.repository.ICheckInputDao;
...@@ -154,6 +152,9 @@ public class CheckServiceImpl implements ICheckService { ...@@ -154,6 +152,9 @@ public class CheckServiceImpl implements ICheckService {
@Autowired @Autowired
private IPatrolDataSyncService patrolDataSyncService; private IPatrolDataSyncService patrolDataSyncService;
@Autowired
private CheckInputMapper checkInputMapper;
// @Value("${file.ip}") // @Value("${file.ip}")
// private String fileIp; // private String fileIp;
// //
...@@ -446,6 +447,17 @@ public class CheckServiceImpl implements ICheckService { ...@@ -446,6 +447,17 @@ public class CheckServiceImpl implements ICheckService {
updateTaskStatus(plan.getId(), null); updateTaskStatus(plan.getId(), null);
} }
} }
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
Map<String, Object> map = new HashMap<>();
map.put("idList", checkInputList.stream().map(CheckInput::getId).collect(Collectors.toList()));
List<CheckInputSyncBo> checkInputSyncBoList = checkInputMapper.getCheckInputSyncBoList(map);
patrolDataSyncService.checkInputBoDataSync(checkInputSyncBoList);
}
});
return new CheckDto(check.getId(), unqualifiedcheckItemList); return new CheckDto(check.getId(), unqualifiedcheckItemList);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -692,7 +704,17 @@ public class CheckServiceImpl implements ICheckService { ...@@ -692,7 +704,17 @@ public class CheckServiceImpl implements ICheckService {
patrolDataSyncService.checkInputDataSync(checkInputList); patrolDataSyncService.checkInputDataSync(checkInputList);
} }
}); });
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
Map<String, Object> map = new HashMap<>();
map.put("idList", checkInputList.stream().map(CheckInput::getId).collect(Collectors.toList()));
List<CheckInputSyncBo> checkInputSyncBoList = checkInputMapper.getCheckInputSyncBoList(map);
patrolDataSyncService.checkInputBoDataSync(checkInputSyncBoList);
}
});
return checkDto; return checkDto;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -13,6 +13,7 @@ import com.yeejoin.amos.boot.biz.common.bo.RoleBo; ...@@ -13,6 +13,7 @@ import com.yeejoin.amos.boot.biz.common.bo.RoleBo;
import com.yeejoin.amos.boot.biz.common.service.impl.WorkflowExcuteServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.WorkflowExcuteServiceImpl;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel; import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.business.constants.XJConstant; import com.yeejoin.amos.patrol.business.constants.XJConstant;
import com.yeejoin.amos.patrol.business.dao.mapper.CheckInputMapper; import com.yeejoin.amos.patrol.business.dao.mapper.CheckInputMapper;
import com.yeejoin.amos.patrol.business.dao.mapper.LatentDangerFlowRecordMapper; import com.yeejoin.amos.patrol.business.dao.mapper.LatentDangerFlowRecordMapper;
...@@ -45,6 +46,7 @@ import com.yeejoin.amos.patrol.business.param.LatentDangerPatrolItemParam; ...@@ -45,6 +46,7 @@ import com.yeejoin.amos.patrol.business.param.LatentDangerPatrolItemParam;
import com.yeejoin.amos.patrol.business.param.LatentDangerPatrolParam; import com.yeejoin.amos.patrol.business.param.LatentDangerPatrolParam;
import com.yeejoin.amos.patrol.business.param.PageParam; import com.yeejoin.amos.patrol.business.param.PageParam;
import com.yeejoin.amos.patrol.business.service.intfc.ILatentDangerService; import com.yeejoin.amos.patrol.business.service.intfc.ILatentDangerService;
import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService;
import com.yeejoin.amos.patrol.business.service.intfc.IRiskJudgmentTaskService; import com.yeejoin.amos.patrol.business.service.intfc.IRiskJudgmentTaskService;
import com.yeejoin.amos.patrol.business.util.CommonResponse; import com.yeejoin.amos.patrol.business.util.CommonResponse;
import com.yeejoin.amos.patrol.business.util.CommonResponseUtil; import com.yeejoin.amos.patrol.business.util.CommonResponseUtil;
...@@ -73,10 +75,7 @@ import com.yeejoin.amos.patrol.core.async.AsyncTask; ...@@ -73,10 +75,7 @@ import com.yeejoin.amos.patrol.core.async.AsyncTask;
import com.yeejoin.amos.patrol.core.common.request.LatentDangerResultPushSpcRequest; import com.yeejoin.amos.patrol.core.common.request.LatentDangerResultPushSpcRequest;
import com.yeejoin.amos.patrol.core.common.response.DangerListResponse; import com.yeejoin.amos.patrol.core.common.response.DangerListResponse;
import com.yeejoin.amos.patrol.core.util.StringUtil; import com.yeejoin.amos.patrol.core.util.StringUtil;
import com.yeejoin.amos.patrol.dao.entity.Check; import com.yeejoin.amos.patrol.dao.entity.*;
import com.yeejoin.amos.patrol.dao.entity.CheckShot;
import com.yeejoin.amos.patrol.dao.entity.InputItem;
import com.yeejoin.amos.patrol.dao.entity.PointClassify;
import com.yeejoin.amos.patrol.exception.YeeException; import com.yeejoin.amos.patrol.exception.YeeException;
import com.yeejoin.amos.patrol.feign.RemoteSecurityService; import com.yeejoin.amos.patrol.feign.RemoteSecurityService;
import com.yeejoin.amos.patrol.mqtt.WebMqttComponent; import com.yeejoin.amos.patrol.mqtt.WebMqttComponent;
...@@ -92,6 +91,8 @@ import org.springframework.scheduling.annotation.Async; ...@@ -92,6 +91,8 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
...@@ -181,6 +182,9 @@ public class LatentDangerServiceImpl implements ILatentDangerService { ...@@ -181,6 +182,9 @@ public class LatentDangerServiceImpl implements ILatentDangerService {
@Autowired @Autowired
private WorkflowExcuteServiceImpl workflowExecuteService; private WorkflowExcuteServiceImpl workflowExecuteService;
@Autowired
private IPatrolDataSyncService patrolDataSyncService;
private static final String permissionType = "SUBMENU"; private static final String permissionType = "SUBMENU";
private static final String acctivePermissionType = "activitiItem"; private static final String acctivePermissionType = "activitiItem";
...@@ -386,6 +390,17 @@ public class LatentDangerServiceImpl implements ILatentDangerService { ...@@ -386,6 +390,17 @@ public class LatentDangerServiceImpl implements ILatentDangerService {
private void updateCheckInputDangerState(Long id, int code) { private void updateCheckInputDangerState(Long id, int code) {
latentDangerMapper.updateCheckInputDangerState(id, code); latentDangerMapper.updateCheckInputDangerState(id, code);
// 巡检站端与中心级数据同步
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
// 事物提交后业务逻辑
Map<String, Object> map = new HashMap<>();
map.put("id", id);
List<CheckInputSyncBo> checkInputSyncBoList = checkInputMapper.getCheckInputSyncBoList(map);
patrolDataSyncService.checkInputBoDataSync(checkInputSyncBoList);
}
});
} }
private String buildLocalHost() { private String buildLocalHost() {
......
package com.yeejoin.amos.patrol.business.service.impl; package com.yeejoin.amos.patrol.business.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.business.dao.repository.IPlanTaskDetailDao; import com.yeejoin.amos.patrol.business.dao.repository.IPlanTaskDetailDao;
import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService; import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService;
import com.yeejoin.amos.patrol.common.enums.PatrolDataSyncTopicEnum; import com.yeejoin.amos.patrol.common.enums.PatrolDataSyncTopicEnum;
...@@ -15,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -15,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
@Async @Async
...@@ -32,12 +35,16 @@ public class PatrolDataSyncServiceImpl implements IPatrolDataSyncService { ...@@ -32,12 +35,16 @@ public class PatrolDataSyncServiceImpl implements IPatrolDataSyncService {
public void checkDataSync(Check check) { public void checkDataSync(Check check) {
if (check != null) { if (check != null) {
try { try {
webMqttComponent.publish(PatrolDataSyncTopicEnum.CHECK.getTopic(), JSONObject.toJSONString(check)); String message = buildSyncMessage(PatrolDataSyncTopicEnum.CHECK.getTopic(), check);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message);
String isOk = check.getIsOk(); String isOk = check.getIsOk();
long taskDetailId = check.getPlanTaskDetailId(); long taskDetailId = check.getPlanTaskDetailId();
List<PlanTaskDetail> planTaskDetailList = planTaskDetailDao.findAllByIdAndStatus(taskDetailId, isOk); List<PlanTaskDetail> planTaskDetailList = planTaskDetailDao.findAllByIdAndStatus(taskDetailId, isOk);
if (CollectionUtils.isNotEmpty(planTaskDetailList)) { if (CollectionUtils.isNotEmpty(planTaskDetailList)) {
planTaskDetailList.forEach(x -> webMqttComponent.publish(PatrolDataSyncTopicEnum.PLAN_TASK_DETAIL.getTopic(), JSONObject.toJSONString(x))); planTaskDetailList.forEach(x -> {
String detailMessage = buildSyncMessage(PatrolDataSyncTopicEnum.PLAN_TASK_DETAIL.getTopic(), x);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), detailMessage);
});
} }
} catch (Exception e) { } catch (Exception e) {
log.error("站端与中心级巡检数据【check或planTaskDetail】同步推送失败-----------" + e.getMessage()); log.error("站端与中心级巡检数据【check或planTaskDetail】同步推送失败-----------" + e.getMessage());
...@@ -46,10 +53,36 @@ public class PatrolDataSyncServiceImpl implements IPatrolDataSyncService { ...@@ -46,10 +53,36 @@ public class PatrolDataSyncServiceImpl implements IPatrolDataSyncService {
} }
@Override @Override
public void checkDataSync(List<Check> checkList) {
if (CollectionUtils.isNotEmpty(checkList)) {
try {
checkList.forEach(check -> {
String message = buildSyncMessage(PatrolDataSyncTopicEnum.CHECK.getTopic(), check);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message);
String isOk = check.getIsOk();
long taskDetailId = check.getPlanTaskDetailId();
List<PlanTaskDetail> planTaskDetailList = planTaskDetailDao.findAllByIdAndStatus(taskDetailId, isOk);
if (CollectionUtils.isNotEmpty(planTaskDetailList)) {
planTaskDetailList.forEach(x -> {
String detailMessage = buildSyncMessage(PatrolDataSyncTopicEnum.PLAN_TASK_DETAIL.getTopic(), x);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), detailMessage);
});
}
});
} catch (Exception e) {
log.error("站端与中心级巡检数据【check或planTaskDetail】同步推送失败-----------" + e.getMessage());
}
}
}
@Override
public void checkInputDataSync(List<CheckInput> checkInputList) { public void checkInputDataSync(List<CheckInput> checkInputList) {
try { try {
if (CollectionUtils.isNotEmpty(checkInputList)) { if (CollectionUtils.isNotEmpty(checkInputList)) {
checkInputList.forEach(x -> webMqttComponent.publish(PatrolDataSyncTopicEnum.CHECK_INPUT.getTopic(), JSONObject.toJSONString(x))); checkInputList.forEach(x -> {
String message = buildSyncMessage(PatrolDataSyncTopicEnum.CHECK_INPUT.getTopic(), x);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message);
});
} }
} catch (Exception e) { } catch (Exception e) {
log.error("站端与中心级巡检数据【checkInput】同步推送失败-----------" + e.getMessage()); log.error("站端与中心级巡检数据【checkInput】同步推送失败-----------" + e.getMessage());
...@@ -60,10 +93,46 @@ public class PatrolDataSyncServiceImpl implements IPatrolDataSyncService { ...@@ -60,10 +93,46 @@ public class PatrolDataSyncServiceImpl implements IPatrolDataSyncService {
public void checkShotDataSync(List<CheckShot> checkShotList) { public void checkShotDataSync(List<CheckShot> checkShotList) {
try { try {
if (CollectionUtils.isNotEmpty(checkShotList)) { if (CollectionUtils.isNotEmpty(checkShotList)) {
checkShotList.forEach(x -> webMqttComponent.publish(PatrolDataSyncTopicEnum.CHECK_SHOT.getTopic(), JSONObject.toJSONString(x))); checkShotList.forEach(x -> {
String message = buildSyncMessage(PatrolDataSyncTopicEnum.CHECK_SHOT.getTopic(), x);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message);
});
} }
} catch (Exception e) { } catch (Exception e) {
log.error("站端与中心级巡检数据【checkShot】同步推送失败-----------" + e.getMessage()); log.error("站端与中心级巡检数据【checkShot】同步推送失败-----------" + e.getMessage());
} }
} }
@Override
public void checkInputBoDataSync(CheckInputSyncBo checkInputSyncBo) {
try {
if (checkInputSyncBo != null) {
String message = buildSyncMessage(PatrolDataSyncTopicEnum.CHECK_INPUT_BO.getTopic(), checkInputSyncBo);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message);
}
} catch (Exception e) {
log.error("站端与中心级巡检数据【CheckInputSyncBo】同步推送失败-----------" + e.getMessage());
}
}
@Override
public void checkInputBoDataSync(List<CheckInputSyncBo> checkInputSyncBoList) {
try {
if (CollectionUtils.isNotEmpty(checkInputSyncBoList)) {
checkInputSyncBoList.forEach(x -> {
String message = buildSyncMessage(PatrolDataSyncTopicEnum.CHECK_INPUT_BO.getTopic(), x);
webMqttComponent.publish(PatrolDataSyncTopicEnum.EQM_PATROL_CREATED.getTopic(), message);
});
}
} catch (Exception e) {
log.error("站端与中心级巡检数据【CheckInputSyncBo】同步推送失败-----------" + e.getMessage());
}
}
public String buildSyncMessage(String topic, Object object) {
Map<String, Object> map = new HashMap<>();
map.put("topic", topic);
map.put("data", object);
return JSONObject.toJSONString(map);
}
} }
package com.yeejoin.amos.patrol.business.service.intfc; package com.yeejoin.amos.patrol.business.service.intfc;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.dao.entity.Check; import com.yeejoin.amos.patrol.dao.entity.Check;
import com.yeejoin.amos.patrol.dao.entity.CheckInput; import com.yeejoin.amos.patrol.dao.entity.CheckInput;
import com.yeejoin.amos.patrol.dao.entity.CheckShot; import com.yeejoin.amos.patrol.dao.entity.CheckShot;
...@@ -17,7 +18,13 @@ public interface IPatrolDataSyncService { ...@@ -17,7 +18,13 @@ public interface IPatrolDataSyncService {
void checkDataSync(Check check); void checkDataSync(Check check);
void checkDataSync(List<Check> checkList);
void checkInputDataSync(List<CheckInput> checkInputList); void checkInputDataSync(List<CheckInput> checkInputList);
void checkShotDataSync(List<CheckShot> checkShotList); void checkShotDataSync(List<CheckShot> checkShotList);
void checkInputBoDataSync(CheckInputSyncBo checkInputSyncBo);
void checkInputBoDataSync(List<CheckInputSyncBo> checkInputSyncBoList);
} }
...@@ -3,12 +3,11 @@ package com.yeejoin.amos.patrol.quartz; ...@@ -3,12 +3,11 @@ package com.yeejoin.amos.patrol.quartz;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.component.feign.config.InnerInvokException; import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.MessageModel; import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo;
import com.yeejoin.amos.patrol.business.constants.XJConstant; import com.yeejoin.amos.patrol.business.constants.XJConstant;
import com.yeejoin.amos.patrol.business.dao.mapper.*; import com.yeejoin.amos.patrol.business.dao.mapper.CheckInputMapper;
import com.yeejoin.amos.patrol.business.dao.mapper.MsgMapper; import com.yeejoin.amos.patrol.business.dao.mapper.MsgMapper;
import com.yeejoin.amos.patrol.business.dao.mapper.PlanTaskMapper; import com.yeejoin.amos.patrol.business.dao.mapper.PlanTaskMapper;
import com.yeejoin.amos.patrol.business.dao.repository.*; import com.yeejoin.amos.patrol.business.dao.repository.*;
...@@ -16,6 +15,7 @@ import com.yeejoin.amos.patrol.business.entity.mybatis.PlanTaskPointInputItemBo; ...@@ -16,6 +15,7 @@ import com.yeejoin.amos.patrol.business.entity.mybatis.PlanTaskPointInputItemBo;
import com.yeejoin.amos.patrol.business.feign.JcsFeignClient; import com.yeejoin.amos.patrol.business.feign.JcsFeignClient;
import com.yeejoin.amos.patrol.business.param.MsgConfigParam; import com.yeejoin.amos.patrol.business.param.MsgConfigParam;
import com.yeejoin.amos.patrol.business.service.intfc.IMessageService; import com.yeejoin.amos.patrol.business.service.intfc.IMessageService;
import com.yeejoin.amos.patrol.business.service.intfc.IPatrolDataSyncService;
import com.yeejoin.amos.patrol.business.util.DateUtil; import com.yeejoin.amos.patrol.business.util.DateUtil;
import com.yeejoin.amos.patrol.business.util.Toke; import com.yeejoin.amos.patrol.business.util.Toke;
import com.yeejoin.amos.patrol.common.enums.*; import com.yeejoin.amos.patrol.common.enums.*;
...@@ -23,7 +23,6 @@ import com.yeejoin.amos.patrol.core.async.AsyncTask; ...@@ -23,7 +23,6 @@ import com.yeejoin.amos.patrol.core.async.AsyncTask;
import com.yeejoin.amos.patrol.dao.entity.*; import com.yeejoin.amos.patrol.dao.entity.*;
import com.yeejoin.amos.patrol.feign.RemoteSecurityService; import com.yeejoin.amos.patrol.feign.RemoteSecurityService;
import com.yeejoin.amos.patrol.mqtt.WebMqttComponent; import com.yeejoin.amos.patrol.mqtt.WebMqttComponent;
import org.apache.commons.collections.CollectionUtils;
import org.quartz.Job; import org.quartz.Job;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -31,6 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -31,6 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
...@@ -42,741 +43,510 @@ import java.util.stream.Collectors; ...@@ -42,741 +43,510 @@ import java.util.stream.Collectors;
@Service("jobService") @Service("jobService")
public class JobService implements IJobService { public class JobService implements IJobService {
private final Logger log = LoggerFactory.getLogger(JobService.class); private final Logger log = LoggerFactory.getLogger(JobService.class);
@Autowired @Autowired
private ITaskDao iTaskDao; private ITaskDao iTaskDao;
@Autowired @Autowired
private IPlanTaskDao iPlanTaskDao; private IPlanTaskDao iPlanTaskDao;
@Autowired @Autowired
private IPlanDao iPlanDao; private IPlanTaskDetailDao iPlanTaskDetailDao;
@Autowired @Autowired
private IPlanTaskDetailDao iPlanTaskDetailDao; private IMessageService messageService;
@Autowired @Autowired
private IMessageService messageService; private PlanTaskMapper planTaskMapper;
@Autowired @Autowired
private PlanTaskMapper planTaskMapper; private MsgMapper msgMapper;
@Autowired @Autowired
private MsgMapper msgMapper; private ICheckDao iCheckDao;
@Autowired @Autowired
private ICheckDao iCheckDao; private ICheckInputDao iCheckInputDao;
@Autowired @Autowired
private ICheckInputDao iCheckInputDao; private AsyncTask asyncTask;
@Autowired @Autowired
private AsyncTask asyncTask; private IMsgDao iMsgDao;
@Autowired @Autowired
private IMsgDao iMsgDao; private ITaskFeedbackDao taskFeedbackDao;
@Autowired @Autowired
private ITaskFeedbackDao taskFeedbackDao; private IPatrolDataSyncService patrolDataSyncService;
@Autowired @Autowired
private CheckMapper checkMapper; private CheckInputMapper checkInputMapper;
@Autowired
@Autowired
private RemoteSecurityService remoteSecurityService; private RemoteSecurityService remoteSecurityService;
@Value("${amosRefresh.patrol.topic}") @Value("${amosRefresh.patrol.topic}")
private String patrolTopic; private String patrolTopic;
@Autowired @Autowired
private WebMqttComponent webMqttComponent; private WebMqttComponent webMqttComponent;
@Autowired
@Autowired JcsFeignClient jcsFeignClient;
JcsFeignClient jcsFeignClient;
@Override
@Override @Transactional
@Transactional public void initScheduler() {
public void initScheduler() { // TODO Auto-generated method stub
// TODO Auto-generated method stub log.debug("======================initScheduler===========================");
log.debug("======================initScheduler==========================="); initTaskJob();
initTaskJob(); initPlanTaskJob();
initPlanTaskJob(); initMsgJob();
initMsgJob(); }
}
@Override
@Override public void addJob(String name, String jobType, long id, Date time) {
public void addJob(String name, String jobType, long id, Date time) { String jobName = name + "-" + jobType + "-" + id;
String jobName = name + "-" + jobType + "-" + id; if (time != null && time.getTime() > new Date().getTime()) {
if (time != null && time.getTime() > new Date().getTime()) { SimpleDateFormat formatter = new SimpleDateFormat("ss mm HH dd MM ? yyyy");
SimpleDateFormat formatter = new SimpleDateFormat("ss mm HH dd MM ? yyyy"); String cronDate = formatter.format(time);
String cronDate = formatter.format(time); log.debug("addJob==jobName==" + jobName);
log.debug("addJob==jobName==" + jobName); QuartzManager.addJob(jobName, jobType, id, getJobInstance(name).getClass(), cronDate);
QuartzManager.addJob(jobName, jobType, id, getJobInstance(name).getClass(), cronDate); }
} }
}
/**
/** * 初始化任务job
* 初始化任务job */
*/ private void initTaskJob() {
private void initTaskJob() { List<Task> taskList = iTaskDao.findAllByStatus(TaskStatusEnum.UNDERWAY.getValue());
List<Task> taskList = iTaskDao.findAllByStatus(TaskStatusEnum.UNDERWAY.getValue()); List<Task> updateTask = new ArrayList<Task>();
List<Task> updateTask = new ArrayList<Task>(); taskList.forEach(task -> {
taskList.forEach(task -> { Date finishTime = task.getFinishTime();
Date finishTime = task.getFinishTime(); if (finishTime != null) {
if (finishTime != null) { if (finishTime.getTime() > new Date().getTime()) {
if (finishTime.getTime() > new Date().getTime()) { taskAddJob(task);
taskAddJob(task); } else {
} else { task.setStatus(TaskStatusEnum.OVERTIME.getValue());
task.setStatus(TaskStatusEnum.OVERTIME.getValue()); updateTask.add(task);
updateTask.add(task); }
} }
} });
}); iTaskDao.saveAll(updateTask);
iTaskDao.saveAll(updateTask); }
}
/**
/** * 初始化计划执行job
* 初始化计划执行job */
*/ private void initPlanTaskJob() {
private void initPlanTaskJob() { List<Integer> statusList = new ArrayList<Integer>();
List<Integer> statusList = new ArrayList<Integer>(); statusList.add(PlanTaskFinishStatusEnum.NOTSTARTED.getValue());
statusList.add(PlanTaskFinishStatusEnum.NOTSTARTED.getValue()); statusList.add(PlanTaskFinishStatusEnum.UNDERWAY.getValue());
statusList.add(PlanTaskFinishStatusEnum.UNDERWAY.getValue()); List<PlanTask> planTaskList = iPlanTaskDao.findAllByFinishStatusIn(statusList);
List<PlanTask> planTaskList = iPlanTaskDao.findAllByFinishStatusIn(statusList); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); planTaskList.forEach(planTask -> {
planTaskList.forEach(planTask -> { try {
try { Date beginTime = sdf.parse(planTask.getBeginTime());
Date beginTime = sdf.parse(planTask.getBeginTime()); Date endTime = sdf.parse(planTask.getEndTime());
Date endTime = sdf.parse(planTask.getEndTime()); long timestamp = new Date().getTime();
long timestamp = new Date().getTime(); if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == planTask.getFinishStatus()) {
if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == planTask.getFinishStatus()) { if (beginTime.getTime() > timestamp) {
if (beginTime.getTime() > timestamp) { planTaskAddJob(planTask);
planTaskAddJob(planTask);
} else if (beginTime.getTime() < timestamp && endTime.getTime() > timestamp) {
} else if (beginTime.getTime() < timestamp && endTime.getTime() > timestamp) { planTask.setFinishStatus(PlanTaskFinishStatusEnum.UNDERWAY.getValue());
planTask.setFinishStatus(PlanTaskFinishStatusEnum.UNDERWAY.getValue()); iPlanTaskDao.save(planTask);
iPlanTaskDao.save(planTask); planTaskAddJob(planTask);
planTaskAddJob(planTask); } else if (endTime.getTime() < timestamp) {
} else if (endTime.getTime() < timestamp) { updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue());
updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue()); }
} } else {
} else { if (endTime.getTime() < timestamp) {
if (endTime.getTime() < timestamp) { updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue());
updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue()); } else {
} else { planTaskAddJob(planTask);
planTaskAddJob(planTask); }
} }
} } catch (ParseException e) {
} catch (ParseException e) { // TODO Auto-generated catch block
// TODO Auto-generated catch block log.debug(e.getMessage());
log.debug(e.getMessage()); e.printStackTrace();
e.printStackTrace(); }
} });
});
}
}
private void initMsgJob() {
private void initMsgJob() { List<Msg> msgList = iMsgDao.findAllByIsImmediatelyTrueAndStatus(0);
List<Msg> msgList = iMsgDao.findAllByIsImmediatelyTrueAndStatus(0); if (!msgList.isEmpty()) {
if (!msgList.isEmpty()) { msgList.forEach(msg -> {
msgList.forEach(msg -> { addJob("msg", XJConstant.MESSAGE_PUSH, msg.getId(), msg.getFixedTime());
addJob("msg", XJConstant.MESSAGE_PUSH, msg.getId(), msg.getFixedTime()); });
}); }
} }
}
private void updatePlanTaskStatus(PlanTask planTask, int status) {
private void updatePlanTaskStatus(PlanTask planTask, int status) { planTask.setFinishStatus(status);
planTask.setFinishStatus(status); iPlanTaskDao.save(planTask);
iPlanTaskDao.save(planTask); List<PlanTaskDetail> planTaskDetails = iPlanTaskDetailDao.findAllByTaskNoAndStatus(planTask.getId(), PlanTaskDetailStatusEnum.NOTSTARTED.getValue());
List<PlanTaskDetail> planTaskDetails = iPlanTaskDetailDao.findAllByTaskNoAndStatus(planTask.getId(),PlanTaskDetailStatusEnum.NOTSTARTED.getValue()); if (!planTaskDetails.isEmpty()) {
if (!planTaskDetails.isEmpty()) { planTaskDetails.stream().forEach(action -> {
planTaskDetails.stream() action.setIsFinish(PlanTaskDetailIsFinishEnum.OVERTIME.getValue());
.forEach(action -> { action.setStatus(PlanTaskDetailStatusEnum.OMISSION.getValue());
action.setIsFinish(PlanTaskDetailIsFinishEnum.OVERTIME.getValue()); iPlanTaskDetailDao.saveAndFlush(action);
action.setStatus(PlanTaskDetailStatusEnum.OMISSION.getValue()); });
iPlanTaskDetailDao.saveAndFlush(action); }
}); if (PlanTaskFinishStatusEnum.OVERTIME.getValue() == status) {
} createOmissionCheckRecord(planTask);
if (PlanTaskFinishStatusEnum.OVERTIME.getValue() == status) { }
createOmissionCheckRecord(planTask); }
}
} private void updateTaskStatus(Plan plan) {
Toke toke = remoteSecurityService.getServerToken();
private void updateTaskStatus(Plan plan){ RequestContext.setToken(toke.getToke());
Toke toke= remoteSecurityService.getServerToken(); RequestContext.setProduct(toke.getProduct());
RequestContext.setToken(toke.getToke()); RequestContext.setAppKey(toke.getAppKey());
RequestContext.setProduct(toke.getProduct()); MessageModel model = new MessageModel();
RequestContext.setAppKey(toke.getAppKey()); model.setRelationId(String.valueOf(plan.getId()));
MessageModel model = new MessageModel(); model.setMsgType("patrolSystem");
model.setRelationId(String.valueOf(plan.getId())); model.setIsRead(true);
model.setMsgType("patrolSystem"); log.info("修改待办任务参数-->{}", JSON.toJSON(model));
model.setIsRead(true); Systemctl.messageClient.update(model);
log.info("修改待办任务参数-->{}", JSON.toJSON(model)); }
Systemctl.messageClient.update(model);
}
/**
* 创建漏检检查记录
/** *
* 创建漏检检查记录 * @param planTask
* */
* @param planTask private void createOmissionCheckRecord(PlanTask planTask) {
*/ List<PlanTaskPointInputItemBo> planTaskPointInputItems = planTaskMapper.getPlanTaskPointInputItemByPlanTaskId(planTask.getId(), PlanTaskDetailStatusEnum.OMISSION.getValue());
private void createOmissionCheckRecord(PlanTask planTask) { Map<Long, Check> checkMap = new HashMap<>();
List<PlanTaskPointInputItemBo> planTaskPointInputItems = planTaskMapper Set<Long> checkIds = new HashSet<Long>();
.getPlanTaskPointInputItemByPlanTaskId(planTask.getId(),PlanTaskDetailStatusEnum.OMISSION.getValue()); Map<String, String> deptMap = new HashMap<>();
Map<Long, Check> checkMap = new HashMap<>(); StringBuffer deptName = new StringBuffer();
Set<Long> checkIds = new HashSet<Long>(); StringBuffer deptId = new StringBuffer();
Map<String,String> deptMap =new HashMap<>(); StringBuffer userName = new StringBuffer();
//Toke toke= remoteSecurityService.getServerToken(); if (planTask.getUserDept().indexOf(",") > 0) {
//查询用户名字 List<String> ids = Arrays.asList(planTask.getUserId().split(","));
List<String> depts = Arrays.asList(planTask.getUserDept().split(","));
//修改巡检p_plan_task orgcode为执行人的org_coed -- add by wujunkai 20201216 depts.stream().forEach(dept -> {
String userIds=""; deptMap.put(dept.substring(0, dept.indexOf("@")), dept.substring(dept.indexOf("@") + 1));
StringBuffer deptName = new StringBuffer(); deptId.append(dept.substring(dept.indexOf("@") + 1)).append(",");
StringBuffer deptId = new StringBuffer(); });
StringBuffer userName = new StringBuffer(); Set<String> departmentOrgCode = new HashSet<>();
if(planTask.getUserDept().indexOf(",")>0){ for (String key : deptMap.keySet()) {
List<String> ids = Arrays.asList(planTask.getUserId().split(",")); departmentOrgCode.add(deptMap.get(key));
List<String> depts = Arrays.asList(planTask.getUserDept().split(",")); }
depts.stream().forEach(dept->{ StringBuffer deptIds = new StringBuffer();
deptMap.put(dept.substring(0,dept.indexOf("@")),dept.substring(dept.indexOf("@")+1)); Iterator it = departmentOrgCode.iterator();
deptId.append(dept.substring(dept.indexOf("@")+1)).append(","); while (it.hasNext()) {
}); deptIds.append(it.next()).append(",");
Set<String> departmentOrgCode= new HashSet<>(); }
for (String key:deptMap.keySet()) {
departmentOrgCode.add(deptMap.get(key)); String realNames = "";
} FeignClientResult<List<Map<String, Object>>> agencyUserModelsDate = jcsFeignClient.selectByAmosOrgIdDeptList(planTask.getUserId());
StringBuffer deptIds = new StringBuffer(); List<Map<String, Object>> agencyUserModels = agencyUserModelsDate.getResult();
Iterator it = departmentOrgCode.iterator();
while(it.hasNext()){ FeignClientResult<List<Map<String, Object>>> departmentModeldate = jcsFeignClient.selectByIdDeptList(deptIds.toString().substring(0, deptIds.toString().length() - 1));
deptIds.append(it.next()).append(","); List<Map<String, Object>> departmentModels = departmentModeldate.getResult();
}
if (!agencyUserModels.isEmpty()) {
// for (int j = 0; j < ids.size(); j++) { realNames = agencyUserModels.stream().map(map -> map.get("bizOrgName").toString()).collect(Collectors.joining(","));
String realNames=""; userName.append(realNames);
// List<DepartmentModel> departmentModels = remoteSecurityService.getlistDepartmentByDeptIds(toke.getToke(), }
// toke.getProduct(), toke.getAppKey(), deptIds.toString().substring(0,deptIds.toString().length()-1)); if (!departmentModels.isEmpty()) {
// List<AgencyUserModel> agencyUserModels = remoteSecurityService.listUserByUserIds(toke.getToke(), String departmentName = departmentModels.stream().map(map -> map.get("bizOrgName").toString()).collect(Collectors.joining(","));
// toke.getProduct(), toke.getAppKey(), planTask.getUserId()); deptName.append(departmentName);
}
} else {
FeignClientResult<List<Map<String, Object>>> agencyUserModelsDate= jcsFeignClient.selectByAmosOrgIdDeptList(planTask.getUserId()); String realNames = "";
List<Map<String, Object>> agencyUserModels = agencyUserModelsDate.getResult(); deptId.append(planTask.getUserDept().substring(planTask.getUserDept().indexOf("@") + 1)).append(",");
deptMap.put(planTask.getUserDept().substring(0, planTask.getUserDept().indexOf("@")), planTask.getUserDept().substring(planTask.getUserDept().indexOf("@") + 1));
FeignClientResult<List<Map<String, Object>>> departmentModeldate= jcsFeignClient.selectByIdDeptList(deptIds.toString().substring(0,deptIds.toString().length()-1));
List<Map<String, Object>> departmentModels = departmentModeldate.getResult(); FeignClientResult<List<Map<String, Object>>> departmentModeldate = jcsFeignClient.selectByIdDeptList(deptMap.get(planTask.getUserId()));
List<Map<String, Object>> departmentModel = departmentModeldate.getResult();
if(!agencyUserModels.isEmpty()){ if (departmentModel.size() > 0) {
realNames = agencyUserModels.stream().map(map->map.get("bizOrgName").toString()).collect(Collectors.joining(",")); departmentModel.stream().forEach(model -> {
userName.append(realNames); deptName.append(model.get("bizOrgName").toString());
} });
if(!departmentModels.isEmpty()){ } else {
String departmentName = departmentModels.stream().map(map->map.get("bizOrgName").toString()).collect(Collectors.joining(",")); deptName.append("其他").append(",");
deptName.append(departmentName); }
};
// } FeignClientResult<List<Map<String, Object>>> agencyUserModelsDate = jcsFeignClient.selectByAmosOrgIdDeptList(planTask.getUserId());
List<Map<String, Object>> agencyUserModels = agencyUserModelsDate.getResult();
}else{
String realNames=""; if (!agencyUserModels.isEmpty()) {
deptId.append(planTask.getUserDept().substring(planTask.getUserDept().indexOf("@")+1)).append(","); realNames = agencyUserModels.stream().map(map -> map.get("bizOrgName").toString()).collect(Collectors.joining(","));
deptMap.put(planTask.getUserDept().substring(0,planTask.getUserDept().indexOf("@")),planTask.getUserDept().substring(planTask.getUserDept().indexOf("@")+1)); }
// List<DepartmentModel> departmentModel = remoteSecurityService.getlistDepartmentByDeptIds( userName.append(realNames);
// toke.getToke(), toke.getProduct(), toke.getAppKey(), deptMap.get(planTask.getUserId())); }
List<Check> checkList = new ArrayList<>();
List<Long> checkInputIdList = new ArrayList<>();
FeignClientResult<List<Map<String, Object>>> departmentModeldate= jcsFeignClient.selectByIdDeptList( deptMap.get(planTask.getUserId())); for (PlanTaskPointInputItemBo arg : planTaskPointInputItems) {
List<Map<String, Object>> departmentModel = departmentModeldate.getResult(); Check check = new Check();
if (checkMap.get(arg.getPointId()) == null) {
check.setOrgCode(arg.getOrgCode());
check.setUserId(planTask.getUserId());
int len = userName.toString().indexOf(",");
if (len != -1) {
check.setUserName(userName.toString());
if(departmentModel.size()>0){ } else {
departmentModel.stream().forEach(model->{ check.setUserName(userName.toString());
deptName.append(model.get("bizOrgName").toString()); }
}); check.setDepId(deptId.toString().substring(0, deptId.length() - 1));
}else{ check.setDepName(deptName.toString());
deptName.append("其他").append(","); check.setPointId(arg.getPointId());
}
// List<AgencyUserModel> agencyUserModels = remoteSecurityService.listUserByUserIds(toke.getToke(), toke.getProduct(), toke.getAppKey(), check.setPointName(arg.getPointName());
// planTask.getUserId()); check.setRouteName(arg.getRouteName());
check.setPlanName(arg.getPlanName());
FeignClientResult<List<Map<String, Object>>> agencyUserModelsDate= jcsFeignClient.selectByAmosOrgIdDeptList(planTask.getUserId()); check.setErrorClassify(arg.getClassifyName());
List<Map<String, Object>> agencyUserModels = agencyUserModelsDate.getResult();
check.setUploadTime(new Date());
check.setPlanId(arg.getPlanId());
check.setPlanTaskId(arg.getPlanTaskId());
if(!agencyUserModels.isEmpty()){ check.setPlanTaskDetailId(arg.getPlanTaskDetailId());
realNames = agencyUserModels.stream().map(map->map.get("bizOrgName").toString()).collect(Collectors.joining(",")); check.setRouteId(arg.getRouteId());
} check.setCheckTime(arg.getEndTime());
userName.append(realNames); check.setIsOk(CheckStatusEnum.OMISSION.getCode());
} check = iCheckDao.saveAndFlush(check);
checkList.add(check);
//查询部门名称 checkMap.put(arg.getPointId(), check);
// String depId=""; checkIds.add(check.getId());
// String depName=""; } else {
/** check = checkMap.get(arg.getPointId());
* 对部门查询有问题需要修改 }
if (arg.getInputItemId() != null) {
if(iPlanDao.existsById(planTask.getPlanId())){ CheckInput checkInput = new CheckInput();
Plan plan = iPlanDao.findById(planTask.getPlanId()).get(); checkInput.setCheckId(check.getId());
DepartmentModel departmentModel = remoteSecurityService.getDepartmentByDeptId(toke.getToke(), toke.getProduct(), toke.getAppKey(), plan.getDeptId()); checkInput.setInputId(arg.getInputItemId());
depId = plan.getDeptId(); checkInput.setIsOk(CheckStatusEnum.OMISSION.getCode());
depName = departmentModel.getDepartmentName(); checkInput.setRoutePointItemId(arg.getRoutePointItemId());
} */ checkInput.setOrderNo(arg.getOrderNo());
checkInput.setOrgCode(arg.getOrgCode());
for(PlanTaskPointInputItemBo arg:planTaskPointInputItems){ checkInput.setInputName(arg.getInputName());
Check check = new Check(); checkInput.setPointClassifyId(arg.getClassifyId());
checkInput.setPointClassifyName(arg.getClassifyName());
CheckInput checkInput1 = iCheckInputDao.saveAndFlush(checkInput);
checkInputIdList.add(checkInput1.getId());
}
//漏检修改APP待办通知状态不展示
if (checkMap.get(arg.getPointId()) == null) { Plan plan = new Plan();
check.setOrgCode(arg.getOrgCode()); plan.setId(planTask.getPlanId());
check.setUserId(planTask.getUserId()); try {
int len = userName.toString().indexOf(","); updateTaskStatus(plan);
if (len != -1) { } catch (InnerInvokException e) {
check.setUserName(userName.toString()); log.error("待办消息不存在");
} else { }
check.setUserName(userName.toString());
} }
check.setDepId(deptId.toString().substring(0,deptId.length()-1));
check.setDepName(deptName.toString()); String usrIds = planTask.getUserId();
check.setPointId(arg.getPointId()); if (!ObjectUtils.isEmpty(usrIds)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
check.setPointName(arg.getPointName()); String[] ids = usrIds.split(",");
check.setRouteName(arg.getRouteName()); for (String userId : usrIds.split(",")) {
check.setPlanName(arg.getPlanName()); if (ObjectUtils.isEmpty(userId)) {
check.setErrorClassify(arg.getClassifyName()); continue;
}
check.setUploadTime(new Date()); planTaskMapper.reformStatistics(userId, sdf.format(new Date()), planTask.getOrgCode());
check.setPlanId(arg.getPlanId());
check.setPlanTaskId(arg.getPlanTaskId()); }
check.setPlanTaskDetailId(arg.getPlanTaskDetailId()); }
check.setRouteId(arg.getRouteId());
check.setCheckTime(arg.getEndTime()); // 向3d推送数据,发送消息推送
check.setIsOk(CheckStatusEnum.OMISSION.getCode()); checkIds.forEach(checkId -> {
check = iCheckDao.saveAndFlush(check); try {
checkMap.put(arg.getPointId(), check); asyncTask.pushCheckInfoTo3D(checkId);
checkIds.add(check.getId()); asyncTask.pushCheckMessage(checkId);
} else { } catch (InterruptedException e) {
check = checkMap.get(arg.getPointId()); log.error(e.getMessage(), e);
} e.printStackTrace();
if (arg.getInputItemId() != null) { }
CheckInput checkInput = new CheckInput(); });
checkInput.setCheckId(check.getId()); //数字换流站页面刷新
checkInput.setInputId(arg.getInputItemId()); try {
checkInput.setIsOk(CheckStatusEnum.OMISSION.getCode()); webMqttComponent.publish(patrolTopic, "");
checkInput.setRoutePointItemId(arg.getRoutePointItemId()); } catch (Exception e) {
checkInput.setOrderNo(arg.getOrderNo()); log.error("数字换流站页面推送失败-----------" + e.getMessage());
checkInput.setOrgCode(arg.getOrgCode()); }
checkInput.setInputName(arg.getInputName()); // 巡检站端与中心级数据同步
checkInput.setPointClassifyId(arg.getClassifyId()); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
checkInput.setPointClassifyName(arg.getClassifyName()); @Override
iCheckInputDao.saveAndFlush(checkInput); public void afterCommit() {
} // 事物提交后业务逻辑
patrolDataSyncService.checkDataSync(checkList);
//漏检修改APP待办通知状态不展示 Map<String, Object> map = new HashMap<>();
Plan plan = new Plan(); map.put("idList", checkInputIdList);
plan.setId(planTask.getPlanId()); List<CheckInputSyncBo> checkInputSyncBoList = checkInputMapper.getCheckInputSyncBoList(map);
try { patrolDataSyncService.checkInputBoDataSync(checkInputSyncBoList);
updateTaskStatus(plan); }
}catch (InnerInvokException e){ });
log.error("待办消息不存在"); }
}
private void removeJob(String jobName) {
} log.debug("removeJob==jobName==" + jobName);
QuartzManager.removeJob(jobName);
String usrIds = planTask.getUserId(); }
if (!ObjectUtils.isEmpty(usrIds)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); private Job getJobInstance(String type) {
String[] ids = usrIds.split(","); switch (type) {
for (String userId : usrIds.split(",")) { case "planTask":
// Map<String,AgencyUserModel> agencyUserModelMap = remoteSecurityService.getUsersMap(toke.getToke(),toke.getProduct(),toke.getAppKey(), Collections.singleton(userIds)); return new PlanTaskJobService();
// List<Map<String, String>> idOrgCodeList = new ArrayList<>(); case "task":
// for(Map.Entry<String, AgencyUserModel> entry : agencyUserModelMap.entrySet()){ return new TaskJobService();
// String id = entry.getKey(); case "msg":
// AgencyUserModel agencyUserModel = entry.getValue(); return new MsgJobService();
// StringBuffer agencyUserOrgcode = new StringBuffer(); default:
// agencyUserModel.getCompanys().forEach(companyModel -> { return null;
// agencyUserOrgcode.append(companyModel.getOrgCode()).append(","); }
// }); }
// Map<String,String> map = new HashMap<>();
// map.put(id,agencyUserOrgcode.toString().substring(0,agencyUserOrgcode.length()-1)); @Override
// } public void taskAddJob(Task task) {
// Map<String, String> userIdOrgCodeMap = new HashMap<>(ids.length); // TODO Auto-generated method stub
// if (!CollectionUtils.isEmpty(idOrgCodeList)) { long taskId = task.getId();
// userIdOrgCodeMap = idOrgCodeList.stream().collect(Collectors.toMap(x-> String.valueOf(x.get( if (XJConstant.TASK_WARN.equals(task.getIsWarn())) { // 设置为接受报警执行代码
// "id")), x->x.get("org_code"))); Date alarmDate = task.getWarnTime();
// } addJob("task", XJConstant.MESSAGE_PUSH, taskId, alarmDate);
if (ObjectUtils.isEmpty(userId)) { }
continue; addJob("task", XJConstant.STATUS_MONITOR_END, taskId, task.getFinishTime());
}
// planTaskMapper.reformStatistics(userId, sdf.format(new Date()), planTask.getOrgCode()); }
planTaskMapper.reformStatistics(userId, sdf.format(new Date()), planTask.getOrgCode());
@Override
} @Transactional
} public void taskJobPerform(long taskId, String jobType, String jobName) {
// TODO Auto-generated method stub
// 向3d推送数据,发送消息推送
checkIds.forEach(checkId -> {
try { if (iTaskDao.existsById(taskId)) {
asyncTask.pushCheckInfoTo3D(checkId); Task task = iTaskDao.findById(taskId).get();
asyncTask.pushCheckMessage(checkId); Toke toke = remoteSecurityService.getServerToken();
} catch (InterruptedException e) { if (XJConstant.STATUS_MONITOR_END.equals(jobType)) {
log.error(e.getMessage(), e); if (TaskStatusEnum.UNDERWAY.getValue() == task.getStatus()) {
e.printStackTrace(); task.setStatus(TaskStatusEnum.OVERTIME.getValue());
} iTaskDao.saveAndFlush(task);
}); TaskFeedback taskFeedback = new TaskFeedback();
//数字换流站页面刷新 taskFeedback.setUserId(task.getExecutorId());
try { taskFeedback.setMessage("该任务在规定时间内未完成,请核实信息!任务名称: " + task.getTitle() + " 要求完成时间: " + DateUtil.getDateFormat(task.getFinishTime(), "yyyy-MM-dd HH:mm:ss") + " 发起人:" + task.getPublisherName() + " 执行人:" + task.getExecutor());
webMqttComponent.publish(patrolTopic, ""); taskFeedback.setCreateDate(new Date());
}catch (Exception e){ taskFeedback.setUserName(task.getExecutor());
log.error("数字换流站页面推送失败-----------"+e.getMessage()); taskFeedback.setFeedbackTime(new Date());
} taskFeedback.setOrgCode(task.getOrgCode());
taskFeedback.setTaskId(task.getId());
taskFeedback.setMessageType(TaskStatusEnum.OVERTIME.getName());
} taskFeedback = taskFeedbackDao.save(taskFeedback);
try {
asyncTask.pushTaskDetailInfoTo3D(toke.getToke(), toke.getProduct(), toke.getAppKey(), taskId); // 超时任务向3D推送
} catch (InterruptedException e) {
// TODO Auto-generated catch block
log.error(e.getMessage(), e);
// private void createOmissionCheckRecord(PlanTask planTask) { e.printStackTrace();
// List<PlanTaskPointInputItemBo> planTaskPointInputItems = planTaskMapper }
// .getPlanTaskPointInputItemByPlanTaskId(planTask.getId(),PlanTaskDetailStatusEnum.OMISSION.getValue()); }
// Map<Long, Check> checkMap = new HashMap<>(); } else {
// Set<Long> checkIds = new HashSet<Long>(); messageService.pushTaskMessage(toke.getToke(), toke.getProduct(), toke.getAppKey(), task);
// Map<String,String> deptMap =new HashMap<>(); }
// Toke toke= remoteSecurityService.getServerToken(); }
// //查询用户名字 removeJob(jobName);
// }
// //修改巡检p_plan_task orgcode为执行人的org_coed -- add by wujunkai 20201216
// String userIds=""; @Override
// StringBuffer deptName = new StringBuffer(); public void planTaskAddJob(PlanTask planTask) {
// StringBuffer deptId = new StringBuffer(); // TODO Auto-generated method stub
// StringBuffer userName = new StringBuffer(); try {
// if(planTask.getUserDept().indexOf(",")>0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// List<String> ids = Arrays.asList(planTask.getUserId().split(",")); Date endTime = sdf.parse(planTask.getEndTime());
// List<String> depts = Arrays.asList(planTask.getUserDept().split(",")); Date beginTime = sdf.parse(planTask.getBeginTime());
// depts.stream().forEach(dept->{ if (PlanTaskFinishStatusEnum.OVERTIME.getValue() != planTask.getFinishStatus()) {
// deptMap.put(dept.substring(0,dept.indexOf("@")),dept.substring(dept.indexOf("@")+1));
// deptId.append(dept.substring(dept.indexOf("@")+1)).append(","); // 添加状态监控定时
// });
// Set<String> departmentOrgCode= new HashSet<>(); int status = planTask.getFinishStatus();
// for (String key:deptMap.keySet()) { if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == status) {
// departmentOrgCode.add(deptMap.get(key)); addJob("planTask", XJConstant.STATUS_MONITOR_START, planTask.getId(), beginTime);// 添加监控任务开始时间定时任务
// } }
// StringBuffer deptIds = new StringBuffer(); if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == status || PlanTaskFinishStatusEnum.UNDERWAY.getValue() == status) {
// Iterator it = departmentOrgCode.iterator(); addJob("planTask", XJConstant.STATUS_MONITOR_END, planTask.getId(), endTime);// 添加监控任务开始结束定时任务
// while(it.hasNext()){ }
// deptIds.append(it.next()).append(",");
// } // 查询需要推送消息提醒
// List<MsgConfigParam> configParam = msgMapper.getPlanTaskMsgConfigByUserIdAndStatus(planTask.getUserId().split(","), "True");
//// for (int j = 0; j < ids.size(); j++) { if (!configParam.isEmpty()) {
// String realNames=""; configParam.forEach(config -> {
// List<DepartmentModel> departmentModels = remoteSecurityService.getlistDepartmentByDeptIds(toke.getToke(), toke.getProduct(), toke.getAppKey(), deptIds.toString().substring(0,deptIds.toString().length()-1)); String jobType = "";
// List<AgencyUserModel> agencyUserModels = remoteSecurityService.listUserByUserIds(toke.getToke(), toke.getProduct(), toke.getAppKey(), planTask.getUserId()); Date time = new Date();
// if(!agencyUserModels.isEmpty()){ int minute = Integer.valueOf(config.getValue());
// realNames = agencyUserModels.stream().map(AgencyUserModel::getRealName).collect(Collectors.joining(",")); long tempTime = minute * 60 * 1000;
// userName.append(realNames); if (MsgSubscribeTypeEnum.PLANWARN.getName().equals(config.getMsgType())) {
// } time = new Date(beginTime.getTime() - tempTime);
// if(!departmentModels.isEmpty()){ jobType = XJConstant.PLAN_TASK_WARN_MSG_PUSH + "-" + config.getUserId();
// String departmentName = departmentModels.stream().map(DepartmentModel::getDepartmentName).collect(Collectors.joining(",")); } else if (MsgSubscribeTypeEnum.PLANBEGIN.getName().equals(config.getMsgType())) {
// deptName.append(departmentName); time = new Date(beginTime.getTime() + tempTime);
// }; jobType = XJConstant.PLAN_TASK_BEGIN_MSG_PUSH + "-" + config.getUserId();
//// } } else if (MsgSubscribeTypeEnum.PLANEND.getName().equals(config.getMsgType())) {
// time = new Date(endTime.getTime() + tempTime);
// }else{ jobType = XJConstant.PLAN_TASK_END_MSG_PUSH + "-" + config.getUserId();
// String realNames=""; }
// deptId.append(planTask.getUserDept().substring(planTask.getUserDept().indexOf("@")+1)).append(","); addJob("planTask", jobType, planTask.getId(), time);
// deptMap.put(planTask.getUserDept().substring(0,planTask.getUserDept().indexOf("@")),planTask.getUserDept().substring(planTask.getUserDept().indexOf("@")+1)); });
// List<DepartmentModel> departmentModel = remoteSecurityService.getlistDepartmentByDeptIds(toke.getToke(), toke.getProduct(), toke.getAppKey(), deptMap.get(planTask.getUserId())); }
// if(departmentModel.size()>0){
// departmentModel.stream().forEach(model->{ } else {
// deptName.append(model.getDepartmentName()); updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue());
// }); }
// }else{ } catch (Exception e) {
// deptName.append("其他").append(","); log.error(e.getMessage(), e);
// } e.printStackTrace();
// List<AgencyUserModel> agencyUserModels = remoteSecurityService.listUserByUserIds(toke.getToke(), toke.getProduct(), toke.getAppKey(), planTask.getUserId()); }
// if(!agencyUserModels.isEmpty()){ }
// realNames = agencyUserModels.stream().map(AgencyUserModel::getRealName).collect(Collectors.joining(","));
//// userIds = agencyUserModels.stream().map(AgencyUserModel::getUserId).collect(Collectors.joining(",")); @Override
// } @Transactional
// userName.append(realNames); public void planTaskJobPerform(long planTaskId, String jobType, String jobName) {
// }
// if (iPlanTaskDao.existsById(planTaskId)) {
// //查询部门名称 PlanTask planTask = iPlanTaskDao.findById(planTaskId).get();
//// String depId=""; if (XJConstant.STATUS_MONITOR_START.equals(jobType)) {
//// String depName=""; if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == planTask.getFinishStatus()) {
// /** planTask.setFinishStatus(PlanTaskFinishStatusEnum.UNDERWAY.getValue());
// * 对部门查询有问题需要修改 iPlanTaskDao.save(planTask);
// }
// if(iPlanDao.existsById(planTask.getPlanId())){ } else if (XJConstant.STATUS_MONITOR_END.equals(jobType)) {
// Plan plan = iPlanDao.findById(planTask.getPlanId()).get(); if (PlanTaskFinishStatusEnum.UNDERWAY.getValue() == planTask.getFinishStatus()) {
// DepartmentModel departmentModel = remoteSecurityService.getDepartmentByDeptId(toke.getToke(), toke.getProduct(), toke.getAppKey(), plan.getDeptId()); updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue());
// depId = plan.getDeptId(); }
// depName = departmentModel.getDepartmentName(); } else {
// } */ Toke toke = remoteSecurityService.getServerToken();
// messageService.pushPlanTaskMessage(toke.getToke(), toke.getProduct(), toke.getAppKey(), planTask, jobType);
// for(PlanTaskPointInputItemBo arg:planTaskPointInputItems){ }
// Check check = new Check(); }
// if (checkMap.get(arg.getPointId()) == null) { removeJob(jobName);
// check.setOrgCode(arg.getOrgCode()); }
// check.setUserId(planTask.getUserId());
// int len = userName.toString().indexOf(","); @Override
// if (len != -1) { public void msgAddJob(Msg msg) {
// check.setUserName(userName.toString()); addJob("msg", XJConstant.MESSAGE_PUSH, msg.getId(), msg.getFixedTime());
// } else { }
// check.setUserName(userName.toString());
// } @Override
// check.setDepId(deptId.toString().substring(0,deptId.length()-1)); public void msgJobPerform(long msgId, String jobType, String jobName) {
// check.setDepName(deptName.toString()); if (iMsgDao.existsById(msgId)) {
// check.setPointId(arg.getPointId()); Msg msg = iMsgDao.findById(msgId).get();
// check.setUploadTime(new Date()); Toke toke = remoteSecurityService.getServerToken();
// check.setPlanId(arg.getPlanId()); messageService.pushMsgAndSave(toke.getToke(), toke.getProduct(), toke.getAppKey(), msg);
// check.setPlanTaskId(arg.getPlanTaskId()); }
// check.setPlanTaskDetailId(arg.getPlanTaskDetailId()); removeJob(jobName);
// check.setRouteId(arg.getRouteId()); }
// check.setCheckTime(arg.getEndTime());
// check.setIsOk(CheckStatusEnum.OMISSION.getCode());
// check = iCheckDao.saveAndFlush(check);
// checkMap.put(arg.getPointId(), check);
// checkIds.add(check.getId());
// } else {
// check = checkMap.get(arg.getPointId());
// }
// if (arg.getInputItemId() != null) {
// CheckInput checkInput = new CheckInput();
// checkInput.setCheckId(check.getId());
// checkInput.setInputId(arg.getInputItemId());
// checkInput.setIsOk(CheckStatusEnum.OMISSION.getCode());
// checkInput.setRoutePointItemId(arg.getRoutePointItemId());
// checkInput.setOrderNo(arg.getOrderNo());
// checkInput.setOrgCode(arg.getOrgCode());
// checkInput.setInputName(arg.getInputName());
// checkInput.setPointClassifyId(arg.getClassifyId());
// checkInput.setPointClassifyName(arg.getClassifyName());
// iCheckInputDao.saveAndFlush(checkInput);
// }
// }
//
// String usrIds = planTask.getUserId();
// if (!ObjectUtils.isEmpty(usrIds)) {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// String[] ids = usrIds.split(",");
// for (String userId : usrIds.split(",")) {
// Map<String,AgencyUserModel> agencyUserModelMap = remoteSecurityService.getUsersMap(toke.getToke(),toke.getProduct(),toke.getAppKey(), Collections.singleton(userIds));
// List<Map<String, String>> idOrgCodeList = new ArrayList<>();
// for(Map.Entry<String, AgencyUserModel> entry : agencyUserModelMap.entrySet()){
// String id = entry.getKey();
// AgencyUserModel agencyUserModel = entry.getValue();
// StringBuffer agencyUserOrgcode = new StringBuffer();
// agencyUserModel.getCompanys().forEach(companyModel -> {
// agencyUserOrgcode.append(companyModel.getOrgCode()).append(",");
// });
// Map<String,String> map = new HashMap<>();
// map.put(id,agencyUserOrgcode.toString().substring(0,agencyUserOrgcode.length()-1));
// }
// Map<String, String> userIdOrgCodeMap = new HashMap<>(ids.length);
// if (!CollectionUtils.isEmpty(idOrgCodeList)) {
// userIdOrgCodeMap = idOrgCodeList.stream().collect(Collectors.toMap(x-> String.valueOf(x.get(
// "id")), x->x.get("org_code")));
// }
// if (ObjectUtils.isEmpty(userId)) {
// continue;
// }
//// planTaskMapper.reformStatistics(userId, sdf.format(new Date()), planTask.getOrgCode());
// planTaskMapper.reformStatistics(userId, sdf.format(new Date()), userIdOrgCodeMap.get(userId));
//
// }
// }
//
// // 向3d推送数据,发送消息推送
// checkIds.forEach(checkId -> {
// try {
// asyncTask.pushCheckInfoTo3D(checkId);
// asyncTask.pushCheckMessage(checkId);
// } catch (InterruptedException e) {
// log.error(e.getMessage(), e);
// e.printStackTrace();
// }
// });
// //数字换流站页面刷新
// try {
// webMqttComponent.publish(patrolTopic, "");
// }catch (Exception e){
// log.error("数字换流站页面推送失败-----------"+e.getMessage());
// }
//
//
// }
private void removeJob(String jobName) {
log.debug("removeJob==jobName==" + jobName);
QuartzManager.removeJob(jobName);
}
private Job getJobInstance(String type) {
switch (type) {
case "planTask":
return new PlanTaskJobService();
case "task":
return new TaskJobService();
case "msg":
return new MsgJobService();
default:
return null;
}
}
@Override
public void taskAddJob(Task task) {
// TODO Auto-generated method stub
long taskId = task.getId();
if (XJConstant.TASK_WARN.equals(task.getIsWarn())) { // 设置为接受报警执行代码
Date alarmDate = task.getWarnTime();
addJob("task", XJConstant.MESSAGE_PUSH, taskId, alarmDate);
}
addJob("task", XJConstant.STATUS_MONITOR_END, taskId, task.getFinishTime());
}
@Override
@Transactional
public void taskJobPerform(long taskId, String jobType, String jobName) {
// TODO Auto-generated method stub
if (iTaskDao.existsById(taskId)) {
Task task = iTaskDao.findById(taskId).get();
Toke toke= remoteSecurityService.getServerToken();
if (XJConstant.STATUS_MONITOR_END.equals(jobType)) {
if (TaskStatusEnum.UNDERWAY.getValue() == task.getStatus()) {
task.setStatus(TaskStatusEnum.OVERTIME.getValue());
iTaskDao.saveAndFlush(task);
TaskFeedback taskFeedback = new TaskFeedback();
taskFeedback.setUserId(task.getExecutorId());
taskFeedback.setMessage("该任务在规定时间内未完成,请核实信息!任务名称: " + task.getTitle() + " 要求完成时间: "
+ DateUtil.getDateFormat(task.getFinishTime(), "yyyy-MM-dd HH:mm:ss") + " 发起人:"
+ task.getPublisherName() + " 执行人:" + task.getExecutor());
taskFeedback.setCreateDate(new Date());
taskFeedback.setUserName(task.getExecutor());
taskFeedback.setFeedbackTime(new Date());
taskFeedback.setOrgCode(task.getOrgCode());
taskFeedback.setTaskId(task.getId());
taskFeedback.setMessageType(TaskStatusEnum.OVERTIME.getName());
taskFeedback = taskFeedbackDao.save(taskFeedback);
try {
asyncTask.pushTaskDetailInfoTo3D(toke.getToke(), toke.getProduct(), toke.getAppKey(),taskId); // 超时任务向3D推送
} catch (InterruptedException e) {
// TODO Auto-generated catch block
log.error(e.getMessage(), e);
e.printStackTrace();
}
}
} else {
messageService.pushTaskMessage(toke.getToke(), toke.getProduct(), toke.getAppKey(),task);
}
}
removeJob(jobName);
}
@Override
public void planTaskAddJob(PlanTask planTask) {
// TODO Auto-generated method stub
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date endTime = sdf.parse(planTask.getEndTime());
Date beginTime = sdf.parse(planTask.getBeginTime());
if (PlanTaskFinishStatusEnum.OVERTIME.getValue() != planTask.getFinishStatus()) {
// 添加状态监控定时
int status = planTask.getFinishStatus();
if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == status) {
addJob("planTask", XJConstant.STATUS_MONITOR_START, planTask.getId(), beginTime);// 添加监控任务开始时间定时任务
}
if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == status
|| PlanTaskFinishStatusEnum.UNDERWAY.getValue() == status) {
addJob("planTask", XJConstant.STATUS_MONITOR_END, planTask.getId(), endTime);// 添加监控任务开始结束定时任务
}
// 查询需要推送消息提醒
List<MsgConfigParam> configParam = msgMapper.getPlanTaskMsgConfigByUserIdAndStatus(planTask.getUserId().split(","),
"True");
if (!configParam.isEmpty()) {
configParam.forEach(config -> {
String jobType = "";
Date time = new Date();
int minute = Integer.valueOf(config.getValue());
long tempTime = minute * 60 * 1000;
if (MsgSubscribeTypeEnum.PLANWARN.getName().equals(config.getMsgType())) {
time = new Date(beginTime.getTime() - tempTime);
jobType = XJConstant.PLAN_TASK_WARN_MSG_PUSH + "-" + config.getUserId();
} else if (MsgSubscribeTypeEnum.PLANBEGIN.getName().equals(config.getMsgType())) {
time = new Date(beginTime.getTime() + tempTime);
jobType = XJConstant.PLAN_TASK_BEGIN_MSG_PUSH + "-" + config.getUserId();
} else if (MsgSubscribeTypeEnum.PLANEND.getName().equals(config.getMsgType())) {
time = new Date(endTime.getTime() + tempTime);
jobType = XJConstant.PLAN_TASK_END_MSG_PUSH + "-" + config.getUserId();
}
addJob("planTask", jobType, planTask.getId(), time);
});
}
} else {
updatePlanTaskStatus(planTask,PlanTaskFinishStatusEnum.OVERTIME.getValue());
}
} catch (Exception e) {
log.error(e.getMessage(), e);
e.printStackTrace();
}
}
@Override
@Transactional
public void planTaskJobPerform(long planTaskId, String jobType, String jobName) {
if (iPlanTaskDao.existsById(planTaskId)) {
PlanTask planTask = iPlanTaskDao.findById(planTaskId).get();
if (XJConstant.STATUS_MONITOR_START.equals(jobType)) {
if (PlanTaskFinishStatusEnum.NOTSTARTED.getValue() == planTask.getFinishStatus()) {
planTask.setFinishStatus(PlanTaskFinishStatusEnum.UNDERWAY.getValue());
iPlanTaskDao.save(planTask);
}
} else if (XJConstant.STATUS_MONITOR_END.equals(jobType)) {
if (PlanTaskFinishStatusEnum.UNDERWAY.getValue() == planTask.getFinishStatus()) {
updatePlanTaskStatus(planTask, PlanTaskFinishStatusEnum.OVERTIME.getValue());
}
} else {
Toke toke= remoteSecurityService.getServerToken();
messageService.pushPlanTaskMessage(toke.getToke(), toke.getProduct(), toke.getAppKey(),planTask, jobType);
}
}
removeJob(jobName);
}
@Override
public void msgAddJob(Msg msg) {
addJob("msg", XJConstant.MESSAGE_PUSH, msg.getId(), msg.getFixedTime());
}
@Override
public void msgJobPerform(long msgId, String jobType, String jobName) {
if (iMsgDao.existsById(msgId)) {
Msg msg = iMsgDao.findById(msgId).get();
Toke toke= remoteSecurityService.getServerToken();
messageService.pushMsgAndSave(toke.getToke(), toke.getProduct(), toke.getAppKey(),msg);
}
removeJob(jobName);
}
} }
...@@ -57,4 +57,91 @@ ...@@ -57,4 +57,91 @@
</where> </where>
limit 1 limit 1
</select> </select>
<select id="getCheckInputSyncBoList" resultType="com.yeejoin.amos.patrol.business.bo.CheckInputSyncBo" parameterType="java.util.Map">
<![CDATA[
SELECT
ci.id,
ci.input_name,
ci.input_value,
ci.is_ok AS check_status,
ci.is_ok,
ci.check_id,
ci.create_date,
ci.danger_handle_state,
ci.input_id,
ci.order_no,
ci.point_classify_id,
ci.point_classify_name,
ci.remark,
ci.route_point_item_id,
ci.score,
ci.org_code,
cou.bzOrgCode AS biz_org_code,
cou.biz_org_name AS biz_org_name,
c.point_id,
c.point_name,
c.check_time,
pt.end_time AS `date`,
c.plan_id,
c.plan_name,
c.route_id,
c.route_name,
c.user_id,
c.user_name,
c.dep_id,
c.dep_name,
es.id AS eq_id,
es.`name` eq_name,
es.`code` eq_code,
(
SELECT
GROUP_CONCAT(ffs.`name`)
FROM
f_fire_fighting_system ffs
WHERE
find_in_set(ffs.id, es.system_id)
) AS system_name,
CONCAT(pt.id, '') AS plan_task_id,
pt.end_time AS plan_completion_time,
cou.`code` AS company_code,
es.equipment_code AS equipment_type_code,
pii.item_no AS input_code,
pp.point_no as pointCode,
wws.`code` as buildCode,
wws.full_name as buildName
FROM
p_check_input ci
LEFT JOIN p_input_item pii ON pii.id = ci.input_id
LEFT JOIN p_check c ON c.id = ci.check_id
LEFT JOIN p_point pp ON pp.id = c.point_id
LEFT JOIN p_plan_task pt ON pt.id = c.plan_task_id
LEFT JOIN p_point_classify pc ON pc.id = ci.point_classify_id
LEFT JOIN wl_equipment_specific es ON es.id = pc.equipment_id
LEFT JOIN wl_warehouse_structure wws ON wws.id = pp.risk_source_id
LEFT JOIN (
SELECT
biz_org_name,
biz_org_code bzOrgCode,
amos_org_id,
amos_org_code,
`code`
FROM
cb_org_usr
WHERE
amos_org_code <> ''
AND amos_org_code IS NOT NULL
AND biz_org_type = 'COMPANY'
) cou ON cou.amos_org_code = ci.org_code ]]>
<where>
<if test="id != null">
ci.id = #{id}
</if>
<if test="idList != null and idList.size() >0">
AND ci.id IN
<foreach collection="idList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
</mapper> </mapper>
\ 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