package com.java110.job.task.noticeStaff;
|
|
import com.java110.dto.community.CommunityDto;
|
import com.java110.dto.community.CommunityMemberDto;
|
import com.java110.dto.inspection.InspectionTaskDetailDto;
|
import com.java110.dto.inspection.InspectionTaskDto;
|
import com.java110.dto.notice.NoticeStaffDto;
|
import com.java110.dto.privilege.BasePrivilegeDto;
|
import com.java110.dto.repair.RepairDto;
|
import com.java110.dto.repair.RepairUserDto;
|
import com.java110.dto.task.TaskDto;
|
import com.java110.dto.user.UserDto;
|
import com.java110.intf.community.*;
|
import com.java110.intf.order.IPrivilegeInnerServiceSMO;
|
import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
|
import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO;
|
import com.java110.intf.user.IStaffAppAuthInnerServiceSMO;
|
import com.java110.intf.user.IUserInnerServiceSMO;
|
import com.java110.job.msgNotify.IMsgNotify;
|
import com.java110.job.msgNotify.MsgNotifyFactory;
|
import com.java110.job.quartz.TaskSystemQuartz;
|
import com.java110.utils.cache.MappingCache;
|
import com.java110.utils.constant.MappingConstant;
|
import com.java110.utils.util.Assert;
|
import com.java110.utils.util.DateUtil;
|
import com.java110.utils.util.ListUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.text.ParseException;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 通知员工工单处理
|
*/
|
@Component
|
public class NoticeStaffTaskTemplate extends TaskSystemQuartz {
|
|
@Autowired
|
private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
|
|
@Autowired
|
private IInspectionPlanInnerServiceSMO inspectionPlanInnerServiceSMOImpl;
|
|
@Autowired
|
private IInspectionPlanStaffInnerServiceSMO inspectionPlanStaffInnerServiceSMOImpl;
|
|
@Autowired
|
private IInspectionRoutePointRelInnerServiceSMO inspectionRoutePointRelInnerServiceSMOImpl;
|
|
|
@Autowired
|
private IInspectionTaskInnerServiceSMO inspectionTaskInnerServiceSMOImpl;
|
|
@Autowired
|
private IInspectionTaskDetailInnerServiceSMO inspectionTaskDetailInnerServiceSMOImpl;
|
|
@Autowired
|
private IPrivilegeInnerServiceSMO privilegeInnerServiceSMO;
|
|
@Autowired
|
private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
|
|
@Autowired
|
private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
|
|
|
@Autowired
|
private IUserInnerServiceSMO userInnerServiceSMO;
|
|
|
@Override
|
protected void process(TaskDto taskDto) throws Exception {
|
logger.debug("开始执行微信模板信息推送" + taskDto.toString());
|
|
// 获取小区
|
List<CommunityDto> communityDtos = getAllCommunity();
|
|
for (CommunityDto communityDto : communityDtos) {
|
try {
|
//todo 巡检 任务生成提醒
|
publishStaffInspectionTask(taskDto, communityDto);
|
} catch (Exception e) {
|
logger.error("巡检 任务生成提醒", e);
|
}
|
try {
|
//todo 巡检情况通知
|
notifyTodayInspection(communityDto);
|
} catch (Exception e) {
|
logger.error("巡检情况通知", e);
|
}
|
|
try {
|
//todo 报修快超时通知
|
notifyRepairTimeout(communityDto);
|
} catch (Exception e) {
|
logger.error("巡检情况通知", e);
|
}
|
}
|
}
|
|
/**
|
* 报修超时通知
|
*
|
* @param communityDto
|
*/
|
private void notifyRepairTimeout(CommunityDto communityDto) {
|
|
RepairDto repairDto = new RepairDto();
|
repairDto.setCommunityId(communityDto.getCommunityId());
|
repairDto.setStatess(new String[]{RepairDto.STATE_WAIT, RepairDto.STATE_TAKING});
|
List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
|
if (ListUtil.isNull(repairDtos)) {
|
return;
|
}
|
|
RepairUserDto repairUserDto;
|
List<RepairUserDto> repairUserDtos;
|
IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_WECHAT);
|
for (RepairDto tRepairDto : repairDtos) {
|
if (!NoticeTaskUtil.isRepairAboutTimeout(tRepairDto)) {
|
continue;
|
}
|
repairUserDto = new RepairUserDto();
|
repairUserDto.setRepairId(tRepairDto.getRepairId());
|
repairUserDto.setState(RepairUserDto.STATE_DOING);
|
repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
|
if (ListUtil.isNull(repairUserDtos)) {
|
continue;
|
}
|
try {
|
msgNotify.sendStaffMsg(
|
new NoticeStaffDto(communityDto.getCommunityId(),
|
repairUserDtos.get(0).getStaffId(),
|
tRepairDto.getRepairName() + "提交报修单快超时了",
|
"系统管理员"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
//todo 提示已经超时的工单
|
for (RepairDto tRepairDto : repairDtos) {
|
if (!NoticeTaskUtil.isRepairTimeout(tRepairDto)) {
|
continue;
|
}
|
repairUserDto = new RepairUserDto();
|
repairUserDto.setRepairId(tRepairDto.getRepairId());
|
repairUserDto.setState(RepairUserDto.STATE_DOING);
|
repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
|
if (ListUtil.isNull(repairUserDtos)) {
|
continue;
|
}
|
try {
|
msgNotify.sendStaffMsg(
|
new NoticeStaffDto(communityDto.getCommunityId(),
|
repairUserDtos.get(0).getStaffId(),
|
tRepairDto.getRepairName() + "提交报修单已超时",
|
"系统管理员"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
/**
|
* 今日巡检情况通知
|
*
|
* @param communityDto
|
*/
|
private void notifyTodayInspection(CommunityDto communityDto) {
|
|
if (!NoticeTaskUtil.isNotifyTodayInspection(communityDto)) {
|
return;
|
}
|
|
CommunityMemberDto communityMemberDto = new CommunityMemberDto();
|
communityMemberDto.setCommunityId(communityDto.getCommunityId());
|
communityMemberDto.setAuditStatusCd(CommunityMemberDto.AUDIT_STATUS_NORMAL);
|
communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY);
|
List<CommunityMemberDto> communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto);
|
Assert.listOnlyOne(communityMemberDtos, "小区没有物业公司");
|
|
BasePrivilegeDto basePrivilegeDto = new BasePrivilegeDto();
|
basePrivilegeDto.setResource("/todayInspectionNotifyStaff");
|
basePrivilegeDto.setStoreId(communityMemberDtos.get(0).getMemberId());
|
basePrivilegeDto.setCommunityId(communityDto.getCommunityId());
|
List<UserDto> userDtos = privilegeInnerServiceSMO.queryPrivilegeUsers(basePrivilegeDto);
|
if (ListUtil.isNull(userDtos)) {
|
return;
|
}
|
|
IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_WECHAT);
|
String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN, "STAFF_WECHAT_URL");
|
if (wechatUrl.endsWith("/")) {
|
wechatUrl += "#/pages/inspection/inspectionTodayReport";
|
} else {
|
wechatUrl += "/#/pages/inspection/inspectionTodayReport";
|
}
|
for (UserDto userDto : userDtos) {
|
//根据 userId 查询到openId
|
try {
|
msgNotify.sendStaffMsg(
|
new NoticeStaffDto(communityDto.getCommunityId(),
|
userDto.getUserId(),
|
communityDto.getName() + "今日巡检情况",
|
"系统管理员",
|
wechatUrl));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
/**
|
* 巡检任务
|
*
|
* @param taskDto
|
* @param communityDto
|
*/
|
private void publishStaffInspectionTask(TaskDto taskDto, CommunityDto communityDto) {
|
|
InspectionTaskDetailDto inspectionTaskDetailDto = new InspectionTaskDetailDto();
|
inspectionTaskDetailDto.setCommunityId(communityDto.getCommunityId());
|
inspectionTaskDetailDto.setState(InspectionTaskDto.STATE_NO_START);
|
inspectionTaskDetailDto.setQrCodeTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B));
|
inspectionTaskDetailDto.setSendFlag(InspectionTaskDetailDto.SEND_FLAG_N);
|
List<InspectionTaskDetailDto> inspectionTaskDetailDtos = inspectionTaskDetailInnerServiceSMOImpl.queryInspectionTaskDetails(inspectionTaskDetailDto);
|
for (InspectionTaskDetailDto tInspectionTaskDetailDto : inspectionTaskDetailDtos) {
|
String startTime = tInspectionTaskDetailDto.getPointStartTime();
|
startTime = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B) + " " + startTime + ":00";
|
Date startDate = null;
|
try {
|
startDate = DateUtil.getDateFromString(startTime, DateUtil.DATE_FORMATE_STRING_A);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
startDate = new Date();
|
}
|
|
//还没有到时间
|
if (startDate.getTime() > DateUtil.getCurrentDate().getTime()) {
|
return;
|
}
|
|
IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_WECHAT);
|
String staffWechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN, "STAFF_WECHAT_URL");
|
staffWechatUrl = staffWechatUrl
|
+ "pages/excuteOneQrCodeInspection/excuteOneQrCodeInspection?inspectionId="
|
+ tInspectionTaskDetailDto.getInspectionId()
|
+ "&inspectionName=" + tInspectionTaskDetailDto.getInspectionName()
|
+ "&itemId=" + tInspectionTaskDetailDto.getItemId();
|
try {
|
msgNotify.sendStaffMsg(
|
new NoticeStaffDto(communityDto.getCommunityId(),
|
tInspectionTaskDetailDto.getPlanUserId(),
|
tInspectionTaskDetailDto.getInspectionName() + "未巡检,请及时巡检",
|
"系统管理员",
|
staffWechatUrl)
|
);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
|
InspectionTaskDetailDto inspectionTaskDetailPo = new InspectionTaskDetailDto();
|
inspectionTaskDetailPo.setTaskDetailId(tInspectionTaskDetailDto.getTaskDetailId());
|
inspectionTaskDetailPo.setSendFlag(InspectionTaskDetailDto.SEND_FLAG_Y);
|
inspectionTaskDetailPo.setStatusCd("0");
|
inspectionTaskDetailInnerServiceSMOImpl.updateInspectionTaskDetail(inspectionTaskDetailPo);
|
}
|
|
}
|
|
}
|