Commit 2d7f8cfa authored by kongfm's avatar kongfm

我的任务相关接口- 获取任务列表/ 获取任务详情/ 到达判断/ 点击到达按钮 / 点击救援完成按钮

parent df44b7ea
package com.yeejoin.amos.boot.module.tzs.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
......@@ -93,7 +94,22 @@ public class DispatchPaperDto extends BaseDto {
@ApiModelProperty(value = "到达时间")
private Date arriveTime;
@ApiModelProperty(value = "救援完成时间")
private Date saveTime;
@ApiModelProperty(value = "处置时间")
private Date dealTime;
@ApiModelProperty(value = "救援机构名称")
private String saveOrgName;
@ApiModelProperty(value = "维修单位名称")
private String repairOrgName;
@ApiModelProperty(value = "维修人")
private String repairUser;
@ApiModelProperty(value = "处置单位")
private String dealOrgName;
@ApiModelProperty(value = "处置人")
private String dealUser;
}
......@@ -19,4 +19,10 @@ public class WechatAccessDto {
@ApiModelProperty(value = "手机号")
private String tel;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户性别")
private String sex;
}
package com.yeejoin.amos.boot.module.tzs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 微信公众号返回我的任务dto类
* kongfm
*/
@Data
@ApiModel(value="WechatMyTaskDto", description="微信公众号返回我的任务dto类")
public class WechatMyTaskDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
protected Long sequenceNbr;
@ApiModelProperty(value = "警情id")
private Long alertId;
@ApiModelProperty(value = "派遣单id")
private Long paperId;
@ApiModelProperty(value = "任务状态")
private String taskStatus;
@ApiModelProperty(value = "任务类别")
private String taskType;
@ApiModelProperty(value = "任务类别code")
private String taskTypeCode;
@ApiModelProperty(value = "地址")
private String address;
@ApiModelProperty(value = "电梯识别码")
private String rescueCode;
@ApiModelProperty(value = "被困楼层")
private String trappedFloorNum;
@ApiModelProperty(value = "被困人数")
private String trappedNum;
@ApiModelProperty(value = "派遣时间")
private Date dispatchTime;
@ApiModelProperty(value = "有无人员伤亡")
private String hasDeadHurt;
@ApiModelProperty(value = "使用单位")
private String useUnit;
@ApiModelProperty(value = "使用单位id")
private Long useUnitId;
@ApiModelProperty(value = "使用单位主管机构")
private String useUnitAuthority;
@ApiModelProperty(value = "求援人电话")
private String emergencyCall;
@ApiModelProperty(value = "求援时间/ 报修时间/ 投诉时间")
private Date recDate;
@ApiModelProperty(value = "到达时间")
private Date arriveTime;
@ApiModelProperty(value = "救援完成时间")
private Date saveTime;
@ApiModelProperty(value = "救援单位")
private String saveOrg;
@ApiModelProperty(value = "任务接收人")
private String taskResponseUser;
@ApiModelProperty(value = "维修完成时间")
private Date fixFinishTime;
@ApiModelProperty(value = "维修单位")
private String responseOrg;
@ApiModelProperty(value = "维修人")
private String responseUser;
@ApiModelProperty(value = "故障原因")
private String errorResult;
@ApiModelProperty(value = "维修结果")
private String fixResult;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "现场照片")
private List<String> fixImgs;
@ApiModelProperty(value = "故障描述")
private String errorContent;
@ApiModelProperty(value = "故障照片")
private List<String> errorImgs;
@ApiModelProperty(value = "反馈时间")
private Date responseTime;
@ApiModelProperty(value = "反馈人")
private String feedbackUname;
@ApiModelProperty(value = "结果评价")
private String feedbackResult;
@ApiModelProperty(value = "反馈备注")
private String feedbackRemark;
@ApiModelProperty(value = "反馈现场照片")
private List<String> feedBackImgs;
@ApiModelProperty(value = "处置时间")
private Date dealTime;
@ApiModelProperty(value = "处置单位")
private String dealOrg;
@ApiModelProperty(value = "处置人")
private String dealUser;
@ApiModelProperty(value = "处置结果")
private String actionResult;
}
package com.yeejoin.amos.boot.module.tzs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 微信公众号任务列表dto类
* kongfm
*/
@Data
@ApiModel(value="WechatMyTaskListDto", description="微信公众号任务列表dto类")
public class WechatMyTaskListDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
protected Long sequenceNbr;
@ApiModelProperty(value = "任务类型")
private String taskType;
@ApiModelProperty(value = "是否结案")
private Boolean taskStatus;
@ApiModelProperty(value = "地址")
private String address;
@ApiModelProperty(value = "派遣时间")
private Date dispatchTime;
}
......@@ -168,9 +168,41 @@ public class DispatchPaper extends BaseEntity {
private Date arriveTime;
/**
* 救援完成时间
* 处置时间
*/
@TableField("save_time")
private Date saveTime;
@TableField("deal_time")
private Date dealTime;
/**
* 救援机构名称
*/
@TableField("save_org_name")
private String saveOrgName;
/**
* 维修单位名称
*/
@TableField("repair_org_name")
private String repairOrgName;
/**
* 维修人
*/
@TableField("repair_user")
private String repairUser;
/**
* 处置单位
*/
@TableField("deal_org_name")
private String dealOrgName;
/**
* 处置人
*/
@TableField("deal_user")
private String dealUser;
}
package com.yeejoin.amos.boot.module.tzs.api.mapper;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskListDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchTask;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 派遣任务 Mapper 接口
*
......@@ -14,4 +19,7 @@ public interface DispatchTaskMapper extends BaseMapper<DispatchTask> {
String returnDistanceByTaskId(@Param("taskId") Long taskId, @Param("lon")String lon, @Param("lat")String lat);
WechatMyTaskDto getTaskInfoByTaskId(@Param("taskId") Long taskId);
List<WechatMyTaskListDto> getTaskListByPhonePager(@Param("phone") String phone,@Param("typeCode") String typeCode, @Param("current") Long current);
}
......@@ -2,7 +2,12 @@ package com.yeejoin.amos.boot.module.tzs.api.service;
import com.yeejoin.amos.boot.module.tzs.api.dto.DispatchTaskDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskListDto;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 派遣任务接口类
......@@ -18,4 +23,12 @@ public interface IDispatchTaskService {
DispatchTaskDto getTaskInfo(String orgTypeCode, Long alertId);
String returnDistanceByTaskId(Long taskId, String longitude, String latitude);
WechatMyTaskDto getTaskInfoByTaskId(Long taskId);
Boolean taskArrive(Long taskId);
Boolean saveFinish(Long taskId);
List<WechatMyTaskListDto> getTaskListByPhonePager(String phone,String typeCode,Long current);
}
package com.yeejoin.amos.boot.module.tzs.api.service;
import com.alibaba.fastjson.JSONObject;
/**
* 微信公众号服务类
*/
......@@ -17,4 +19,11 @@ public interface IWechatService {
* @return
*/
String getOpenId(String code);
/**
* 获取微信昵称
* @param openId
* @return
*/
JSONObject getUserInfo(String openId);
}
......@@ -5,31 +5,86 @@
<select id="returnDistanceByTaskId" resultType="java.lang.String">
select
(
ACOS(
SIN(
(#{lat} * PI()) / 180
) * SIN(
(
el.latitude * PI()
) / 180
) + COS(
(#{lat} * PI()) / 180
) * COS(
(
el.latitude * PI()
) / 180
) * COS(
(#{lon} * PI()) / 180 - (
el.longitude * PI()
) / 180
)
) * 6371000
) AS distance
from tz_dispatch_task ta
left JOIN tz_alert_called al on al.sequence_nbr = ta.alert_id
left JOIN tcb_elevator el on el.sequence_nbr = al.equipment_id
where ta.sequence_nbr = #{taskId}
(
ACOS(
SIN(
(#{lat} * PI()) / 180
) * SIN(
(
el.latitude * PI()
) / 180
) + COS(
(#{lat} * PI()) / 180
) * COS(
(
el.latitude * PI()
) / 180
) * COS(
(#{lon} * PI()) / 180 - (
el.longitude * PI()
) / 180
)
) * 6371000
) AS distance
from tz_dispatch_task ta
left JOIN tz_alert_called al on al.sequence_nbr = ta.alert_id
left JOIN tcb_elevator el on el.sequence_nbr = al.equipment_id
where ta.sequence_nbr = #{taskId}
</select>
<select id="getTaskInfoByTaskId" resultType="com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskDto">
select
t.sequence_nbr
t.alert_id as alertId,
p.sequence_nbr as paperId,
a.alert_stage as taskStatus,
a.alarm_type as taskType,
a.alarm_type_code as taskTypeCode,
e.address,
e.rescue_code as rescueCode,
p.dispatch_time as dispatchTime,
e.use_unit as useUnit,
e.use_unit_id as useUnitId,
e.use_unit_authority as useUnitAuthority,
a.emergency_call as emergencyCall,
a.rec_date as recDate,
p.arrive_time as arriveTime,
p.save_org_name as saveOrg,
t.response_user_name as taskResponseUser,
p.feedback_finish_time as fixFinishTime,
p.repair_org_name as responseOrg,
p.repair_user as responseUser,
p.remark as feedbackRemark,
p.feedback_time as responseTime,
p.feedback_uname as feedbackUname,
p.feedback_finish_time as dealTime,
p.deal_org_name as dealOrg,
p.deal_user as dealUser
from tz_dispatch_task t
LEFT JOIN tz_alert_called a on a.sequence_nbr = t.alert_id
LEFT JOIN tcb_elevator e on e.sequence_nbr = a.equipment_id
LEFT JOIN tz_dispatch_paper p on p.sequence_nbr = t.paper_id
where t.sequence_nbr = #{taskId}
</select>
<select id="getTaskListByPhonePager" resultType="com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskListDto">
select
t.sequence_nbr,
a.alarm_type as taskType,
a.alert_status as taskStatus,
e.address,
p.dispatch_time as dispatch_time
from tz_dispatch_task t
LEFT JOIN tz_alert_called a on a.sequence_nbr = t.alert_id
LEFT JOIN tcb_elevator e on e.sequence_nbr = a.equipment_id
LEFT JOIN tz_dispatch_paper p on p.sequence_nbr = t.paper_id
where t.response_user_tel =#{phone}
and a.alarm_type_code = #{typeCode}
ORDER BY t.rec_date desc
limit #{current},5
</select>
</mapper>
......@@ -9,12 +9,15 @@ import com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.DispatchPaperFormDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.DispatchTaskDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.RescueProcessDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskListDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.tzs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchPaper;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchTask;
import com.yeejoin.amos.boot.module.tzs.api.entity.Elevator;
import com.yeejoin.amos.boot.module.tzs.api.entity.MaintenanceUnit;
import com.yeejoin.amos.boot.module.tzs.api.entity.RescueProcess;
import com.yeejoin.amos.boot.module.tzs.api.entity.RescueStation;
import com.yeejoin.amos.boot.module.tzs.api.entity.Template;
import com.yeejoin.amos.boot.module.tzs.api.entity.UseUnit;
......@@ -173,6 +176,73 @@ public class DispatchTaskServiceImpl extends BaseService<DispatchTaskDto,Dispatc
return baseMapper.returnDistanceByTaskId(taskId, longitude, latitude);
}
@Override
public WechatMyTaskDto getTaskInfoByTaskId(Long taskId) {
return baseMapper.getTaskInfoByTaskId(taskId);
}
@Transactional
@Override
public Boolean taskArrive(Long taskId) {
Boolean flag = false;
Date now = new Date();
// 首先更新任务到达时间
DispatchTask task = this.getById(taskId);
this.update(new LambdaUpdateWrapper<DispatchTask>().set(DispatchTask::getDispatchTime,now).eq(DispatchTask::getSequenceNbr,taskId));
// 其次更新派遣单中相关信息
dispatchPaperServiceImpl.update(new LambdaUpdateWrapper<DispatchPaper>().
set(DispatchPaper::getArriveTime,now).
set(DispatchPaper::getSaveOrgName,task.getResponseOrgName()).
eq(DispatchPaper::getSequenceNbr,task.getPaperId()));
// 如果存在救援过程表更新救援过程表中信息
if(task.getIsSaveTask()) {
rescueProcessServiceImpl.update(new LambdaUpdateWrapper<RescueProcess>().
set(RescueProcess::getArriveTime,now).
set(RescueProcess::getArriveStatus,true).
set(RescueProcess::getArriveFeedbackType,"主动反馈").
set(RescueProcess::getArriveFeedbackCode,"856").
eq(RescueProcess::getAlertId,task.getAlertId()));
}
// 更新到达日志
repairConsultServiceImpl.saveRepairConsultByAlertIdType( task.getAlertId(),"DD",taskId,null);
flag = true;
return flag;
}
@Transactional
@Override
public Boolean saveFinish(Long taskId) {
Boolean flag = false;
Date now = new Date();
DispatchTask task = this.getById(taskId);
// 更新派遣单中相关信息 -- 动态字段
iAlertFormValueService.update(new LambdaUpdateWrapper<AlertFormValue>().
set(AlertFormValue::getFieldValue,DateUtils.date2LongStr(now)).
eq(AlertFormValue::getFieldCode,"save_time").
eq(AlertFormValue::getAlertCalledId,task.getPaperId()));
// 如果存在救援过程表更新救援过程表中信息
if(task.getIsSaveTask()) {
rescueProcessServiceImpl.update(new LambdaUpdateWrapper<RescueProcess>().
set(RescueProcess::getRescueTime,now).
set(RescueProcess::getRescueStatus,true).
set(RescueProcess::getRescueFeedbackType,"主动反馈").
set(RescueProcess::getRescueFeedbackCode,"856").
eq(RescueProcess::getAlertId,task.getAlertId()));
}
// 更新到达日志
repairConsultServiceImpl.saveRepairConsultByAlertIdType( task.getAlertId(),"JC",taskId,null);
flag = true;
return flag;
}
@Override
public List<WechatMyTaskListDto> getTaskListByPhonePager(String phone, String typeCode, Long current) {
return baseMapper.getTaskListByPhonePager(phone, typeCode, current*5);
}
@Transactional
@Override
public Boolean createDispatchTask(DispatchTaskDto dispatchTaskDto, AgencyUserModel sendUser) {
......
......@@ -77,6 +77,8 @@ public class WechatServiceImpl implements IWechatService {
if(response.get("openid") != null) { // 获取token 成功
try {
String openid = response.getString("openid");
String token = response.getString("access_token");
redisUtils.set("accessToken_" + openid, token,time); // 设置用户accessToken
return openid;
} catch (Exception e) {
throw new BadRequest("获取openId 出错:" + e.getMessage());
......@@ -86,4 +88,29 @@ public class WechatServiceImpl implements IWechatService {
}
}
@Override
public JSONObject getUserInfo(String openId) {
String access_token = redisUtils.get("accessToken_" + openId) == null ? null : redisUtils.get("accessToken_" + openId).toString();
if(access_token == null) {
throw new BadRequest("用户access_token过期");
}
String nickNameUrl = wechatUrl+ "/sns/userinfo?access_token="+access_token+"&openid="+openId+"&lang=zh_CN";
String responseStr = HttpUtils.doGet(nickNameUrl);
JSONObject response = null;
try {
response = JSONObject.parseObject(responseStr);
} catch (Exception e) {
throw new BadRequest("获取nickName 出错:" + e.getMessage());
}
if(response.get("nickname") != null) { // 获取token 成功
try {
return response;
} catch (Exception e) {
throw new BadRequest("获取nickname 出错:" + e.getMessage());
}
} else {
throw new BadRequest("获取nickname 出错" + response);
}
}
}
\ 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