|
@ -1,18 +1,28 @@
|
|
|
package com.yihu.wlyy.service.synergy;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.yihu.wlyy.entity.*;
|
|
|
import com.yihu.wlyy.entity.call.CallRecord;
|
|
|
import com.yihu.wlyy.entity.synergy.*;
|
|
|
import com.yihu.wlyy.repository.*;
|
|
|
import com.yihu.wlyy.repository.survey.SurveyTemplateDao;
|
|
|
import com.yihu.wlyy.repository.synergy.*;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
|
import com.yihu.wlyy.util.HttpClientUtil;
|
|
|
import com.yihu.wlyy.util.IdCardUtil;
|
|
|
import com.yihu.wlyy.util.fastdfs.FastDFSUtil;
|
|
|
import com.yihu.wlyy.util.query.BaseJpaService;
|
|
|
import jxl.Workbook;
|
|
|
import jxl.write.*;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.http.HttpEntity;
|
|
|
import org.apache.http.HttpResponse;
|
|
|
import org.apache.http.client.methods.HttpPost;
|
|
|
import org.apache.http.entity.ContentType;
|
|
|
import org.apache.http.entity.mime.MultipartEntityBuilder;
|
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
import org.apache.http.impl.client.HttpClientBuilder;
|
|
|
import org.apache.http.util.EntityUtils;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@ -20,9 +30,14 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
import java.nio.charset.Charset;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
@ -62,11 +77,9 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
@Autowired
|
|
|
private ManageSynergyWorkorderServicerLogDao manageSynergyWorkorderServicerLogDao;
|
|
|
@Autowired
|
|
|
private TownDao townDao;
|
|
|
private SurveyTemplateDao surveyTemplateDao;
|
|
|
@Autowired
|
|
|
private FastDFSUtil fastDFSUtil;
|
|
|
@Autowired
|
|
|
private ManageCustomerOnlineRecordDao manageCustomerOnlineRecordDao;
|
|
|
private ManageSynergyAccessoryDao manageSynergyAccessoryDao;
|
|
|
|
|
|
/**
|
|
|
* 根据服务编码获取工单
|
|
@ -226,6 +239,10 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
case 4: workorderTypeName="问卷调查";break;
|
|
|
case 5: workorderTypeName="疾病筛查";break;
|
|
|
}
|
|
|
if(workorderTypeR==0||workorderTypeR==2||workorderTypeR==3){
|
|
|
List<ManageSynergyWorkorderServicerDO> ls = workorderServicerDao.findByWorkorderCode(workorderCode);
|
|
|
map.put("patientCode",ls.size()>0?ls.get(0):null);//1对1服务工单,服务对象code
|
|
|
}
|
|
|
map.put("typeName",workorderTypeName);//服务类型名称
|
|
|
map.put("serviceTime", DateUtil.dateToStr((Date)one.get("service_time"),"yyyy-MM-dd HH:mm"));//服务时间
|
|
|
map.put("priority",one.get("priority"));//工单优先级
|
|
@ -338,6 +355,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
map.put("serviceTime", s.format(workorderDO.getServiceTime()));
|
|
|
map.put("status", status);
|
|
|
map.put("title", workorderDO.getRelationCodeName());
|
|
|
map.put("relationCode", workorderDO.getRelationCode());
|
|
|
map.put("remark", workorderDO.getRemark());
|
|
|
map.put("createTime", sdf.format(workorderDO.getCreateTime()));
|
|
|
map.put("createUserName", workorderDO.getCreateUserName());
|
|
@ -360,6 +378,16 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
map.put("servicerKey", workorderDO.getServicerKey());
|
|
|
map.put("servicerCount", workorderDO.getServicerCount());
|
|
|
}
|
|
|
//如果是随访,查出对象的信息
|
|
|
if(workorderDO.getType() == 3){
|
|
|
List<ManageSynergyWorkorderServicerDO> workorderServicerDO = workorderServicerDao.findByWorkorderCode(workorderCode);
|
|
|
map.put("patientName", workorderServicerDO.get(0).getServicePatientName());
|
|
|
map.put("idcard", workorderServicerDO.get(0).getIdcard());
|
|
|
map.put("ssc", workorderServicerDO.get(0).getSsc());
|
|
|
}else if(workorderDO.getType() == 5) {
|
|
|
String diseaseType = surveyTemplateDao.findByCode(workorderDO.getRelationCode());
|
|
|
map.put("diseaseType", diseaseType);
|
|
|
}
|
|
|
|
|
|
//超时标签
|
|
|
map.put("delayStatus", this.isServiceOverTime(workorderDO.getServiceTime()));
|
|
@ -402,6 +430,8 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
//获取退回原因
|
|
|
map.put("returnedRemark", workorderDO.getReturnedRemark());
|
|
|
}
|
|
|
List<ManageSynergyAccessoryDO> accessoryList = accessoryList(workorderCode);
|
|
|
map.put("accessoryList",accessoryList);//附件列表
|
|
|
return map;
|
|
|
}
|
|
|
|
|
@ -509,6 +539,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
resultMap.put("doctorCode",workorderMap.get("create_user"));//创建人(医生)code
|
|
|
//获取提交记录
|
|
|
String servicerCode = workorderMap.get("servicerCode")+"";
|
|
|
resultMap.put("servicerCode", servicerCode);
|
|
|
List<ManageSynergyWorkorderServicerLogDO> list = manageSynergyWorkorderServicerLogDao.findByWorkorderServiceCode(servicerCode);
|
|
|
if(list.size()>0){
|
|
|
ManageSynergyWorkorderServicerLogDO log = list.get(0);
|
|
@ -594,7 +625,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
* @param type
|
|
|
*/
|
|
|
public void sendMessage(ManageSynergyWorkorderDO workorderDO, User user, Integer type){
|
|
|
String url = wlyyUrl + "doctor/message/sendMessage";
|
|
|
String url = wlyyUrl + "third/synergy/sendMessage";
|
|
|
//组装message内容
|
|
|
JSONObject message = new JSONObject();
|
|
|
if(type == 24){
|
|
@ -610,7 +641,17 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
}
|
|
|
//组装jsonObject内容
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("type", workorderDO.getType());
|
|
|
Integer servicerType = workorderDO.getType();
|
|
|
//协同服务类型
|
|
|
if(servicerType == 1){
|
|
|
jsonObject.put("type", "健康教育");
|
|
|
}else if(servicerType == 3){
|
|
|
jsonObject.put("type", "随访");
|
|
|
}else if(servicerType == 4){
|
|
|
jsonObject.put("type", "调查问卷");
|
|
|
}else if(servicerType == 5){
|
|
|
jsonObject.put("type", "疾病筛查");
|
|
|
}
|
|
|
if(type == 26){
|
|
|
jsonObject.put("returnedRemark", workorderDO.getReturnedRemark());
|
|
|
}else if(type == 25){
|
|
@ -834,7 +875,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
if(receiveType==1){
|
|
|
sql =" select DISTINCT r.* from manage_synergy_workorder_reminder r " +
|
|
|
" LEFT JOIN manage_synergy_workorder_executor e on r.workorder_code=e.workorder_code " +
|
|
|
" where e.executor_code='' and e.del=1 and r.deal_with=0 " +sort;
|
|
|
" where e.executor_code='"+userCode+"' and e.del=1 and r.deal_with=0 " +sort;
|
|
|
}else if(receiveType==2){
|
|
|
sql =" select r.* from manage_synergy_workorder_reminder r where r.principal_code='"+userCode+"' and r.deal_with=0 "+sort;
|
|
|
}
|
|
@ -843,7 +884,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
for(Map<String,Object> one:List){
|
|
|
Map<String,Object> resultMap = new HashMap<>();
|
|
|
resultMap.put("workorderCode",one.get("workorder_code"));
|
|
|
resultMap.put("title","来自"+one.get("create_user_name")+"医生("+one.get("hospital_name")+")催单,请尽快处理(服务编号:)"+one.get("workorder_code"));//标题
|
|
|
resultMap.put("title","来自"+one.get("create_user_name")+"医生("+one.get("hospital_name")+")催单,请尽快处理(服务编号:"+one.get("workorder_code")+")");//标题
|
|
|
String workorderTypeName ="";
|
|
|
Integer workorderType = (Integer) one.get("workorder_type");
|
|
|
switch (workorderType){
|
|
@ -886,11 +927,104 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
servicerDO.setWorkorderCode(manageSynergyWorkorderDO1.getCode());
|
|
|
servicerDO.setRelationCode(manageSynergyWorkorderDO1.getRelationCode());
|
|
|
servicerDO.setCreateTime(new Date());
|
|
|
servicerDO.setStatus(1);
|
|
|
servicerDO.setCode(getCode());
|
|
|
servicerDO.setRelationCodeName(manageSynergyWorkorderDO1.getRelationCodeName());
|
|
|
workorderServicerDao.save(servicerDO);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public String findByPatient(String patient){
|
|
|
String response = null;
|
|
|
String url = wlyyUrl + "third/synergy/findByPatient";
|
|
|
Map<String,String> params = new HashMap<>();
|
|
|
params.put("patient",patient);
|
|
|
try {
|
|
|
response = httpClientUtil.httpPost(url, params);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取随访数据
|
|
|
*
|
|
|
* @param id
|
|
|
* @param followupProject
|
|
|
* @return
|
|
|
*/
|
|
|
public String getFollowupProjectData(String id,String followupProject){
|
|
|
String response = null;
|
|
|
String url = wlyyUrl + "third/synergy/getFollowupProjectData";
|
|
|
Map<String,String> params = new HashMap<>();
|
|
|
params.put("id",id);
|
|
|
params.put("followupProject",followupProject);
|
|
|
String data = null;
|
|
|
try {
|
|
|
response = httpClientUtil.httpPost(url, params);
|
|
|
com.alibaba.fastjson.JSONObject object = JSON.parseObject(response);
|
|
|
if(object.getInteger("status")==200){
|
|
|
data = object.getJSONObject("data").toJSONString();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 药品列表
|
|
|
*
|
|
|
* @param name
|
|
|
* @param isinsulin
|
|
|
* @return
|
|
|
*/
|
|
|
public String findDictByName(String name,String isinsulin,String doctor){
|
|
|
String response = null;
|
|
|
String url = wlyyUrl + "third/synergy/findDictByName";
|
|
|
Map<String,String> params = new HashMap<>();
|
|
|
params.put("name",name);
|
|
|
params.put("isinsulin",isinsulin);
|
|
|
params.put("doctor",doctor);
|
|
|
String data = null;
|
|
|
try {
|
|
|
response = httpClientUtil.httpPost(url, params);
|
|
|
com.alibaba.fastjson.JSONObject object = JSON.parseObject(response);
|
|
|
if(object.getInteger("status")==200){
|
|
|
data = object.getJSONArray("data").toJSONString();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 保存药品
|
|
|
*
|
|
|
* @param id
|
|
|
* @param drugsData
|
|
|
* @return
|
|
|
*/
|
|
|
public String saveFollowupDrugs(String id,String drugsData){
|
|
|
String response = null;
|
|
|
String url = wlyyUrl + "third/synergy/saveFollowupDrugs";
|
|
|
Map<String,String> params = new HashMap<>();
|
|
|
params.put("id",id);
|
|
|
params.put("drugsData",drugsData);
|
|
|
String data = null;
|
|
|
try {
|
|
|
response = httpClientUtil.httpPost(url, params);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 添加随访计划
|
|
@ -905,14 +1039,13 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
*/
|
|
|
public String addFollowup(String doctor,String patient, String date, String followupType,String followupClass,String followupManagerStatus,String plandate){
|
|
|
String response = null;
|
|
|
String url = wlyyUrl + "followup/addFollowup";
|
|
|
String url = wlyyUrl + "third/synergy/addFollowup";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("doctor",doctor);
|
|
|
params.put("patient",patient);
|
|
|
params.put("date",date);
|
|
|
params.put("followupType",followupType);
|
|
|
params.put("followupClass",followupClass);
|
|
|
params.put("followupManagerStatus",followupManagerStatus);
|
|
|
params.put("plandate",plandate);
|
|
|
try {
|
|
|
response = httpClientUtil.post(url, params);
|
|
@ -925,14 +1058,15 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
|
|
|
/**
|
|
|
* 保存随访数据
|
|
|
*
|
|
|
* @param id
|
|
|
* @param followup
|
|
|
* @return
|
|
|
*/
|
|
|
public String saveFollowupProjectData(String followup){
|
|
|
public String saveFollowupProjectData(String id,String followup){
|
|
|
String response = null;
|
|
|
String url = wlyyUrl + "followup/saveFollowupProjectData";
|
|
|
String url = wlyyUrl + "third/synergy/saveFollowupProjectData";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("id",id);
|
|
|
params.put("followup",followup);
|
|
|
try {
|
|
|
response = httpClientUtil.post(url, params);
|
|
@ -944,11 +1078,25 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
public void taskSubmit(String workorderCode,String dealResultRemark,String dealResultAccessory) throws Exception{
|
|
|
|
|
|
public void taskSubmit(String workorderCode,String dealResultRemark,String accessoryJson) throws Exception{
|
|
|
JSONArray jsonArray = new JSONArray(accessoryJson);
|
|
|
String fileName;
|
|
|
String url;
|
|
|
List<ManageSynergyAccessoryDO> accessoryList = new ArrayList<>();
|
|
|
for(int i=0;i<jsonArray.length();i++){
|
|
|
fileName = jsonArray.getJSONObject(i).get("name")+"";
|
|
|
url = jsonArray.getJSONObject(i).get("url")+"";
|
|
|
ManageSynergyAccessoryDO manageSynergyAccessoryDO = new ManageSynergyAccessoryDO();
|
|
|
manageSynergyAccessoryDO.setCode(getCode());
|
|
|
manageSynergyAccessoryDO.setDel(0);
|
|
|
manageSynergyAccessoryDO.setName(fileName);
|
|
|
manageSynergyAccessoryDO.setUrl(url);
|
|
|
manageSynergyAccessoryDO.setWorkorderCode(workorderCode);
|
|
|
accessoryList.add(manageSynergyAccessoryDO);
|
|
|
}
|
|
|
manageSynergyAccessoryDao.save(accessoryList);
|
|
|
ManageSynergyWorkorderDO manageSynergyWorkorderDO = workOrderDao.findByCode(workorderCode);
|
|
|
manageSynergyWorkorderDO.setDealResultRemark(dealResultRemark);
|
|
|
manageSynergyWorkorderDO.setDealResultAccessory(dealResultAccessory);
|
|
|
manageSynergyWorkorderDO.setStatus(3);
|
|
|
workOrderDao.save(manageSynergyWorkorderDO);
|
|
|
}
|
|
@ -1184,6 +1332,8 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
String sql ="SELECT" +
|
|
|
" s.create_time," +
|
|
|
" s.service_patient_name," +
|
|
|
" s.workorder_code,"+
|
|
|
" s.workorder_type,"+
|
|
|
" w.priority," +
|
|
|
" w.relation_code," +
|
|
|
" w.relation_code_name," +
|
|
@ -1235,15 +1385,30 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
}
|
|
|
}
|
|
|
//求总时长
|
|
|
int seconds = totalTaklTime(waihudList);
|
|
|
//求平均时长
|
|
|
map.put("waihuAvgTalkTime",getAvgTime(seconds,waihudList.size()));
|
|
|
if (waihudList.size()>0){
|
|
|
int seconds = totalTaklTime(waihudList);
|
|
|
//求平均时长
|
|
|
map.put("waihuAvgTalkTime",getAvgTime(seconds,waihudList.size()));
|
|
|
}else {
|
|
|
map.put("waihuAvgTalkTime",0);
|
|
|
}
|
|
|
|
|
|
map.put("waihuCount",waihudList.size());
|
|
|
map.put("waihuCustomerNoCount",customerNoCount);
|
|
|
|
|
|
//--------------今日在线时长-----------------//
|
|
|
|
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
|
|
|
String lineSql="SELECT" +
|
|
|
" *" +
|
|
|
" FROM" +
|
|
|
" `manage_customer_online_record`" +
|
|
|
" WHERE" +
|
|
|
" customer_code ='"+userCode+"'" +
|
|
|
" AND create_time >='"+startTime+"'" +
|
|
|
" AND create_time <='"+endTime+"'" +
|
|
|
" ORDER BY" +
|
|
|
" create_time";
|
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = jdbcTemplate.query(lineSql,new BeanPropertyRowMapper<>(ManageCustomerOnlineRecordDO.class));
|
|
|
//如果最新一条是离线则直接获取总在线时长就是在线时间,
|
|
|
// 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
|
|
|
Map<String,Object> lineMap = getOnlineAndNotOnlineAndNowOnline(manageCustomerOnlineRecordDOList);
|
|
@ -1254,7 +1419,10 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
//求总时长
|
|
|
int jieruTotalSecond = totalTaklTime(jieruList);
|
|
|
//求平均时长
|
|
|
map.put("jieruAvgTalkTime",getAvgTime(jieruTotalSecond,jieruList.size()));
|
|
|
if (jieruList.size()>0){
|
|
|
map.put("jieruAvgTalkTime",getAvgTime(jieruTotalSecond,jieruList.size()));
|
|
|
}
|
|
|
map.put("jieruAvgTalkTime",0);
|
|
|
map.put("jieruCount",jieruList.size());
|
|
|
|
|
|
//--------------今日协同任务完成数-----------------//
|
|
@ -1277,7 +1445,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
" executor_code = '"+userCode+"'" +
|
|
|
" AND executor_type = 2" +
|
|
|
" AND `status`<3";
|
|
|
Map<String,Object> weiwanchenMap = jdbcTemplate.queryForMap(wanchenSql);
|
|
|
Map<String,Object> weiwanchenMap = jdbcTemplate.queryForMap(weiwanchenSql);
|
|
|
String fasongSql="SELECT" +
|
|
|
" COUNT(*) AS fasongCount" +
|
|
|
" FROM" +
|
|
@ -1298,46 +1466,54 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
|
|
|
public Map<String,Object> getOnlineAndNotOnlineAndNowOnline(List<ManageCustomerOnlineRecordDO> list){
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
//如果最新一条是离线则直接获取总在线时长就是在线时间,
|
|
|
// 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
|
|
|
int status = list.get(list.size()-1).getStatus();
|
|
|
String firstOnlineTime = DateUtil.dateToStr(list.get(0).getCreateTime(),DateUtil.YYYY_MM_DD_HH_MM_SS);
|
|
|
int totalOnlineMinute=0;
|
|
|
int totalNotOnlineMinute =0;
|
|
|
int toMinute = 0;
|
|
|
//离线status==2
|
|
|
if (status==2){
|
|
|
totalOnlineMinute =list.get(list.size()-1).getTotalOnlineTime();
|
|
|
long allTime = list.get(list.size()-1).getCreateTime().getTime()-list.get(0).getCreateTime().getTime();
|
|
|
totalNotOnlineMinute= Integer.valueOf(String.valueOf(allTime/1000/60))-totalOnlineMinute;
|
|
|
}
|
|
|
//在线status==1
|
|
|
if (status==1){
|
|
|
//只有一条在线的数据,用当前时间减去数据创建时间
|
|
|
long onlineDate = 0L;
|
|
|
long allDateTime = 0L;
|
|
|
int lastOnlineTime =0;
|
|
|
Date now = new Date();
|
|
|
onlineDate = now.getTime()-list.get(list.size()-1).getCreateTime().getTime();
|
|
|
allDateTime = now.getTime()-list.get(0).getCreateTime().getTime();
|
|
|
toMinute = Integer.valueOf(String.valueOf(onlineDate/1000/60));
|
|
|
//多条数据,要加上上一次记录的在线时长
|
|
|
if(list.size()>1){
|
|
|
int notOnlineCount=0;
|
|
|
for (ManageCustomerOnlineRecordDO m : list){
|
|
|
if (m.getStatus()==2 && notOnlineCount<1){
|
|
|
notOnlineCount++;
|
|
|
lastOnlineTime = m.getTotalOnlineTime();
|
|
|
if (list!=null && list.size()>0){
|
|
|
//如果最新一条是离线则直接获取总在线时长就是在线时间,
|
|
|
// 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
|
|
|
int status = list.get(list.size()-1).getStatus();
|
|
|
String firstOnlineTime = DateUtil.dateToStr(list.get(0).getCreateTime(),DateUtil.YYYY_MM_DD_HH_MM_SS);
|
|
|
int totalOnlineMinute=0;
|
|
|
int totalNotOnlineMinute =0;
|
|
|
int toMinute = 0;
|
|
|
//离线status==2
|
|
|
if (status==2){
|
|
|
totalOnlineMinute =list.get(list.size()-1).getTotalOnlineTime();
|
|
|
long allTime = list.get(list.size()-1).getCreateTime().getTime()-list.get(0).getCreateTime().getTime();
|
|
|
totalNotOnlineMinute= Integer.valueOf(String.valueOf(allTime/1000/60))-totalOnlineMinute;
|
|
|
}
|
|
|
//在线status==1
|
|
|
if (status==1){
|
|
|
//只有一条在线的数据,用当前时间减去数据创建时间
|
|
|
long onlineDate = 0L;
|
|
|
long allDateTime = 0L;
|
|
|
int lastOnlineTime =0;
|
|
|
Date now = new Date();
|
|
|
onlineDate = now.getTime()-list.get(list.size()-1).getCreateTime().getTime();
|
|
|
allDateTime = now.getTime()-list.get(0).getCreateTime().getTime();
|
|
|
toMinute = Integer.valueOf(String.valueOf(onlineDate/1000/60));
|
|
|
//多条数据,要加上上一次记录的在线时长
|
|
|
if(list.size()>1){
|
|
|
int notOnlineCount=0;
|
|
|
for (ManageCustomerOnlineRecordDO m : list){
|
|
|
if (m.getStatus()==2 && notOnlineCount<1){
|
|
|
notOnlineCount++;
|
|
|
lastOnlineTime = m.getTotalOnlineTime();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
totalOnlineMinute=toMinute+lastOnlineTime;
|
|
|
totalNotOnlineMinute = Integer.valueOf(String.valueOf(allDateTime/1000/60))-totalOnlineMinute;
|
|
|
}
|
|
|
totalOnlineMinute=toMinute+lastOnlineTime;
|
|
|
totalNotOnlineMinute = Integer.valueOf(String.valueOf(allDateTime/1000/60))-totalOnlineMinute;
|
|
|
map.put("notOnline",totalNotOnlineMinute);
|
|
|
map.put("online",totalOnlineMinute);
|
|
|
map.put("nowOnline",toMinute);
|
|
|
map.put("firstOnlineTime",firstOnlineTime);
|
|
|
}else {
|
|
|
map.put("notOnline",0);
|
|
|
map.put("online",0);
|
|
|
map.put("nowOnline",0);
|
|
|
map.put("firstOnlineTime","");
|
|
|
}
|
|
|
map.put("notOnline",totalNotOnlineMinute);
|
|
|
map.put("online",totalOnlineMinute);
|
|
|
map.put("nowOnline",toMinute);
|
|
|
map.put("firstOnlineTime",firstOnlineTime);
|
|
|
|
|
|
return map;
|
|
|
}
|
|
|
|
|
@ -1353,16 +1529,18 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
for(CallRecord callRecord : list){
|
|
|
if (callRecord.getAnswerStatus()==1){
|
|
|
String talkTime = callRecord.getTalkTime();
|
|
|
String[] talkTimeStr = talkTime.split(":");
|
|
|
for (int i=0;i<talkTimeStr.length;i++){
|
|
|
if (i==0){
|
|
|
hours += Integer.valueOf(talkTimeStr[i]);
|
|
|
}
|
|
|
if (i==1){
|
|
|
minutes += Integer.valueOf(talkTimeStr[i]);
|
|
|
}
|
|
|
if (i==2){
|
|
|
seconds += Integer.valueOf(talkTimeStr[i]);
|
|
|
if (StringUtils.isNotBlank(talkTime)){
|
|
|
String[] talkTimeStr = talkTime.split(":");
|
|
|
for (int i=0;i<talkTimeStr.length;i++){
|
|
|
if (i==0){
|
|
|
hours += Integer.valueOf(talkTimeStr[i]);
|
|
|
}
|
|
|
if (i==1){
|
|
|
minutes += Integer.valueOf(talkTimeStr[i]);
|
|
|
}
|
|
|
if (i==2){
|
|
|
seconds += Integer.valueOf(talkTimeStr[i]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@ -1416,11 +1594,85 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
// System.out.println(aa);
|
|
|
// System.out.println(a.substring(0,aa));
|
|
|
// }
|
|
|
public void wordToPDF(String path) throws Exception{
|
|
|
String groupName = path.substring(0,path.lastIndexOf("/"));
|
|
|
String remoteFileName =path.substring(path.lastIndexOf("/"),path.length()-1);
|
|
|
byte[] bb =FastDFSUtil.download(groupName,remoteFileName);
|
|
|
// public void wordToPDF(String path) throws Exception{
|
|
|
// String groupName = path.substring(0,path.lastIndexOf("/"));
|
|
|
// String remoteFileName =path.substring(path.lastIndexOf("/"),path.length()-1);
|
|
|
// byte[] bb =FastDFSUtil.download(groupName,remoteFileName);
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
@Transactional
|
|
|
public Map<String,Object> uploadAccessory(HttpServletRequest request) throws Exception{
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
|
|
MultipartFile multipartFile = multipartRequest.getFile("file");
|
|
|
long size = multipartFile.getSize();
|
|
|
if(size<=0){
|
|
|
map.put("uploadStatus",1);//size小于0
|
|
|
map.put("accessoryUrl",null);//
|
|
|
return map;
|
|
|
}
|
|
|
String fileName = multipartFile.getOriginalFilename();
|
|
|
String[] fs = fileName.split("\\.");
|
|
|
String type = fs[1];
|
|
|
//图片常见格式:bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp
|
|
|
List img = new ArrayList(Arrays.asList("bmp","jpg","png","tif","gif","pcx","tga","exif","fpx","svg","psd","cdr","pcd","dxf","ufo","eps","ai","raw","WMF","webp"));
|
|
|
if(!("doc".equals(type)||"docx".equals(type)||"xls".equals(type)||"xlsx".equals(type)||img.contains(type))){
|
|
|
map.put("uploadStatus",2);//文件类型不对
|
|
|
map.put("accessoryUrl",null);//
|
|
|
return map;
|
|
|
}
|
|
|
String response = request(wlyyUrl + "/upload/chat", multipartFile, null);
|
|
|
JSONObject rs = new JSONObject(response);
|
|
|
Integer status =(Integer)rs.get("status");
|
|
|
if(status==200){
|
|
|
String url = rs.get("urls")+"";
|
|
|
map.put("uploadStatus",0);//文件类型正确
|
|
|
map.put("accessory",url);//
|
|
|
return map;
|
|
|
}
|
|
|
throw new Exception();
|
|
|
}
|
|
|
|
|
|
public List<ManageSynergyAccessoryDO> accessoryList(String workorderCode){
|
|
|
|
|
|
List<ManageSynergyAccessoryDO> list = manageSynergyAccessoryDao.findByWorkorderCode(workorderCode);
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
|
|
|
public String request(String remote_url, MultipartFile file, String type) {
|
|
|
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
|
|
|
String result = "";
|
|
|
try {
|
|
|
String fileName = file.getOriginalFilename();
|
|
|
HttpPost httpPost = new HttpPost(remote_url);
|
|
|
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
|
|
|
builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
|
|
|
builder.addTextBody("filename", fileName);// 类似浏览器表单提交,对应input的name和value
|
|
|
if (!org.springframework.util.StringUtils.isEmpty(type)) {
|
|
|
builder.addTextBody("type", type); //发送类型
|
|
|
}
|
|
|
HttpEntity entity = builder.build();
|
|
|
httpPost.setEntity(entity);
|
|
|
HttpResponse response = httpClient.execute(httpPost);// 执行提交
|
|
|
HttpEntity responseEntity = response.getEntity();
|
|
|
if (responseEntity != null) {
|
|
|
// 将响应内容转换为字符串
|
|
|
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
|
|
|
}
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
try {
|
|
|
httpClient.close();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public Map<String,Object> adminIndex(){
|
|
@ -1442,6 +1694,8 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
" AND r.create_time <= '"+endTime+"'";
|
|
|
|
|
|
//正在咨询人数
|
|
|
String consultSql="SELECT COUNT(*) consultNum FROM manage_call_record WHERE answer_status=1 AND (end_time IS NULL or end_time ='')";
|
|
|
map.put("consultNum",jdbcTemplate.queryForMap(consultSql).get("consultNum"));
|
|
|
|
|
|
//当前客服人数
|
|
|
map.put("onlineNowCount",userList.size());
|
|
@ -1484,11 +1738,11 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
" COUNT(*) AS weiwanchengCount" +
|
|
|
" FROM" +
|
|
|
" `manage_synergy_workorder_servicer` s" +
|
|
|
"LEFT JOIN wlyy_user u ON s.executor_code = u.`code`" +
|
|
|
" LEFT JOIN wlyy_user u ON s.executor_code = u.`code`" +
|
|
|
" WHERE" +
|
|
|
" executor_type = 2" +
|
|
|
" AND `status`<3";
|
|
|
Map<String,Object> weiwanchenMap = jdbcTemplate.queryForMap(wanchenSql);
|
|
|
Map<String,Object> weiwanchenMap = jdbcTemplate.queryForMap(weiwanchenSql);
|
|
|
String fasongSql="SELECT" +
|
|
|
" COUNT(*) AS fasongCount" +
|
|
|
" FROM" +
|
|
@ -1497,7 +1751,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
" s.*, w.create_user," +
|
|
|
" w.create_user_name" +
|
|
|
" FROM" +
|
|
|
" manage_synergy_workorder_servicer s" +
|
|
|
" manage_synergy_workorder_servicer s" +
|
|
|
" LEFT JOIN manage_synergy_workorder w ON s.workorder_code = w.`code`" +
|
|
|
" WHERE" +
|
|
|
" w.create_user_type = 2" +
|
|
@ -1560,12 +1814,12 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
|
String startTime=today+" 00:00:00";
|
|
|
String endTime = today+" 23:59:59";
|
|
|
startTime="2017-11-15 00:00:00";
|
|
|
endTime="2017-11-22 23:59:59";
|
|
|
/*startTime="2017-11-15 00:00:00";
|
|
|
endTime="2017-11-22 23:59:59";*/
|
|
|
String sql="SELECT" +
|
|
|
" u.`code`,"+
|
|
|
" u.`name`," +
|
|
|
" u.`online`," +
|
|
|
" u.`online` as onlineType," +
|
|
|
" r.type," +
|
|
|
" COUNT(*) as num"+
|
|
|
" FROM" +
|
|
@ -1590,7 +1844,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
Map<String,Object> resultMap = new HashMap<>();
|
|
|
resultMap.put("userCode",userCode);
|
|
|
resultMap.put("userName",map.get("name"));
|
|
|
resultMap.put("online",map.get("online"));
|
|
|
resultMap.put("onlineType",map.get("online"));
|
|
|
if ("1".equals(type)){
|
|
|
resultMap.put("jieruCount",map.get("num"));
|
|
|
resultMap.put("waihuCount",0);
|
|
@ -1616,7 +1870,7 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
Map<String,Object> resultMap = new HashMap<>();
|
|
|
resultMap.put("userCode",userCode);
|
|
|
resultMap.put("userName",map.get("name"));
|
|
|
resultMap.put("online",map.get("online"));
|
|
|
resultMap.put("onlineType",map.get("onlineType"));
|
|
|
if ("1".equals(type)){
|
|
|
resultMap.put("jieruCount",map.get("num"));
|
|
|
resultMap.put("waihuCount",0);
|
|
@ -1632,8 +1886,18 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
}
|
|
|
for (Map<String,Object> reMap : resultList){
|
|
|
String userCode = String.valueOf(reMap.get("userCode"));
|
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
|
|
|
//如果最新一条是离线则直接获取总在线时长就是在线时间,
|
|
|
String lineSql="SELECT" +
|
|
|
" *" +
|
|
|
" FROM" +
|
|
|
" `manage_customer_online_record`" +
|
|
|
" WHERE" +
|
|
|
" customer_code ='"+userCode+"'" +
|
|
|
" AND create_time >='"+startTime+"'" +
|
|
|
" AND create_time <='"+endTime+"'" +
|
|
|
" ORDER BY" +
|
|
|
" create_time";
|
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = jdbcTemplate.query(lineSql,new BeanPropertyRowMapper<>(ManageCustomerOnlineRecordDO.class));
|
|
|
//如果最新一条是离线则直接获取总在线时长就是在线时间
|
|
|
// 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
|
|
|
Map<String,Object> lineMap = getOnlineAndNotOnlineAndNowOnline(manageCustomerOnlineRecordDOList);
|
|
|
reMap.putAll(lineMap);
|
|
@ -1641,4 +1905,29 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
return resultList;
|
|
|
}
|
|
|
|
|
|
public List<User> getCustomers() {
|
|
|
return userDao.findAllCustomer();
|
|
|
}
|
|
|
|
|
|
public void deleteFile(String storagePath) throws Exception{
|
|
|
Map<String,Object> params = new HashMap<>();
|
|
|
params.put("storagePath",storagePath);
|
|
|
String response = httpClientUtil.post(wlyyUrl + "/upload/deleteFile", params);
|
|
|
JSONObject jsonObject = new JSONObject(response);
|
|
|
Integer status = (Integer) jsonObject.get("status");
|
|
|
if(status!=200){
|
|
|
throw new Exception();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public JSONObject getArticalById(String articalId) throws Exception{
|
|
|
String response = httpClientUtil.get(wlyyUrl + "/third/synergy/getArticalById?articleId="+articalId,"UTF-8");
|
|
|
JSONObject jsonObject = new JSONObject(response);
|
|
|
Integer status = (Integer) jsonObject.get("status");
|
|
|
if(status==200){
|
|
|
return jsonObject.getJSONObject("data");
|
|
|
}
|
|
|
throw new Exception();
|
|
|
|
|
|
}
|
|
|
}
|