Commit 8b029f24 authored by 赵啸非's avatar 赵啸非

添加服务追踪

parent 759d9484
INSERT INTO `mortals_xhx_param` VALUES (null, '注册人员来源', 'Person', 'source', '3', '海康考勤系统', 1, 4, 0, 'source', NULL, NULL, NULL);
ALTER TABLE mortals_xhx_care_records ADD COLUMN `waitId` bigint(20) COMMENT '等待流水号ID' AFTER personId;
......@@ -12,6 +12,7 @@ import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.service.UserService;
......@@ -86,6 +87,9 @@ public class SyncAppointWaitAndFinTaskImpl implements ITaskExcuteService {
log.debug("关怀用户任务");
updateWaitQueueTime();
log.debug("关怀服务完成任务");
log.debug("清理超期等待业务");
clearWaitQueueTime();
}
private void syncWaitAndFinQueue() {
......@@ -122,7 +126,8 @@ public class SyncAppointWaitAndFinTaskImpl implements ITaskExcuteService {
careRecordsEntity.setQueueNo(item.getFlowNum());
careRecordsEntity.setMonitorTime(new Date());
careRecordsEntity.setTakeTime(item.getTakeTime() == null ? new Date() : item.getTakeTime());
careRecordsEntity.setPersonId(item.getWaitId());
careRecordsEntity.setPersonId(DataUtil.converStr2Long(item.getPeopleId(), 0));
careRecordsEntity.setWaitId(item.getWaitId());
careRecordsEntity.setProcessStatus(ProcessStatusEnum.排队中.getValue());
careRecordsEntity.setCreateTime(new Date());
careRecordsEntity.setCreateUserName("system");
......@@ -140,11 +145,11 @@ public class SyncAppointWaitAndFinTaskImpl implements ITaskExcuteService {
Map<Long, FinPersonInfo> waitMap = finPersonInfos.stream().collect(Collectors.toMap(x -> x.getWaitId(), y -> y, (o, n) -> n));
CareRecordsQuery careRecordsQuery = new CareRecordsQuery();
careRecordsQuery.setPersonIdList(waitIdList);
careRecordsQuery.setWaitIdList(waitIdList);
List<CareRecordsEntity> careRecordsEntities = careRecordsService.find(careRecordsQuery);
if (!ObjectUtils.isEmpty(careRecordsEntities)) {
careRecordsEntities.forEach(item -> {
FinPersonInfo finPersonInfo = waitMap.get(item.getPersonId());
FinPersonInfo finPersonInfo = waitMap.get(item.getWaitId());
item.setProcessStatus(ProcessStatusEnum.接件结束.getValue());
item.setCallTime(finPersonInfo.getCalltime());
Long diff = DateUtil.between(item.getTakeTime(), finPersonInfo.getCalltime(), DateUnit.MINUTE);
......@@ -207,6 +212,29 @@ public class SyncAppointWaitAndFinTaskImpl implements ITaskExcuteService {
}
}
private void clearWaitQueueTime() {
//查询所有昨天以前的等待队列,并手动结束排队
CareRecordsQuery careRecordsQuery = new CareRecordsQuery();
careRecordsQuery.setProcessStatus(ProcessStatusEnum.排队中.getValue());
careRecordsQuery.setTakeTimeEnd(DateUtil.yesterday().toStringDefaultTimeZone());
List<CareRecordsEntity> careRecordsEntities = careRecordsService.find(careRecordsQuery);
//手动结束
if (!ObjectUtils.isEmpty(careRecordsEntities)) {
List<CareRecordsEntity> recordsEntities = careRecordsEntities.stream().map(item -> {
Long diff = DateUtil.between(item.getTakeTime(), new Date(), DateUnit.MINUTE);
item.setWaitTime(diff.intValue());
item.setProcessStatus(ProcessStatusEnum.接件结束.getValue());
item.setAssessment("排队等待时间超过一天,系统自动结束!");
item.setUpdateTime(new Date());
item.setUpdateUserId(1L);
item.setUpdateUserName("system");
return item;
}).collect(Collectors.toList());
careRecordsService.update(recordsEntities);
}
}
private boolean checkCareServiceUsed(CareConfigEntity careConfigEntity) {
Integer used = careConfigEntity.getUsed();
if (used == YesNoEnum.NO.getValue()) {
......
......@@ -11,7 +11,7 @@ import lombok.Data;
* 预约关怀记录实体对象
*
* @author zxfei
* @date 2023-04-18
* @date 2023-05-05
*/
@Data
public class CareRecordsEntity extends CareRecordsVo {
......@@ -78,7 +78,7 @@ public class CareRecordsEntity extends CareRecordsVo {
*/
private String monitorDevice;
/**
* 最终等待时长,秒
* 最终等待时长分钟
*/
private Integer waitTime;
/**
......@@ -97,6 +97,10 @@ public class CareRecordsEntity extends CareRecordsVo {
* 短信发送次数
*/
private Integer smsCount;
/**
* 等待流水号ID
*/
private Long waitId;
@Override
public int hashCode() {
return this.getId().hashCode();
......@@ -154,5 +158,7 @@ public class CareRecordsEntity extends CareRecordsVo {
this.assessment = "";
this.smsCount = 0;
this.waitId = null;
}
}
\ No newline at end of file
......@@ -7,7 +7,7 @@ import com.mortals.xhx.module.care.model.CareRecordsEntity;
* 预约关怀记录查询对象
*
* @author zxfei
* @date 2023-04-18
* @date 2023-05-05
*/
public class CareRecordsQuery extends CareRecordsEntity {
/** 开始 主键ID,主键,自增长 */
......@@ -230,6 +230,21 @@ public class CareRecordsQuery extends CareRecordsEntity {
/** 短信发送次数排除列表 */
private List <Integer> smsCountNotList;
/** 开始 等待流水号ID */
private Long waitIdStart;
/** 结束 等待流水号ID */
private Long waitIdEnd;
/** 增加 等待流水号ID */
private Long waitIdIncrement;
/** 等待流水号ID列表 */
private List <Long> waitIdList;
/** 等待流水号ID排除列表 */
private List <Long> waitIdNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<CareRecordsQuery> orConditionList;
......@@ -1479,6 +1494,87 @@ public class CareRecordsQuery extends CareRecordsEntity {
}
/**
* 获取 开始 等待流水号ID
* @return waitIdStart
*/
public Long getWaitIdStart(){
return this.waitIdStart;
}
/**
* 设置 开始 等待流水号ID
* @param waitIdStart
*/
public void setWaitIdStart(Long waitIdStart){
this.waitIdStart = waitIdStart;
}
/**
* 获取 结束 等待流水号ID
* @return $waitIdEnd
*/
public Long getWaitIdEnd(){
return this.waitIdEnd;
}
/**
* 设置 结束 等待流水号ID
* @param waitIdEnd
*/
public void setWaitIdEnd(Long waitIdEnd){
this.waitIdEnd = waitIdEnd;
}
/**
* 获取 增加 等待流水号ID
* @return waitIdIncrement
*/
public Long getWaitIdIncrement(){
return this.waitIdIncrement;
}
/**
* 设置 增加 等待流水号ID
* @param waitIdIncrement
*/
public void setWaitIdIncrement(Long waitIdIncrement){
this.waitIdIncrement = waitIdIncrement;
}
/**
* 获取 等待流水号ID
* @return waitIdList
*/
public List<Long> getWaitIdList(){
return this.waitIdList;
}
/**
* 设置 等待流水号ID
* @param waitIdList
*/
public void setWaitIdList(List<Long> waitIdList){
this.waitIdList = waitIdList;
}
/**
* 获取 等待流水号ID
* @return waitIdNotList
*/
public List<Long> getWaitIdNotList(){
return this.waitIdNotList;
}
/**
* 设置 等待流水号ID
* @param waitIdNotList
*/
public void setWaitIdNotList(List<Long> waitIdNotList){
this.waitIdNotList = waitIdNotList;
}
/**
* 设置 主键ID,主键,自增长
* @param id
......@@ -2179,6 +2275,60 @@ public class CareRecordsQuery extends CareRecordsEntity {
return this;
}
/**
* 设置 等待流水号ID
* @param waitId
*/
public CareRecordsQuery waitId(Long waitId){
setWaitId(waitId);
return this;
}
/**
* 设置 开始 等待流水号ID
* @param waitIdStart
*/
public CareRecordsQuery waitIdStart(Long waitIdStart){
this.waitIdStart = waitIdStart;
return this;
}
/**
* 设置 结束 等待流水号ID
* @param waitIdEnd
*/
public CareRecordsQuery waitIdEnd(Long waitIdEnd){
this.waitIdEnd = waitIdEnd;
return this;
}
/**
* 设置 增加 等待流水号ID
* @param waitIdIncrement
*/
public CareRecordsQuery waitIdIncrement(Long waitIdIncrement){
this.waitIdIncrement = waitIdIncrement;
return this;
}
/**
* 设置 等待流水号ID
* @param waitIdList
*/
public CareRecordsQuery waitIdList(List<Long> waitIdList){
this.waitIdList = waitIdList;
return this;
}
/**
* 设置 等待流水号ID
* @param waitIdNotList
*/
public CareRecordsQuery waitIdNotList(List<Long> waitIdNotList){
this.waitIdNotList = waitIdNotList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
......@@ -30,6 +30,7 @@
<result property="updateTime" column="updateTime" />
<result property="updateUserId" column="updateUserId" />
<result property="smsCount" column="smsCount" />
<result property="waitId" column="waitId" />
</resultMap>
......@@ -112,23 +113,26 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('smsCount') or colPickMode == 1 and data.containsKey('smsCount')))">
a.smsCount,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('waitId') or colPickMode == 1 and data.containsKey('waitId')))">
a.waitId,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="CareRecordsEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_care_records
(siteId,siteName,personId,name,contact,idCard,bussinessId,bussinessName,service,queueNo,takeTime,callTime,monitorTime,monitorDeviceIds,monitorDevice,waitTime,processStatus,careCount,assessment,createTime,createUserId,updateTime,updateUserId,smsCount)
(siteId,siteName,personId,name,contact,idCard,bussinessId,bussinessName,service,queueNo,takeTime,callTime,monitorTime,monitorDeviceIds,monitorDevice,waitTime,processStatus,careCount,assessment,createTime,createUserId,updateTime,updateUserId,smsCount,waitId)
VALUES
(#{siteId},#{siteName},#{personId},#{name},#{contact},#{idCard},#{bussinessId},#{bussinessName},#{service},#{queueNo},#{takeTime},#{callTime},#{monitorTime},#{monitorDeviceIds},#{monitorDevice},#{waitTime},#{processStatus},#{careCount},#{assessment},#{createTime},#{createUserId},#{updateTime},#{updateUserId},#{smsCount})
(#{siteId},#{siteName},#{personId},#{name},#{contact},#{idCard},#{bussinessId},#{bussinessName},#{service},#{queueNo},#{takeTime},#{callTime},#{monitorTime},#{monitorDeviceIds},#{monitorDevice},#{waitTime},#{processStatus},#{careCount},#{assessment},#{createTime},#{createUserId},#{updateTime},#{updateUserId},#{smsCount},#{waitId})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_care_records
(siteId,siteName,personId,name,contact,idCard,bussinessId,bussinessName,service,queueNo,takeTime,callTime,monitorTime,monitorDeviceIds,monitorDevice,waitTime,processStatus,careCount,assessment,createTime,createUserId,updateTime,updateUserId,smsCount)
(siteId,siteName,personId,name,contact,idCard,bussinessId,bussinessName,service,queueNo,takeTime,callTime,monitorTime,monitorDeviceIds,monitorDevice,waitTime,processStatus,careCount,assessment,createTime,createUserId,updateTime,updateUserId,smsCount,waitId)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.siteId},#{item.siteName},#{item.personId},#{item.name},#{item.contact},#{item.idCard},#{item.bussinessId},#{item.bussinessName},#{item.service},#{item.queueNo},#{item.takeTime},#{item.callTime},#{item.monitorTime},#{item.monitorDeviceIds},#{item.monitorDevice},#{item.waitTime},#{item.processStatus},#{item.careCount},#{item.assessment},#{item.createTime},#{item.createUserId},#{item.updateTime},#{item.updateUserId},#{item.smsCount})
(#{item.siteId},#{item.siteName},#{item.personId},#{item.name},#{item.contact},#{item.idCard},#{item.bussinessId},#{item.bussinessName},#{item.service},#{item.queueNo},#{item.takeTime},#{item.callTime},#{item.monitorTime},#{item.monitorDeviceIds},#{item.monitorDevice},#{item.waitTime},#{item.processStatus},#{item.careCount},#{item.assessment},#{item.createTime},#{item.createUserId},#{item.updateTime},#{item.updateUserId},#{item.smsCount},#{item.waitId})
</foreach>
</insert>
......@@ -234,6 +238,12 @@
<if test="(colPickMode==0 and data.containsKey('smsCountIncrement')) or (colPickMode==1 and !data.containsKey('smsCountIncrement'))">
a.smsCount=ifnull(a.smsCount,0) + #{data.smsCountIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('waitId')) or (colPickMode==1 and !data.containsKey('waitId'))">
a.waitId=#{data.waitId},
</if>
<if test="(colPickMode==0 and data.containsKey('waitIdIncrement')) or (colPickMode==1 and !data.containsKey('waitIdIncrement'))">
a.waitId=ifnull(a.waitId,0) + #{data.waitIdIncrement},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -454,6 +464,18 @@
</choose>
</foreach>
</trim>
<trim prefix="waitId=(case" suffix="ELSE waitId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('waitId')) or (colPickMode==1 and !item.containsKey('waitId'))">
when a.id=#{item.id} then #{item.waitId}
</when>
<when test="(colPickMode==0 and item.containsKey('waitIdIncrement')) or (colPickMode==1 and !item.containsKey('waitIdIncrement'))">
when a.id=#{item.id} then ifnull(a.waitId,0) + #{item.waitIdIncrement}
</when>
</choose>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -1119,6 +1141,33 @@
${_conditionType_} a.smsCount <![CDATA[ <= ]]> #{${_conditionParam_}.smsCountEnd}
</if>
<if test="conditionParamRef.containsKey('waitId')">
<if test="conditionParamRef.waitId != null ">
${_conditionType_} a.waitId = #{${_conditionParam_}.waitId}
</if>
<if test="conditionParamRef.waitId == null">
${_conditionType_} a.waitId is null
</if>
</if>
<if test="conditionParamRef.containsKey('waitIdList') and conditionParamRef.waitIdList.size() > 0">
${_conditionType_} a.waitId in
<foreach collection="conditionParamRef.waitIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('waitIdNotList') and conditionParamRef.waitIdNotList.size() > 0">
${_conditionType_} a.waitId not in
<foreach collection="conditionParamRef.waitIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('waitIdStart') and conditionParamRef.waitIdStart != null">
${_conditionType_} a.waitId <![CDATA[ >= ]]> #{${_conditionParam_}.waitIdStart}
</if>
<if test="conditionParamRef.containsKey('waitIdEnd') and conditionParamRef.waitIdEnd != null">
${_conditionType_} a.waitId <![CDATA[ <= ]]> #{${_conditionParam_}.waitIdEnd}
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -1257,6 +1306,11 @@
<if test='orderCol.smsCount != null and "DESC".equalsIgnoreCase(orderCol.smsCount)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('waitId')">
a.waitId
<if test='orderCol.waitId != null and "DESC".equalsIgnoreCase(orderCol.waitId)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
......
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