ifishSystem/src/main/java/com/ifish/serviceImpl/AdminServiceImpl.java

3081 lines
138 KiB
Java

package com.ifish.serviceImpl;
import java.io.File;
import java.text.Format;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import com.ifish.entity.*;
import com.ifish.entity.event.QueueEventBody;
import com.ifish.entity.event.QueueEventEntity;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ifish.dao.CameraActiveDao;
import com.ifish.dao.CameraDao;
import com.ifish.dao.CameraUserDao;
import com.ifish.dao.DeviceCameraDao;
import com.ifish.dao.DeviceDao;
import com.ifish.dao.DeviceUserDao;
import com.ifish.dao.FactoryListDao;
import com.ifish.dao.GradeDao;
import com.ifish.dao.HardwareTypeDao;
import com.ifish.dao.IfishDoctorDao;
import com.ifish.dao.InformationDao;
import com.ifish.dao.LiveBannerDao;
import com.ifish.dao.LiveRoomDao;
import com.ifish.dao.LoginRecordDao;
import com.ifish.dao.MenuDao;
import com.ifish.dao.NeteaseUserDao;
import com.ifish.dao.OperateRecordDao;
import com.ifish.dao.PayBillDao;
import com.ifish.dao.PayeeInfoDao;
import com.ifish.dao.PushListDao;
import com.ifish.dao.QuestionsFeedbackDao;
import com.ifish.dao.RoleDao;
import com.ifish.dao.SecurityUserDao;
import com.ifish.dao.ShopsInfoDao;
import com.ifish.dao.TmpPushRemindDao;
import com.ifish.dao.UeditorDao;
import com.ifish.dao.UpgradeNotesDao;
import com.ifish.dao.UserDao;
import com.ifish.dao.VenderListDao;
import com.ifish.dao.VersionDao;
import com.ifish.domain.FactoryData;
import com.ifish.domain.FactoryRecordData;
import com.ifish.domain.HardwareTypeData;
import com.ifish.domain.JsonResult;
import com.ifish.domain.RecordData;
import com.ifish.domain.VenderData;
import com.ifish.entity.id.PayBillId;
import com.ifish.enums.BooleanEnum;
import com.ifish.enums.GwellEnum;
import com.ifish.enums.NeteaseEnum;
import com.ifish.enums.PayStatusEnum;
import com.ifish.enums.PushTypeEnum;
import com.ifish.enums.RecordTypeEnum;
import com.ifish.enums.RoleEnum;
import com.ifish.enums.SortModeEnum;
import com.ifish.enums.SysUserEnum;
import com.ifish.enums.UeditorTypeEnum;
import com.ifish.gwell.GwellApi;
import com.ifish.hibernate.Pagination;
import com.ifish.netease.NeteaseIM;
import com.ifish.search.SearchFilter;
import com.ifish.service.AdminService;
import com.ifish.service.AsyncTaskService;
import com.ifish.util.IfishFileDirectory;
import com.ifish.util.IfishUtil;
import com.ifish.util.ResultUtil;
import com.ifishNew.mapper.Tbl_Push_List_Mapper;
import javax.jms.Destination;
import javax.jms.Session;
/**
* @ClassName: AdminServiceImpl
* @Description: TODO
* @author ggw
*
*/
@Service("adminService")
@Transactional
public class AdminServiceImpl implements AdminService {
@Autowired
private UserDao userDao;
@Autowired
private GradeDao gradeDao;
@Autowired
private DeviceDao deviceDao;
@Autowired
private CameraDao cameraDao;
@Autowired
private VersionDao versionDao;
@Autowired
private PushListDao pushListDao;
@Autowired
private ShopsInfoDao shopsInfoDao;
@Autowired
private LiveRoomDao liveRoomDao;
@Autowired
private LiveBannerDao liveBannerDao;
@Autowired
private NeteaseUserDao neteaseUserDao;
@Autowired
private PayBillDao payBillDao;
@Autowired
private PayeeInfoDao payeeInfoDao;
@Autowired
private DeviceUserDao deviceUserDao;
@Autowired
private CameraUserDao cameraUserDao;
@Autowired
private VenderListDao venderListDao;
@Autowired
private FactoryListDao factoryListDao;
@Autowired
private InformationDao informationDao;
@Autowired
private LoginRecordDao loginRecordDao;
@Autowired
private OperateRecordDao operateRecordDao;
@Autowired
private DeviceCameraDao deviceCameraDao;
@Autowired
private CameraActiveDao cameraActiveDao;
@Autowired
private UpgradeNotesDao upgradeNotesDao;
@Autowired
private TmpPushRemindDao tmpPushRemindDao;
@Autowired
private HardwareTypeDao hardwareTypeDao;
@Autowired
private SecurityUserDao securityUserDao;
@Autowired
private QuestionsFeedbackDao questionsFeedbackDao;
@Autowired
private NeteaseIM neteaseIM;
@Autowired
private MenuDao menuDao;
@Autowired
private RoleDao roleDao;
@Autowired
private UeditorDao ueditorDao;
@Autowired
private IfishDoctorDao ifishDoctorDao;
@Autowired
private AsyncTaskService asyncTaskService;
@Autowired
private Tbl_Push_List_Mapper tbl_Push_List_Mapper;
@Autowired
private JmsTemplate jmsTemplate;
@Autowired
private Destination ifish7PushQueueDestination;
@Override
public Role get(String roleCode) {
return this.roleDao.get(roleCode);
}
@Override
public List<Role> getRoles() {
return this.roleDao.findByProperty();
}
@Override
public List<Menu> getParentMenus() {
return this.menuDao.findByProperty(Restrictions.eq("parentMenuId", 0));
}
@Override
public Object saveOrUpdateMenu(Menu menu, String roleCode) {
Integer menuId = menu.getMenuId();
Integer parentMenuId = menu.getParentMenuId();
String levelName = menu.getLevelName();
boolean isAdd = false;
Menu tmpMenu = new Menu();
if (menuId != null) {
tmpMenu = this.menuDao.get(menuId);
if (tmpMenu != null) {
//菜单ID存在
Menu curMenu = this.menuDao.findUniqueByProperty(Restrictions.eq("levelName", levelName), Restrictions.ne("menuId", menuId));
if (curMenu != null) {
return SysUserEnum.warn112.getKey();
}
} else {
return false;
}
} else {
//菜单ID存在
Menu curMenu = this.menuDao.findUniqueByProperty(Restrictions.eq("levelName", levelName));
if (curMenu != null) {
return SysUserEnum.warn112.getKey();
}
isAdd = true;
}
//二级菜单
if (parentMenuId != null) {
tmpMenu.setParentMenuId(parentMenuId);
tmpMenu.setMenuLink(menu.getMenuLink());
tmpMenu.setMenuIcon("");
} //一级菜单
else {
tmpMenu.setParentMenuId(0);
tmpMenu.setMenuLink("");
tmpMenu.setMenuIcon(menu.getMenuIcon());
Role role = roleDao.get(roleCode);
if (role != null) {
List<Role> roleList = new ArrayList<Role>();
roleList.add(role);
tmpMenu.setRoleList(roleList);
}
}
tmpMenu.setLevelName(levelName);
tmpMenu.setMenuName(menu.getMenuName());
tmpMenu.setMenuDesc(menu.getMenuDesc());
tmpMenu.setMenuOrder(menu.getMenuOrder());
tmpMenu.setMenuStatus(menu.getMenuStatus());
if (isAdd) {
tmpMenu.setCreateTime(new Date());
this.menuDao.save(tmpMenu);
} else {
this.menuDao.update(tmpMenu);
}
return true;
}
@Override
public void deleteMenu(Integer menuId) {
if (menuId != null) {
Menu menu = this.menuDao.get(menuId);
if (menu != null) {
this.menuDao.delete(menu);
}
}
}
@Override
public List<FactoryList> getFactoryList() {
return getFactoryListByPage(null).getList();
}
@Override
public List<VenderList> getVenderList() {
return getVenderListByPage(null).getList();
}
@Override
public List<HardwareType> getHardwareTypeList() {
return getHardwareTypeByPage(null).getList();
}
/**
* 用户列表
*/
@Override
public Pagination<User> getUserByPage(SearchFilter searchFilter, UserAsset userAsset) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//用户ID
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.eq("userId", Integer.valueOf(sSearch)));
}
//手机号
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
queryList.add(Restrictions.like("phoneNumber", "%" + sSearch1 + "%"));
}
//备注
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.like("remarks", "%" + sSearch2 + "%"));
}
//注册时间
String sSearch3 = searchFilter.getsSearch3();
String sSearch4 = searchFilter.getsSearch4();
if (sSearch3 != null && sSearch3.length() > 0 && sSearch4 != null && sSearch4.length() > 0) {
queryList.add(Restrictions.between("createTime", IfishUtil.StrToDate1(sSearch3 + " 00:00:00"), IfishUtil.StrToDate1(sSearch4 + " 23:59:59")));
}
//登录时间
String sSearch5 = searchFilter.getsSearch5();
String sSearch6 = searchFilter.getsSearch6();
if (sSearch5 != null && sSearch5.length() > 0 && sSearch6 != null && sSearch6.length() > 0) {
queryList.add(Restrictions.between("loginTime", IfishUtil.StrToDate1(sSearch5 + " 00:00:00"), IfishUtil.StrToDate1(sSearch6 + " 23:59:59")));
}
//昵称
String sSearch7 = searchFilter.getsSearch7();
if (sSearch7 != null && sSearch7.length() > 0) {
queryList.add(Restrictions.like("nickName", "%" + sSearch7 + "%"));
}
//手机类型过滤
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("phoneType", selectField));
}
//是否注册技威
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
queryList.add(Restrictions.eq("isRegisterGwell", selectField1));
}
//是否注册云信
String selectField2 = searchFilter.getSelectField2();
if (selectField2 != null && selectField2.length() > 0) {
queryList.add(Restrictions.eq("isRegisterNetease", selectField2));
}
/**
* 级联子查询
*/
Map<String, List<Criterion>> joinMap = new HashMap<String, List<Criterion>>();
//用户资产信息查询
List<Criterion> userAssetQueryList = new ArrayList<Criterion>();
//签到日期
String lastSigninDate = userAsset.getLastSigninDate();
if (StringUtils.isNotBlank(lastSigninDate)) {
userAssetQueryList.add(Restrictions.eq("lastSigninDate", lastSigninDate));
}
//连续签到
Integer keepSigninNum = userAsset.getKeepSigninNum();
if (keepSigninNum != null) {
userAssetQueryList.add(Restrictions.eq("keepSigninNum", keepSigninNum));
}
//等级
Integer gradeNum = userAsset.getGradeNum();
if (gradeNum != null) {
Grade grade = gradeDao.get(gradeNum);
if (grade != null) {
userAssetQueryList.add(Restrictions.and(Restrictions.ge("gradeValue", grade.getMinValue()), Restrictions.lt("gradeValue", grade.getMaxValue())));
}
}
//排序字段
String sortField = searchFilter.getSortField();
//排序方式
String sortMode = searchFilter.getSortMode();
/**
* 子查询排序
*/
Map<String, Order> orderMap = new HashMap<String, Order>();
if (StringUtils.isNotBlank(sortField)) {
//子查询排序
if ("gradeValue".equals(sortField) || "goldValue".equals(sortField)) {
//升序
if (SortModeEnum.ASC.getKey().equals(sortMode)) {
orderMap.put("userAsset", Order.asc(sortField));
} //降序
else {
orderMap.put("userAsset", Order.desc(sortField));
}
} else {
//升序
if (SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
} else {
orderList.add(Order.desc("userId"));
}
/**
* 子查询排序
*/
if (orderMap.size() > 0 || userAssetQueryList.size() > 0) {
joinMap.put("userAsset", userAssetQueryList);
}
return this.userDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, orderMap, queryList.toArray(new Criterion[queryList.size()]));
} else {
return null;
}
}
/**
* 修改备注
*/
@Override
public void updateRemarks(User user) {
this.userDao.updateRemarks(user);
}
/**
* 注册技威
*/
@Override
public boolean registerGwell(Integer userId) {
if (userId != null) {
//用户
User user = this.userDao.get(userId);
if (user != null) {
String phoneNumber = user.getPhoneNumber();
String isRegisterGwell = user.getIsRegisterGwell();
String P2PVerifyCode1 = user.getP2PVerifyCode1();
String P2PVerifyCode2 = user.getP2PVerifyCode2();
String gwellUserID = user.getGwellUserID();
boolean isUpdate = false;
//未注册技威
if (isRegisterGwell.equals(BooleanEnum.NO.getKey())) {
//注册技威
Map<String, String> registerMap = GwellApi.Register(phoneNumber);
String registerResult = registerMap.get("result");
if (registerResult != null) {
//注册成功
if (registerResult.equals(GwellEnum.success.getKey())) {
user.setIsRegisterGwell(BooleanEnum.YES.getKey());
user.setP2PVerifyCode1(registerMap.get("P2PVerifyCode1"));
user.setP2PVerifyCode2(registerMap.get("P2PVerifyCode2"));
user.setGwellUserID(registerMap.get("UserID"));
isUpdate = true;
} //已经注册过
else if (registerResult.equals(GwellEnum.repeat.getKey())) {
user.setIsRegisterGwell(BooleanEnum.YES.getKey());
//code1和code2为空则重新登陆获取
if (P2PVerifyCode1.length() <= 0 || P2PVerifyCode2.length() <= 0 || gwellUserID.length() <= 0) {
Map<String, String> loginMap = GwellApi.Login(phoneNumber);
String loginResult = loginMap.get("result");
//登陆成功
if (loginResult != null && loginResult.equals(GwellEnum.success.getKey())) {
user.setP2PVerifyCode1(loginMap.get("P2PVerifyCode1"));
user.setP2PVerifyCode2(loginMap.get("P2PVerifyCode2"));
user.setGwellUserID(loginMap.get("UserID"));
}
}
isUpdate = true;
}
}
} //已经注册过
else if (isRegisterGwell.equals(BooleanEnum.YES.getKey())) {
//code1和code2为空则重新登陆获取
if (P2PVerifyCode1.length() <= 0 || P2PVerifyCode2.length() <= 0 || gwellUserID.length() <= 0) {
Map<String, String> loginMap = GwellApi.Login(phoneNumber);
String loginResult = loginMap.get("result");
//登陆成功
if (loginResult != null && loginResult.equals(GwellEnum.success.getKey())) {
user.setP2PVerifyCode1(loginMap.get("P2PVerifyCode1"));
user.setP2PVerifyCode2(loginMap.get("P2PVerifyCode2"));
user.setGwellUserID(loginMap.get("UserID"));
isUpdate = true;
}
}
}
//是否更新
if (isUpdate) {
user.setUpdateTime(new Date());
this.userDao.update(user);
return true;
}
}
}
return false;
}
/**
* 用户详情
*/
@Override
public Map<String, Object> getUserDetail(User user) {
Map<String, Object> map = new HashMap<String, Object>();
user = this.userDao.get(user.getUserId());
if (user != null) {
map.put("user", user);
List<DeviceUser> deviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.userId", user.getUserId()));
map.put("deviceUserList", deviceUserList);
List<CameraUser> cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", user.getUserId()));
map.put("cameraUserList", cameraUserList);
List<String> cameraIds = new ArrayList<String>();
for (CameraUser cameraUser : cameraUserList) {
cameraIds.add(cameraUser.getCameraUserId().getCameraId());
}
if (cameraIds.size() > 0) {
List<DeviceCamera> deviceCameraList = this.deviceCameraDao.findByProperty(Restrictions.in("deviceCameraId.cameraId", cameraIds));
map.put("deviceCameraList", deviceCameraList);
}
}
return map;
}
public Pagination<NeteaseUser> getNeteaseUserByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
return this.neteaseUserDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
} else {
return null;
}
}
public NeteaseUser getNeteaseUserById(String accountNo) {
return this.neteaseUserDao.get(accountNo);
}
public String saveNeteaseUser(NeteaseUser neteaseUser, String isRegister) {
NeteaseUser tmpNeteaseUser = this.neteaseUserDao.get(neteaseUser.getAccountNo());
if (tmpNeteaseUser != null) {
return SysUserEnum.warn107.getKey();
} else {
if (isRegister.equals(BooleanEnum.YES.getKey())) {
Map<String, String> createMap = neteaseIM.createAccid(neteaseUser.getAccountNo().toString(), neteaseUser.getNickName(), neteaseUser.getLinkImg(), "");
if (createMap != null) {
if (createMap.get("code").equals(NeteaseEnum.status200.getKey())) {
//更新云信
Map<String, String> exMap = new HashMap<String, String>();
exMap.put("user_type", neteaseUser.getUserType());
Map<String, String> updateMap = neteaseIM.updateUinfo(neteaseUser.getAccountNo().toString(), neteaseUser.getNickName(), neteaseUser.getLinkImg(), JSONObject.toJSONString(exMap));
if (updateMap.get("code").equals(NeteaseEnum.status200.getKey())) {
//保存
neteaseUser.setNeteaseToken(createMap.get("token"));
neteaseUser.setCreateTime(new Date());
this.neteaseUserDao.save(neteaseUser);
return SysUserEnum.success100.getKey();
} else {
return SysUserEnum.warn111.getKey();
}
} else {
return SysUserEnum.warn110.getKey();
}
}
} else {
//保存
neteaseUser.setCreateTime(new Date());
this.neteaseUserDao.save(neteaseUser);
return SysUserEnum.success100.getKey();
}
}
return SysUserEnum.failed101.getKey();
}
public String updateNeteaseUser(NeteaseUser neteaseUser) {
//更新云信
Map<String, String> exMap = new HashMap<String, String>();
exMap.put("user_type", neteaseUser.getUserType());
Map<String, String> updateMap = neteaseIM.updateUinfo(neteaseUser.getAccountNo().toString(), neteaseUser.getNickName(), neteaseUser.getLinkImg(), JSONObject.toJSONString(exMap));
if (updateMap.get("code").equals(NeteaseEnum.status200.getKey())) {
//更新
this.neteaseUserDao.update(neteaseUser);
return SysUserEnum.success100.getKey();
} else {
return SysUserEnum.warn111.getKey();
}
}
@Override
public boolean bindCamera(String cameraId, Integer userId) {
if (userId != null && cameraId != null && cameraId.length() > 0) {
User user = this.userDao.get(userId);
Camera camera = this.cameraDao.get(cameraId);
if (user != null && camera != null) {
CameraUser cameraUser = this.cameraUserDao.findUniqueByProperty(Restrictions.eq("cameraUserId.cameraId", cameraId));
boolean isAdd = true;
if (cameraUser != null) {
if (cameraUser.getCameraUserId().getUserId() != userId) {
//删除
this.cameraUserDao.delete(cameraUser);
} else {
isAdd = false;
}
}
//新增
if (isAdd) {
CameraUser CurCameraUser = new CameraUser();
CurCameraUser.getCameraUserId().setCameraId(cameraId);
CurCameraUser.getCameraUserId().setUserId(userId);
CurCameraUser.setUser(null);
CurCameraUser.setCamera(null);
CurCameraUser.setShowName("摄像头" + cameraId);
CurCameraUser.setIsLive(BooleanEnum.NO.getKey());
CurCameraUser.setIsMaster(BooleanEnum.YES.getKey());
CurCameraUser.setIsLook(BooleanEnum.NO.getKey());
CurCameraUser.setCreateTime(new Date());
this.cameraUserDao.save(CurCameraUser);
}
return true;
}
}
return false;
}
@Override
public boolean bindDevice(String macAddress, Integer userId) {
if (userId != null && macAddress != null && macAddress.length() > 0) {
User user = this.userDao.get(userId);
Device device = this.deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", macAddress));
if (user != null && device != null) {
Integer deviceId = device.getDeviceId();
DeviceUser deviceUser = new DeviceUser();
deviceUser.getPriId().setDeviceId(deviceId);
deviceUser.getPriId().setUserId(userId);
DeviceUser tmpDeviceUser = this.deviceUserDao.get(deviceUser.getPriId());
if (tmpDeviceUser == null) {
List<DeviceUser> DeviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.deviceId", deviceId));
if (DeviceUserList.size() > 0) {
deviceUser.setIsMaster(BooleanEnum.NO.getKey());
} else {
deviceUser.setIsMaster(BooleanEnum.YES.getKey());
}
deviceUser.setUser(user);
deviceUser.setDevice(device);
deviceUser.setShowName(device.getDeviceIP());
deviceUser.setCreateTime(new Date());
this.deviceUserDao.save(deviceUser);
}
return true;
}
}
return false;
}
@Override
public void unbind(DeviceUser deviceUser) {
deviceUser = this.deviceUserDao.get(deviceUser.getPriId());
if (deviceUser != null) {
//是主控,解除所有的绑定
if (deviceUser.getIsMaster().equals(BooleanEnum.YES.getKey())) {
List<DeviceUser> list = this.deviceUserDao.findByProperty(Restrictions.eq("priId.deviceId", deviceUser.getPriId().getDeviceId()));
for (DeviceUser curDeviceUser : list) {
deviceUserDao.delete(curDeviceUser);
}
} else {
deviceUserDao.delete(deviceUser);
}
}
}
@Override
public boolean deviceLicense(Integer deviceId, String isBlacklist) {
Device device = this.deviceDao.get(deviceId);
if (device != null) {
if (isBlacklist.equals(BooleanEnum.NO.getKey())) {
if (device.getCreateDate() == null) {
device.setCreateDate(new Date());
}
device.setAuthorizeTime(new Date());
}
device.setIsBlacklist(isBlacklist);
this.deviceDao.update(device);
return true;
}
return false;
}
@Override
public boolean appointQuestion(QuestionsFeedback feedback) {
QuestionsFeedback questionsFeedback = this.questionsFeedbackDao.get(feedback.getQuestionId());
if (questionsFeedback != null) {
questionsFeedback.setLoginAccount(feedback.getLoginAccount());
questionsFeedback.setReplyType(feedback.getReplyType());
this.questionsFeedbackDao.update(questionsFeedback);
return true;
}
return false;
}
@Override
public boolean questionsReply(QuestionsFeedback feedback) {
Integer userId = feedback.getUserId();
QuestionsFeedback questionsFeedback = this.questionsFeedbackDao.get(feedback.getQuestionId());
if (userId != null && questionsFeedback != null) {
User user = userDao.get(userId);
if (user != null) {
if (pushNotifcation(PushTypeEnum.qu_reply.getKey(), user.getLoginType(), userId, "爱鱼奇", feedback.getQuestionReply())) {
questionsFeedback.setIsReply(feedback.getIsReply());
questionsFeedback.setQuestionReply(feedback.getQuestionReply());
questionsFeedback.setReplyTime(new Date());
this.questionsFeedbackDao.update(questionsFeedback);
return true;
}
}
}
return false;
}
@Override
public void deleteQuestions(Integer id) {
QuestionsFeedback feedback = this.questionsFeedbackDao.get(id);
if (feedback != null) {
this.questionsFeedbackDao.delete(feedback);
}
}
@Override
public void deleteQuestionsAll(String ids) {
String[] questionsId = ids.split(",");
for (String id : questionsId) {
deleteQuestions(Integer.valueOf(id));
}
}
/**
* 推送消息提醒
*
* @param userId
*/
public boolean pushNotifcation(String pushType, String parameter, Integer userId, String title, String contont) {
try {
if (pushType != null) {
Map<String, String> map = new HashMap<String, String>();
map.put("timestamp", IfishUtil.format(new Date()));
map.put("msg_type", pushType);
//推送记录
PushList pushList = new PushList();
//商家审核推送
if (pushType.equals(PushTypeEnum.review_push.getKey())) {
Map<String, String> neteaseMap = neteaseIM.sendMsg(IfishFileDirectory.ifish_account, userId.toString(), "" + title + "" + contont, "");
boolean neteaseBln = neteaseMap.get("code").equals(NeteaseEnum.status200.getKey());
//不管是否推送成功
pushList.getUser().setUserId(userId);
pushList.setDevice(null);
pushList.setPhoneType(parameter.toLowerCase());
pushList.setPushType(pushType);
pushList.setPushTitle(title);
pushList.setPushContext(contont);
pushList.setJpushStatus(BooleanEnum.NO.getKey());
pushList.setNeteaseStatus(neteaseBln ? BooleanEnum.YES.getKey() : BooleanEnum.NO.getKey());
pushList.setCreateTime(new Date());
pushListDao.save(pushList);
return true;
}
}
} catch (Exception e) {
throw new RuntimeException();
}
return false;
}
@Override
public Pagination<QuestionsFeedback> getQusetionByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//输入框过滤
String sSearch = searchFilter.getsSearch();
//输入框过滤字段
String searchField = searchFilter.getSearchField();
if (sSearch != null && sSearch.length() > 0) {
if (searchField != null && searchField.length() > 0) {
if (searchField.equals("userId")) {
queryList.add(Restrictions.eq(searchField, Integer.valueOf(sSearch)));
} else {
queryList.add(Restrictions.like(searchField, "%" + sSearch + "%"));
}
}
}
//回复状态过滤
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("isReply", selectField));
}
//反馈类型
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
queryList.add(Restrictions.eq("replyType", selectField1));
}
//指派账号
String selectField2 = searchFilter.getSelectField2();
if (selectField2 != null && selectField2.length() > 0) {
queryList.add(Restrictions.eq("loginAccount", selectField2));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("questionId"));
}
//问题列表
Pagination<QuestionsFeedback> page = this.questionsFeedbackDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
//手机号
for (QuestionsFeedback q : page.getList()) {
User user = userDao.get(q.getUserId());
if (user != null) {
q.setPhoneNumber(user.getPhoneNumber());
q.setUserName(user.getNickName());
}
}
return page;
} else {
return null;
}
}
@Override
public Pagination<VenderList> getVenderListByPage(SearchFilter searchFilter) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
if (searchFilter != null) {
//输入框过滤
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
Criterion criterion = Restrictions.like("brandName", "%" + sSearch + "%");
queryList.add(criterion);
}
//APP展示过滤
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.like("appShow", "%" + selectField + "%"));
}
//电子厂
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
queryList.add(Restrictions.eq("factoryCode", selectField1));
}
//排序
List<Order> orderList = new ArrayList<Order>();
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode.toLowerCase())) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
//厂家列表
Pagination<VenderList> page = this.venderListDao.findByCriteria(searchFilter.getiDisplayStart(), searchFilter.getiDisplayLength(), orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
Pagination<VenderList> page = this.venderListDao.findByCriteria(null, null, null, null);
return page;
}
}
@Override
public Pagination<Device> getDeviceListByPage(String brandCode, SearchFilter searchFilter) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//厂家
if (brandCode != null) {
queryList.add(Restrictions.eq("venderList.brandCode", brandCode));
}
//输入框过滤mac地址
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("macAddress", "%" + sSearch + "%"));
}
//硬件型号过滤
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("hardwareType.hardwareType", selectField));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
//设备列表
Pagination<Device> page = this.deviceDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
}
@Override
public String saveVender(VenderList vender, String base64) {
if (vender.getBrandCode() != null) {
VenderList tmpVender = venderListDao.get(vender.getBrandCode());
if (tmpVender != null) {
return SysUserEnum.warn107.getKey();
} else {
//新增鱼缸厂
vender.setBrandCode(vender.getBrandCode().toUpperCase());
vender.setCreateTime(new Date());
String picName = vender.getBrandCode() + "_logo.png";
//保存图片
boolean bln = IfishUtil.GenerateImage(base64, picName);
if (bln) {
vender.setLogo(picName + "?timestamp=" + System.currentTimeMillis());
}
venderListDao.save(vender);
return SysUserEnum.success100.getKey();
}
}
return SysUserEnum.failed101.getKey();
}
@Override
public String UpdateVender(VenderList vender, String base64) {
if (vender.getBrandCode() != null) {
VenderList tmpVender = venderListDao.get(vender.getBrandCode());
if (tmpVender != null) {
tmpVender.setBrandName(vender.getBrandName());
tmpVender.setBrandIntroduce(vender.getBrandIntroduce());
tmpVender.setAppShow(vender.getAppShow());
tmpVender.setContactPhone(vender.getContactPhone());
tmpVender.setContactAddress(vender.getContactAddress());
String picName = tmpVender.getBrandCode() + "_logo.png";
boolean bln = IfishUtil.GenerateImage(base64, picName);
if (bln) {
tmpVender.setLogo(picName);
}
tmpVender.setUpdateTime(new Date());
venderListDao.update(tmpVender);
return SysUserEnum.success100.getKey();
}
}
return SysUserEnum.failed101.getKey();
}
@Override
public void deleteVender(String brandCode) {
VenderList vender = getVenderById(brandCode);
if (vender != null) {
this.venderListDao.delete(vender);
}
}
@Override
public VenderList getVenderById(String brandCode) {
return venderListDao.get(brandCode);
}
@Override
public boolean updateOnOff(String code, Class<?> c) {
//电子厂家
if (c.equals(FactoryList.class)) {
FactoryList factoryList = factoryListDao.get(code);
if (factoryList != null) {
if (factoryList.getIsTax() != null && factoryList.getIsTax().equals(BooleanEnum.YES.getKey())) {
factoryList.setIsTax(BooleanEnum.NO.getKey());
} else {
factoryList.setIsTax(BooleanEnum.YES.getKey());
}
factoryListDao.update(factoryList);
return true;
}
} //鱼缸厂家
else if (c.equals(VenderList.class)) {
VenderList venderList = venderListDao.get(code);
if (venderList != null) {
if (venderList.getAppShow().equals(BooleanEnum.YES.getKey())) {
venderList.setAppShow(BooleanEnum.NO.getKey());
} else {
venderList.setAppShow(BooleanEnum.YES.getKey());
}
venderList.setUpdateTime(new Date());
venderListDao.update(venderList);
return true;
}
} //系统用户
else if (c.equals(SecurityUser.class)) {
SecurityUser securityUser = securityUserDao.get(Integer.valueOf(code));
if (securityUser != null) {
if (securityUser.getEnabled().equals(BooleanEnum.YES.getKey())) {
securityUser.setEnabled(BooleanEnum.NO.getKey());
} else {
securityUser.setEnabled(BooleanEnum.YES.getKey());
}
securityUserDao.update(securityUser);
return true;
}
}
return false;
}
@Override
public Pagination<SecurityUser> getSysUserListByPage(SearchFilter searchFilter) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//用户名
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("username", "%" + sSearch + "%"));
}
//角色类型
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("role", selectField));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.asc("createTime"));
}
//设备列表
Pagination<SecurityUser> page = this.securityUserDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
}
@Override
public List<SecurityUser> getSysUserList(RoleEnum roleEnum) {
return this.securityUserDao.findByProperty(Restrictions.eq("role", roleEnum.getKey()));
}
@Override
public boolean updateSysUser(SecurityUser securityUser) {
SecurityUser user = this.securityUserDao.get(securityUser.getUserId());
if (user != null) {
user.setRole(securityUser.getRole());
user.setCode(securityUser.getCode());
this.securityUserDao.update(user);
return true;
}
return false;
}
@Override
public boolean resetSysUserPwd(SecurityUser securityUser) {
SecurityUser user = this.securityUserDao.get(securityUser.getUserId());
if (user != null) {
user.setPassword(IfishUtil.GetMD5(securityUser.getPassword()));
this.securityUserDao.update(user);
return true;
}
return false;
}
@Override
public boolean delSysUser(SecurityUser securityUser) {
SecurityUser user = this.securityUserDao.get(securityUser.getUserId());
if (user != null) {
this.securityUserDao.delete(user);
return true;
}
return false;
}
@Override
public String createSysUser(SecurityUser securityUser) {
SecurityUser user = securityUserDao.findUniqueByProperty(Restrictions.eq("username", securityUser.getUsername()));
if (user == null) {
securityUser.setPassword(IfishUtil.GetMD5(securityUser.getPassword()));
securityUser.setEnabled(BooleanEnum.YES.getKey());
securityUser.setCreateTime(new Date());
this.securityUserDao.save(securityUser);
return SysUserEnum.success100.getKey();
}
return SysUserEnum.warn102.getKey();
}
@Override
public SecurityUser getSysUserByUserName(String username) {
if (username != null && username.length() > 0) {
return this.securityUserDao.findUniqueByProperty(Restrictions.eq("username", username));
}
return null;
}
@Override
public Pagination<Version> getVersionByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//输入框过滤
String sSearch = searchFilter.getsSearch();
//输入框过滤字段
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("uploadContent", "%" + sSearch + "%"));
}
//手机类型过滤
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("phoneType", selectField));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("versionId"));
}
//厂家列表
Pagination<Version> page = this.versionDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Version saveVersion(Version version) throws Exception {
//新增版本
version.setCreateTime(new Date());
return this.versionDao.save(version);
}
@Override
public Version updateVersion(Version version) {
return this.versionDao.update(version);
}
@Override
public boolean deleteVersion(Integer versionId) {
Version version = this.versionDao.get(versionId);
if (version != null) {
this.versionDao.delete(version);
return true;
}
return false;
}
@Override
public Version getVersionById(Version version) {
return this.versionDao.get(version.getVersionId());
}
@Override
public boolean isMustUpdate(Integer versionId, String isMustUpdate) {
Version version = this.versionDao.get(versionId);
if (version != null) {
version.setIsMustUpdate(isMustUpdate);
this.versionDao.update(version);
return true;
}
return false;
}
@Override
public Pagination<HardwareType> getHardwareTypeByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//输入框过滤
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("hardwareName", "%" + sSearch + "%"));
}
orderList.add(Order.asc("hardwareType"));
Pagination<HardwareType> page = this.hardwareTypeDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
//下拉列表
Pagination<HardwareType> page = this.hardwareTypeDao.findByCriteria(null, null, null, null);
return page;
}
}
@Override
public String saveHardwareType(HardwareType hardwareType) {
HardwareType tmp = this.hardwareTypeDao.findUniqueByProperty(Restrictions.eq("hardwareType", hardwareType.getHardwareType()));
if (tmp != null) {
return SysUserEnum.warn107.getKey();
} else {
hardwareType.setCreateTime(new Date());
hardwareType.setUpdateTime(new Date());
this.hardwareTypeDao.save(hardwareType);
return SysUserEnum.success100.getKey();
}
}
@Override
public HardwareType updateHardwareType(HardwareType hardwareType) {
hardwareType.setUpdateTime(new Date());
return this.hardwareTypeDao.update(hardwareType);
}
@Override
public void deleteHardwareType(String hardwareType) {
this.hardwareTypeDao.delete(getHardwareTypeById(hardwareType));
}
@Override
public HardwareType getHardwareTypeById(String hardwareType) {
return this.hardwareTypeDao.get(hardwareType);
}
@Override
public Pagination<Device> getDeviceByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//输入框过滤mac地址
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("macAddress", "%" + sSearch + "%"));
}
//设备ID
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
queryList.add(Restrictions.eq("deviceId", Integer.valueOf(sSearch1)));
}
//SDK版本
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.eq("sdkVersion", Integer.valueOf(sSearch2)));
}
//目标版本
String sSearch3 = searchFilter.getsSearch3();
if (sSearch3 != null && sSearch3.length() > 0) {
queryList.add(Restrictions.eq("upgradeVersion", Integer.valueOf(sSearch3)));
}
//分配日期
String sSearch4 = searchFilter.getsSearch4();
if (sSearch4 != null && sSearch4.length() > 0) {
queryList.add(Restrictions.eq("createDate", IfishUtil.StrToDate(sSearch4)));
}
//登陆日期
String sSearch5 = searchFilter.getsSearch5();
if (sSearch5 != null && sSearch5.length() > 0) {
queryList.add(Restrictions.sqlRestriction("'" + sSearch5 + "'=date_format(login_time,'%Y-%m-%d')"));
}
//分配编号
String sSearch6 = searchFilter.getsSearch6();
if (sSearch6 != null && sSearch6.length() > 0) {
queryList.add(Restrictions.like("createCode", "%" + sSearch6 + "%"));
}
//收费收费
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("isCharge", selectField));
}
//鱼缸厂过滤
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
queryList.add(Restrictions.eq("venderList.brandCode", selectField1));
}
//硬件型号过滤
String selectField2 = searchFilter.getSelectField2();
if (selectField2 != null && selectField2.length() > 0) {
queryList.add(Restrictions.eq("hardwareType.hardwareType", selectField2));
}
//电子厂过滤
String selectField3 = searchFilter.getSelectField3();
if (selectField3 != null && selectField3.length() > 0) {
queryList.add(Restrictions.eq("factoryList.factoryCode", selectField3));
}
//授权过滤
String selectField4 = searchFilter.getSelectField4();
if (selectField4 != null && selectField4.length() > 0) {
queryList.add(Restrictions.eq("isBlacklist", selectField4));
}
//自动升级
String selectField5 = searchFilter.getSelectField5();
if (selectField5 != null && selectField5.length() > 0) {
queryList.add(Restrictions.eq("isUpgrade", selectField5));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
Pagination<Device> page = this.deviceDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Pagination<DeviceUser> getDeviceUserByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//显示名称
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.like("showName", "%" + sSearch2 + "%"));
}
//是否主控
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("isMaster", selectField));
}
/**
* 级联子查询
*/
Map<String, List<Criterion>> joinMap = new HashMap<String, List<Criterion>>();
//级联user表
List<Criterion> userList = new ArrayList<Criterion>();
//MAC地址
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
userList.add(Restrictions.like("phoneNumber", "%" + sSearch1 + "%"));
}
if (userList.size() > 0) {
joinMap.put("user", userList);
}
//级联device表
List<Criterion> deviceList = new ArrayList<Criterion>();
//MAC地址
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
deviceList.add(Restrictions.like("macAddress", "%" + sSearch + "%"));
}
//电子厂
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
deviceList.add(Restrictions.eq("factoryList.factoryCode", selectField1));
}
//鱼缸厂
String selectField2 = searchFilter.getSelectField2();
if (selectField2 != null && selectField2.length() > 0) {
deviceList.add(Restrictions.eq("venderList.brandCode", selectField2));
}
//硬件类型
String selectField3 = searchFilter.getSelectField3();
if (selectField3 != null && selectField3.length() > 0) {
deviceList.add(Restrictions.eq("hardwareType.hardwareType", selectField3));
}
//授权状态
String selectField4 = searchFilter.getSelectField4();
if (selectField4 != null && selectField4.length() > 0) {
deviceList.add(Restrictions.eq("isBlacklist", selectField4));
}
if (deviceList.size() > 0) {
joinMap.put("device", deviceList);
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
Pagination<DeviceUser> page = this.deviceUserDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Pagination<TmpPushRemind> getTmpPushRemindByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//显示名称过滤
String sSearch = searchFilter.getsSearch();
//输入框过滤字段
String searchField = searchFilter.getSearchField();
if (sSearch != null && sSearch.length() > 0) {
if (searchField != null && searchField.length() > 0) {
if (searchField.equals("userId") || searchField.equals("deviceId")) {
queryList.add(Restrictions.eq(searchField, Integer.valueOf(sSearch)));
} else {
queryList.add(Restrictions.like(searchField, "%" + sSearch + "%"));
}
}
}
//是否推送
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("isPush", selectField));
}
//推送类型
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
queryList.add(Restrictions.eq("loginType", selectField1));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
Pagination<TmpPushRemind> page = this.tmpPushRemindDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public FactoryList getFactoryByCode(String code) {
if (code != null && code.length() > 0) {
return this.factoryListDao.get(code);
}
return null;
}
@Override
public void deleteFactory(String code) {
FactoryList factory = getFactoryByCode(code);
if (factory != null) {
this.factoryListDao.delete(factory);
}
}
@Override
public String addFactory(FactoryList factoryList, String brandCodes, String hardwareTypes) {
String code = factoryList.getFactoryCode();
if (code != null) {
//编号是否存在
FactoryList tmpList = this.getFactoryByCode(code.toLowerCase());
if (tmpList != null) {
return SysUserEnum.warn107.getKey();
} else {
//新增电子厂
factoryList.setCreateTime(new Date());
//鱼缸厂
Set<VenderList> venderLists = new HashSet<VenderList>();
if (brandCodes != null && brandCodes.length() > 0) {
String[] brandCode = brandCodes.split(",");
for (int i = 0; i < brandCode.length; i++) {
VenderList venderList = venderListDao.get(brandCode[i]);
venderLists.add(venderList);
}
factoryList.setVenderLists(venderLists);
}
//硬件类型
Set<HardwareType> hardwareTypeSet = new HashSet<HardwareType>();
if (hardwareTypes != null && hardwareTypes.length() > 0) {
String[] hardwareType = hardwareTypes.split(",");
for (int i = 0; i < hardwareType.length; i++) {
HardwareType hardware = hardwareTypeDao.get(hardwareType[i]);
hardwareTypeSet.add(hardware);
}
factoryList.setHardwareTypeSet(hardwareTypeSet);
}
this.factoryListDao.save(factoryList);
return SysUserEnum.success100.getKey();
}
}
return SysUserEnum.failed101.getKey();
}
@Override
public String updateFactory(FactoryList factoryList, String brandCodes, String hardwareTypes) {
//鱼缸厂
Set<VenderList> venderLists = new HashSet<VenderList>();
if (brandCodes != null && brandCodes.length() > 0) {
String[] brandCode = brandCodes.split(",");
for (int i = 0; i < brandCode.length; i++) {
VenderList venderList = venderListDao.get(brandCode[i]);
venderLists.add(venderList);
}
factoryList.setVenderLists(venderLists);
}
//硬件类型
Set<HardwareType> hardwareTypeSet = new HashSet<HardwareType>();
if (hardwareTypes != null && hardwareTypes.length() > 0) {
String[] hardwareType = hardwareTypes.split(",");
for (int i = 0; i < hardwareType.length; i++) {
HardwareType hardware = hardwareTypeDao.get(hardwareType[i]);
hardwareTypeSet.add(hardware);
}
factoryList.setHardwareTypeSet(hardwareTypeSet);
}
this.factoryListDao.update(factoryList);
return SysUserEnum.success100.getKey();
}
@Override
public Pagination<FactoryList> getFactoryListByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//电子厂名称过滤
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("factoryName", "%" + sSearch + "%"));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
}
Pagination<FactoryList> page = this.factoryListDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
Pagination<FactoryList> page = this.factoryListDao.findByCriteria(null, null, null, null);
return page;
}
}
@Override
public void deviceAuthorize(String ip, String factoryCode, SearchFilter searchFilter) {
String sSearch = searchFilter.getsSearch();
String sSearch2 = searchFilter.getsSearch2();
String sSearch4 = searchFilter.getsSearch4();
String selectField1 = searchFilter.getSelectField1();
String selectField2 = searchFilter.getSelectField2();
String sql = "UPDATE tbl_device SET is_blacklist='0',authorize_time=CURRENT_TIMESTAMP() where is_blacklist='1' AND IF('" + sSearch + "' != '', mac_address='" + sSearch + "', true) AND IF('" + sSearch2 + "'!= '', create_date='" + sSearch2 + "', true) AND IF('" + selectField1 + "'!= '', brand_code='" + selectField1 + "', true) AND IF('" + selectField2 + "'!= '', hardware_type='" + selectField2 + "', true) AND IF('" + sSearch4 + "'!= '', create_code='" + sSearch4 + "', true)";
int number = this.deviceDao.executeSql(sql);
//授权记录
if (number > 0) {
OperateRecord operateRecord = new OperateRecord();
operateRecord.setCreateTime(new Date());
operateRecord.setRecordIp(ip);
operateRecord.setRecordNumber(number);
operateRecord.setRecordType(RecordTypeEnum.shouquan.getKey());
operateRecord.setFactoryCode(factoryCode);
this.operateRecordDao.save(operateRecord);
}
}
@Override
public void deviceAuthorizeNew(String ip, String factoryCode, String[] deviceIds) {
for (String deviceId : deviceIds) {
String sql = "UPDATE tbl_device SET is_blacklist='0',authorize_time=CURRENT_TIMESTAMP() where is_blacklist='1' AND device_id = '"+ deviceId +"'";
int number = this.deviceDao.executeSql(sql);
//授权记录
if (number > 0) {
OperateRecord operateRecord = new OperateRecord();
operateRecord.setCreateTime(new Date());
operateRecord.setRecordIp(ip);
operateRecord.setRecordNumber(number);
operateRecord.setRecordType(RecordTypeEnum.shouquan.getKey());
operateRecord.setFactoryCode(factoryCode);
this.operateRecordDao.save(operateRecord);
}
}
}
@Override
public void deviceFenpei(String ip, String factoryCode, String createCode, String brandCode) {
if (createCode != null && createCode.length() > 0 && brandCode != null && brandCode.length() > 0) {
String sql = "UPDATE tbl_device SET brand_code='" + brandCode + "',create_date=CURRENT_TIMESTAMP() where create_code='" + createCode + "' and factory_code='" + factoryCode + "'";
int number = this.deviceDao.executeSql(sql);
//分配记录
if (number > 0) {
OperateRecord operateRecord = new OperateRecord();
operateRecord.setCreateTime(new Date());
operateRecord.setCreateCode(createCode);
operateRecord.setRecordIp(ip);
operateRecord.setRecordNumber(number);
operateRecord.setRecordType(RecordTypeEnum.fenpei.getKey());
operateRecord.setFactoryCode(factoryCode);
this.operateRecordDao.save(operateRecord);
}
}
}
@Override
public void deviceFenpeiSingle(String ip, String factoryCode, Integer deviceId, String brandCode) {
if (deviceId != null && brandCode != null && brandCode.length() > 0) {
Device device = this.deviceDao.get(deviceId);
if (device != null) {
VenderList vender = new VenderList();
vender.setBrandCode(brandCode);
device.setVenderList(vender);
device.setCreateDate(new Date());
this.deviceDao.update(device);
//分配记录
OperateRecord operateRecord = new OperateRecord();
operateRecord.setCreateTime(new Date());
operateRecord.setCreateCode(device.getCreateCode());
operateRecord.setRecordIp(ip);
operateRecord.setRecordNumber(1);
operateRecord.setRecordType(RecordTypeEnum.fenpei.getKey());
operateRecord.setFactoryCode(factoryCode);
this.operateRecordDao.save(operateRecord);
}
}
}
@Override
public void deviceFenpeiSingleNew(String ip, String factoryCode, Integer deviceId,String brandCode,String createCode) {
if (deviceId != null && createCode != null && createCode.length() > 0) {
Device device = this.deviceDao.get(deviceId);
if (device != null) {
VenderList vender = new VenderList();
vender.setBrandCode(brandCode);
device.setVenderList(vender);
device.setCreateDate(new Date());
device.setCreateCode(createCode);
this.deviceDao.update(device);
//分配记录
OperateRecord operateRecord = new OperateRecord();
operateRecord.setCreateTime(new Date());
operateRecord.setCreateCode(device.getCreateCode());
operateRecord.setRecordIp(ip);
operateRecord.setRecordNumber(1);
operateRecord.setRecordType(RecordTypeEnum.fenpei.getKey());
operateRecord.setFactoryCode(factoryCode);
this.operateRecordDao.save(operateRecord);
}
}
}
@Override
public Pagination<Map> getPushListByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//手机号
String phoneNumber = searchFilter.getsSearch2();
//mac地址
String macAddress = searchFilter.getsSearch3();
//sdk版本
String sdkVersion = searchFilter.getsSearch4();
//推送类型
String pushType = searchFilter.getSelectField();
//手机类型
String phoneType = searchFilter.getSelectField1();
//排序字段
String sort = searchFilter.getSortField();
//排序方式(升序,降序)
String sortModel = searchFilter.getSortMode();
List<Map> list = tbl_Push_List_Mapper.getPushListByPage(phoneNumber, macAddress, sdkVersion, pushType, phoneType, sort, sortModel, iDisplayStart, iDisplayLength);
// //查询条件
// List<Criterion> queryList = new ArrayList<Criterion>();
// //排序条件
// List<Order> orderList = new ArrayList<Order>();
// //分页
// Integer iDisplayStart = searchFilter.getiDisplayStart();
// Integer iDisplayLength = searchFilter.getiDisplayLength();
// /**
// * 级联子查询
// */
// Map<String, List<Criterion>> joinMap = new HashMap<String, List<Criterion>>();
// //级联user表
// List<Criterion> userList = new ArrayList<Criterion>();
// //手机号
// String sSearch2 = searchFilter.getsSearch2();
// if (sSearch2 != null && sSearch2.length() > 0) {
// userList.add(Restrictions.like("phoneNumber", "%" + sSearch2 + "%"));
// }
// if (userList.size() > 0) {
// joinMap.put("user", userList);
// }
// //级联device表
// List<Criterion> deviceList = new ArrayList<Criterion>();
// //mac地址
// String sSearch3 = searchFilter.getsSearch3();
// if (sSearch3 != null && sSearch3.length() > 0) {
// deviceList.add(Restrictions.like("macAddress", "%" + sSearch3 + "%"));
// }
// //SDK版本
// String sSearch4 = searchFilter.getsSearch4();
// if (sSearch4 != null && sSearch4.length() > 0) {
// deviceList.add(Restrictions.eq("sdkVersion", Integer.valueOf(sSearch4)));
// }
// if (deviceList.size() > 0) {
// joinMap.put("device", deviceList);
// }
// //推送消息类型
// String selectField = searchFilter.getSelectField();
// if (selectField != null && selectField.length() > 0) {
// queryList.add(Restrictions.eq("pushType", selectField));
// }
// //推送手机类型
// String selectField1 = searchFilter.getSelectField1();
// if (selectField1 != null && selectField1.length() > 0) {
// queryList.add(Restrictions.eq("phoneType", selectField1));
// }
// //过滤
// String sSearch = searchFilter.getsSearch();
// //输入框过滤字段
// String searchField = searchFilter.getSearchField();
// if (sSearch != null && sSearch.length() > 0) {
// if (searchField != null && searchField.length() > 0) {
// queryList.add(Restrictions.eq(searchField, Integer.valueOf(sSearch)));
// }
// }
// //排序字段
// String sortField = searchFilter.getSortField();
// if (StringUtils.isNotBlank(sortField)) {
// //排序方式
// String sortMode = searchFilter.getSortMode();
// //升序
// if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
// orderList.add(Order.asc(sortField));
// } //降序
// else {
// orderList.add(Order.desc(sortField));
// }
// } else {
// orderList.add(Order.desc("pushId"));
// }
// Pagination<PushList> page = this.pushListDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, queryList.toArray(new Criterion[queryList.size()]));
for (Map map : list) {
String data = IfishUtil.TimestampToStringAndSecond(map.get("create_time"));
map.put("create_time", data);
}
Pagination<Map> page1 = new Pagination<>();
int count = tbl_Push_List_Mapper.getPushListByPageCount(phoneNumber, macAddress, sdkVersion, pushType, phoneType, sort, sortModel);
page1.setList(list);
page1.setPageNo(iDisplayStart);
page1.setPageSize(iDisplayLength);
page1.setTotalCount(count);
return page1;
} else {
return null;
}
}
@Override
public JsonResult pushAllUser(PushList pushList) {
Integer firstResult = 0;
Integer maxResults = 500;
JSONObject data = new JSONObject();
String type = "ALL";
if (pushList.getPushType().equals("all_ios_push")) {
type = "iOS";
} else if (pushList.getPushType().equals("all_android_push")) {
type = "ANDROID";
}
final String phoneType = type;
while(true){
List<Integer> list = userDao.getUserIds(pushList.getPushType(),firstResult, maxResults);
Integer size = list.size();
if(size<=0){
break;
} else{
firstResult+=size;
list.forEach(userId -> {
data.put("userId",userId);
data.put("deviceId",0);
data.put("phoneType",phoneType);
data.put("showName","");
data.put("pushType",PushTypeEnum.qu_reply.getKey());
data.put("pushTitle","系统通知");
data.put("pushContext",pushList.getPushContext());
sendPushQueueMessage(data);
});
}
}
//推送类型和参数
String pushType = pushList.getPushType();
Map<String, String> map = new HashMap<String, String>();
map.put("push_link", pushList.getPushLink());
map.put("msg_type", pushType);
//异步推送云信消息
// asyncTaskService.sendMsgToAll(pushType, "【" + pushList.getPushTitle() + "】" + pushList.getPushContext(), map);
return ResultUtil.success();
}
/**
* 推送Push消息队列
* @param data 内容
*/
private void sendPushQueueMessage(JSONObject data) {
QueueEventEntity eventEntity = new QueueEventEntity();
eventEntity.setEventName("com.ifish7.mq.queues.event.PushNotifcationEvent");
eventEntity.setEventProcess("deviceNotifcationPlus");
QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.user.entity.TblPushList",data);
eventEntity.setEventBody(eventBody);
String json = JSONObject.toJSONString(eventEntity);
jmsTemplate.send(ifish7PushQueueDestination,(Session session) -> session.createTextMessage(json));
}
@Override
public Pagination<UpgradeNotes> getUpgradeNotesByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//过滤
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.eq("remarks", sSearch));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<UpgradeNotes> page = this.upgradeNotesDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public void addUpgradeNotes(UpgradeNotes upgradeNotes) {
if (upgradeNotes != null) {
//开启自动升级
int number = this.deviceDao.OnUpgrade(upgradeNotes);
//新增记录
upgradeNotes.setUpgradeNumber(number);
upgradeNotes.setCreateTime(new Date());
this.upgradeNotesDao.save(upgradeNotes);
}
}
@Override
public void onoffUpgradeSdk(Integer deviceId, Integer upgradeVersion, String isUpgrade) {
Device device = this.deviceDao.get(deviceId);
if (device != null) {
if (isUpgrade != null && isUpgrade.equals(BooleanEnum.YES.getKey())) {
device.setUpgradeVersion(upgradeVersion);
device.setIsUpgrade(BooleanEnum.YES.getKey());
} else {
device.setUpgradeVersion(null);
device.setIsUpgrade(BooleanEnum.NO.getKey());
}
this.deviceDao.update(device);
}
}
@Override
public void onoffCharge(String factoryCode, String yearMonth) {
PayBillId id = new PayBillId();
id.setBillMonth(yearMonth);
id.setFactoryCode(factoryCode);
PayBill payBill = this.payBillDao.get(id);
String sql = "UPDATE tbl_device SET is_charge='1',charge_time=CURRENT_TIMESTAMP() where factory_code='" + factoryCode + "' and is_blacklist='0' and date_format(authorize_time,'%Y-%m')='" + yearMonth + "'";
int i = this.deviceDao.executeSql(sql);
System.out.println(i);
if (payBill != null) {
payBill.setPayStatus(PayStatusEnum.one.getKey());
this.payBillDao.update(payBill);
}
}
@Override
public Pagination<Camera> getCameraByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//激活时间
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.eq("cameraId", sSearch));
}
//激活码
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
queryList.add(Restrictions.eq("activeCode", sSearch1));
}
//激活时间
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.sqlRestriction("'" + sSearch2 + "'=date_format(active_time,'%Y-%m-%d')"));
}
//是否激活
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
if (selectField.equals(BooleanEnum.YES.getKey())) {
queryList.add(Restrictions.isNotNull("activeCode"));
} else if (selectField.equals(BooleanEnum.NO.getKey())) {
queryList.add(Restrictions.isNull("activeCode"));
}
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<Camera> page = this.cameraDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public boolean activeCamera(String cameraId, String activeCode) {
if (cameraId != null && cameraId.length() > 0 && activeCode != null && activeCode.length() > 0) {
Camera camera = this.cameraDao.get(cameraId);
//摄像头未激活
if (camera != null && (camera.getActiveCode() == null || camera.getActiveCode().length() <= 0)) {
CameraActive cameraActive = cameraActiveDao.get(activeCode);
//激活码未使用
if (cameraActive != null && cameraActive.getIsUsed().equals(BooleanEnum.NO.getKey())) {
//激活
camera.setActiveCode(activeCode);
camera.setActiveTime(new Date());
this.cameraDao.update(camera);
//激活码失效
cameraActive.setIsUsed(BooleanEnum.YES.getKey());
this.cameraActiveDao.update(cameraActive);
return true;
}
} else {
return true;
}
}
return false;
}
@Override
public Pagination<CameraActive> getCameraActiveByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//激活码
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.eq("activeCode", sSearch));
}
//批次号
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
queryList.add(Restrictions.like("batchCode", "%" + sSearch1 + "%"));
}
//生成时间
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.sqlRestriction("'" + sSearch2 + "'=date_format(create_time,'%Y-%m-%d')"));
}
//是否使用
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("isUsed", selectField));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<CameraActive> page = this.cameraActiveDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Pagination<CameraUser> getCameraUserByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//摄像头ID
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.eq("cameraUserId.cameraId", sSearch));
}
//用户ID
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
queryList.add(Restrictions.eq("cameraUserId.userId", Integer.valueOf(sSearch1)));
}
//显示名称
String sSearch3 = searchFilter.getsSearch3();
if (sSearch3 != null && sSearch3.length() > 0) {
queryList.add(Restrictions.like("showName", "%" + sSearch3 + "%"));
}
//是否主控
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("isMaster", selectField));
}
//是否看护
String selectField2 = searchFilter.getSelectField2();
if (selectField2 != null && selectField2.length() > 0) {
queryList.add(Restrictions.eq("isLook", selectField2));
}
//是否直播
String selectField3 = searchFilter.getSelectField3();
if (selectField3 != null && selectField3.length() > 0) {
queryList.add(Restrictions.eq("isLive", selectField3));
}
/**
* 级联子查询
*/
Map<String, List<Criterion>> joinMap = new HashMap<String, List<Criterion>>();
//级联user表
List<Criterion> userList = new ArrayList<Criterion>();
//手机号
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
userList.add(Restrictions.like("phoneNumber", "%" + sSearch2 + "%"));
}
if (userList.size() > 0) {
joinMap.put("user", userList);
}
//级联camera表
List<Criterion> cameraList = new ArrayList<Criterion>();
//是否激活
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
if (selectField1.equals(BooleanEnum.YES.getKey())) {
cameraList.add(Restrictions.isNotNull("activeCode"));
} else if (selectField1.equals(BooleanEnum.NO.getKey())) {
cameraList.add(Restrictions.isNull("activeCode"));
}
}
if (cameraList.size() > 0) {
joinMap.put("camera", cameraList);
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<CameraUser> page = this.cameraUserDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Integer generateActiveCode(String batchCode, Integer batchNumber) {
if (batchNumber != null) {
for (int i = 0; i < batchNumber; i++) {
CameraActive cameraActive = new CameraActive();
cameraActive.setBatchCode(batchCode);
cameraActive.setCreateTime(new Date());
cameraActiveDao.save(cameraActive);
}
}
return batchNumber;
}
@Override
public Map<String, Object> getReportData(SearchFilter searchFilter) {
Map<String, Object> map = new HashMap<String, Object>();
//电子厂
String selectField = searchFilter.getSelectField();
selectField = (selectField != null && selectField.length() > 0) ? selectField : "";
//鱼缸厂
String selectField1 = searchFilter.getSelectField1();
selectField1 = (selectField1 != null && selectField1.length() > 0) ? selectField1 : "";
//授权状态
String selectField2 = searchFilter.getSelectField2();
selectField2 = (selectField2 != null && selectField2.length() > 0) ? selectField2 : "";
//分配日期
String sSearch = searchFilter.getsSearch();
String sSearch1 = searchFilter.getsSearch1();
sSearch = (sSearch != null && sSearch.length() > 0) ? sSearch : "";
sSearch1 = (sSearch1 != null && sSearch1.length() > 0) ? sSearch1 : "";
//百分比
NumberFormat numberFormat = NumberFormat.getInstance();
//设置精确到小数点后0位
numberFormat.setMaximumFractionDigits(0);
//默认查询
if (selectField.length() == 0 && selectField1.length() == 0) {
//按电子厂分组统计设备数量
String sql = "SELECT d.factory_code AS factoryCode,f.factory_name AS factoryName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_factory_list f ON d.factory_code=f.factory_code where IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.factory_code ORDER BY deviceNumber DESC";
List<FactoryData> list = (List<FactoryData>) this.deviceDao.getReportDataByGroup(sql, FactoryData.class);
//设备数量
Integer total = 0;
for (FactoryData data : list) {
total += data.getDeviceNumber().intValue();
if (data.getFactoryName() == null) {
data.setFactoryName("未知");
}
}
//计算占比
for (FactoryData data : list) {
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按鱼缸厂分组统计设备数量
String sql1 = "SELECT d.brand_code AS brandCode,v.brand_name AS brandName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_vender_list v ON d.brand_code=v.brand_code where IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.brand_code ORDER BY deviceNumber DESC";
List<VenderData> list1 = (List<VenderData>) this.deviceDao.getReportDataByGroup(sql1, VenderData.class);
//计算占比
for (VenderData data : list1) {
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按硬件类型分组统计设备数量
String sql2 = "SELECT d.hardware_type AS hardwareType,h.hardware_name AS hardwareName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_hardware_type h ON d.hardware_type=h.hardware_type where IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.hardware_type ORDER BY deviceNumber DESC";
List<HardwareTypeData> list2 = (List<HardwareTypeData>) this.deviceDao.getReportDataByGroup(sql2, HardwareTypeData.class);
//计算占比
for (HardwareTypeData data : list2) {
if (data.getHardwareName() == null) {
if (data.getHardwareType().length() > 0) {
data.setHardwareName("<label class='label label-danger'>未知类型(" + data.getHardwareType() + ")</label>");
} else {
data.setHardwareName("<label class='label label-warning'>未知</label>");
}
}
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//被绑定设备数量
String sql4 = "select count(*) from tbl_device_user du LEFT JOIN tbl_device d ON d.device_id=du.device_id where du.is_master='1' and IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true)";
int bindNumber = this.deviceDao.getNumber(sql4);
//被绑定设备占比
String bindPrec = total != 0 ? numberFormat.format((float) bindNumber / (float) total * 100) : "0";
//按电子厂分组统计
map.put("result", "default");
map.put("totalNumber", total);
map.put("bindNumber", bindNumber);
map.put("bindPrec", bindPrec);
map.put("list", list);
map.put("list1", list1);
map.put("list2", list2);
} //按电子厂查询
else if (selectField.length() > 0 && selectField1.length() == 0) {
//按电子厂下鱼缸厂分组统计设备数量
String sql = "SELECT d.brand_code AS brandCode,v.brand_name AS brandName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_vender_list v ON d.brand_code=v.brand_code WHERE d.factory_code='" + selectField + "' and IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.brand_code ORDER BY deviceNumber DESC";
List<VenderData> list = (List<VenderData>) this.deviceDao.getReportDataByGroup(sql, VenderData.class);
//设备数量
Integer total = 0;
for (VenderData data : list) {
total += data.getDeviceNumber().intValue();
}
//计算占比
for (VenderData data : list) {
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按电子厂下设备类型分组统计设备数量
String sql3 = "SELECT d.hardware_type AS hardwareType,h.hardware_name AS hardwareName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_hardware_type h ON d.hardware_type=h.hardware_type WHERE d.factory_code='" + selectField + "' and IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.hardware_type ORDER BY deviceNumber DESC";
List<HardwareTypeData> list1 = (List<HardwareTypeData>) this.deviceDao.getReportDataByGroup(sql3, HardwareTypeData.class);
//计算占比
for (HardwareTypeData data : list1) {
if (data.getHardwareName() == null) {
if (data.getHardwareType().length() > 0) {
data.setHardwareName("<label class='label label-danger'>未知类型(" + data.getHardwareType() + ")</label>");
} else {
data.setHardwareName("<label class='label label-warning'>未知</label>");
}
}
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//被绑定设备数量
String sql2 = "select count(*) from tbl_device_user du LEFT JOIN tbl_device d ON d.device_id=du.device_id where is_master='1' and d.factory_code='" + selectField + "' and IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true)";
int bindNumber = this.deviceDao.getNumber(sql2);
//被绑定设备占比
String bindPrec = total != 0 ? numberFormat.format((float) bindNumber / (float) total * 100) : "0";
//按鱼缸厂分类统计
map.put("result", "result1");
map.put("totalNumber", total);
map.put("bindNumber", bindNumber);
map.put("bindPrec", bindPrec);
map.put("list", list);
map.put("list1", list1);
} //按鱼缸厂查询
else if (selectField.length() == 0 && selectField1.length() > 0) {
//按鱼缸厂下电子厂分组统计设备数量
String sql = "SELECT d.factory_code AS factoryCode,f.factory_name AS factoryName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_factory_list f ON d.factory_code=f.factory_code WHERE d.brand_code='" + selectField1 + "' AND IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.factory_code ORDER BY deviceNumber DESC";
List<FactoryData> list = (List<FactoryData>) this.deviceDao.getReportDataByGroup(sql, FactoryData.class);
//设备数量
Integer total = 0;
for (FactoryData data : list) {
total += data.getDeviceNumber().intValue();
}
//计算占比
for (FactoryData data : list) {
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按鱼缸厂下设备类型分组统计设备数量
String sql3 = "SELECT d.hardware_type AS hardwareType,h.hardware_name AS hardwareName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_hardware_type h ON d.hardware_type=h.hardware_type WHERE d.brand_code='" + selectField1 + "' AND IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.hardware_type ORDER BY deviceNumber DESC";
List<HardwareTypeData> list1 = (List<HardwareTypeData>) this.deviceDao.getReportDataByGroup(sql3, HardwareTypeData.class);
//计算占比
for (HardwareTypeData data : list1) {
if (data.getHardwareName() == null) {
if (data.getHardwareType().length() > 0) {
data.setHardwareName("<label class='label label-danger'>未知类型(" + data.getHardwareType() + ")</label>");
} else {
data.setHardwareName("<label class='label label-warning'>未知</label>");
}
}
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//被绑定设备数量
String sql2 = "select count(*) from tbl_device_user du LEFT JOIN tbl_device d ON d.device_id=du.device_id where is_master='1' and d.brand_code='" + selectField1 + "' and IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true)";
int bindNumber = this.deviceDao.getNumber(sql2);
//被绑定设备占比
String bindPrec = total != 0 ? numberFormat.format((float) bindNumber / (float) total * 100) : "0";
//按鱼缸厂分类统计
map.put("result", "result2");
map.put("totalNumber", total);
map.put("bindNumber", bindNumber);
map.put("bindPrec", bindPrec);
map.put("list", list);
map.put("list1", list1);
} //按电子厂和鱼缸厂查询
else if (selectField.length() > 0 && selectField1.length() > 0) {
//按电子厂和鱼缸厂分组统计设备数量
String sql = "SELECT d.hardware_type AS hardwareType,h.hardware_name AS hardwareName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_hardware_type h ON d.hardware_type=h.hardware_type WHERE d.factory_code='" + selectField + "' AND d.brand_code='" + selectField1 + "' and IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true) GROUP BY d.hardware_type ORDER BY deviceNumber DESC";
List<HardwareTypeData> list = (List<HardwareTypeData>) this.deviceDao.getReportDataByGroup(sql, HardwareTypeData.class);
//设备数量
Integer total = 0;
for (HardwareTypeData data : list) {
total += data.getDeviceNumber().intValue();
}
//计算占比
for (HardwareTypeData data : list) {
if (data.getHardwareName() == null) {
if (data.getHardwareType().length() > 0) {
data.setHardwareName("<label class='label label-danger'>未知类型(" + data.getHardwareType() + ")</label>");
} else {
data.setHardwareName("<label class='label label-warning'>未知</label>");
}
}
int deviceNumber = data.getDeviceNumber().intValue();
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//被绑定设备数量
String sql2 = "select count(*) from tbl_device_user du LEFT JOIN tbl_device d ON d.device_id=du.device_id where is_master='1' and d.factory_code='" + selectField + "' AND d.brand_code='" + selectField1 + "' AND IF('" + selectField2 + "' != '', d.is_blacklist='" + selectField2 + "', true) and IF('" + sSearch + "' != '', d.create_date>='" + sSearch + "', true) and IF('" + sSearch1 + "' != '', d.create_date<='" + sSearch1 + "', true)";
int bindNumber = this.deviceDao.getNumber(sql2);
//被绑定设备占比
String bindPrec = total != 0 ? numberFormat.format((float) bindNumber / (float) total * 100) : "0";
//按电子厂和鱼缸厂分类统计
map.put("result", "result3");
map.put("totalNumber", total);
map.put("bindNumber", bindNumber);
map.put("bindPrec", bindPrec);
map.put("list", list);
}
return map;
}
@Override
public Map<String, Object> getRecordData(SearchFilter searchFilter) {
Map<String, Object> map = new HashMap<String, Object>();
//电子厂
String selectField = searchFilter.getSelectField();
selectField = (selectField != null && selectField.length() > 0) ? selectField : "";
//是否收费
String selectField1 = searchFilter.getSelectField1();
selectField1 = (selectField1 != null && selectField1.length() > 0) ? selectField1 : "0";
//授权开始日期
String sSearch = searchFilter.getsSearch();
sSearch = (sSearch != null && sSearch.length() > 0) ? sSearch : "";
//授权结束日期
String sSearch1 = searchFilter.getsSearch1();
sSearch1 = (sSearch1 != null && sSearch1.length() > 0) ? sSearch1 : "";
//百分比
NumberFormat numberFormat = NumberFormat.getInstance();
//设置精确到小数点后0位
numberFormat.setMaximumFractionDigits(0);
//默认查询
if (selectField.length() == 0 && sSearch.length() == 0 && sSearch1.length() == 0) {
//获取上个月数据
Format format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
//上个月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
String firstDay = format.format(calendar.getTime());
searchFilter.setsSearch(firstDay);
//上个月最后一天
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, maxDay);
String lastDay = format.format(calendar.getTime());
searchFilter.setsSearch1(lastDay);
//按电子厂和鱼缸厂分组统计设备数量
StringBuilder sb = new StringBuilder("SELECT d.factory_code AS factoryCode,f.factory_name AS factoryName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_factory_list f ON f.factory_code=d.factory_code WHERE is_blacklist=0 ");
if (!"-1".equals(selectField1)) {
sb.append("AND d.is_charge='" + selectField1 + "' ");
}
sb.append("AND date_format(d.authorize_time,'%Y-%m-%d') BETWEEN '" + firstDay + "' AND '" + lastDay + "' GROUP BY d.factory_code ORDER BY deviceNumber DESC");
List<FactoryRecordData> list = (List<FactoryRecordData>) this.deviceDao.getReportDataByGroup(sb.toString(), FactoryRecordData.class);
//设备数量
Integer total = 0;
for (FactoryRecordData data : list) {
total += Integer.valueOf(data.getDeviceNumber().toString());
}
//计算占比
for (FactoryRecordData data : list) {
int deviceNumber = Integer.valueOf(data.getDeviceNumber().toString());
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按电子厂和鱼缸厂分类统计
map.put("result", "default");
map.put("searchFilter", searchFilter);
map.put("totalNumber", total);
map.put("list", list);
} //电子厂查询
else if (selectField.length() == 0 && sSearch.length() > 0 && sSearch1.length() > 0) {
StringBuilder sb = new StringBuilder("SELECT d.factory_code AS factoryCode,f.factory_name AS factoryName,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_factory_list f ON f.factory_code=d.factory_code WHERE is_blacklist=0 ");
if (!"-1".equals(selectField1)) {
sb.append("AND d.is_charge='" + selectField1 + "' ");
}
sb.append("AND date_format(d.authorize_time,'%Y-%m-%d') BETWEEN '" + sSearch + "' AND '" + sSearch1 + "' GROUP BY d.factory_code ORDER BY deviceNumber DESC");
//按电子厂和鱼缸厂分组统计设备数量
List<FactoryRecordData> list = (List<FactoryRecordData>) this.deviceDao.getReportDataByGroup(sb.toString(), FactoryRecordData.class);
//设备数量
Integer total = 0;
for (FactoryRecordData data : list) {
total += Integer.valueOf(data.getDeviceNumber().toString());
}
//计算占比
for (FactoryRecordData data : list) {
int deviceNumber = Integer.valueOf(data.getDeviceNumber().toString());
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按电子厂和鱼缸厂分类统计
map.put("result", "default");
map.put("searchFilter", searchFilter);
map.put("totalNumber", total);
map.put("list", list);
} //电子厂查询
else if (selectField.length() > 0 && sSearch.length() == 0 && sSearch1.length() == 0) {
//获取上个月数据
Format format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
//上个月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
String firstDay = format.format(calendar.getTime());
searchFilter.setsSearch(firstDay);
//上个月最后一天
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, maxDay);
String lastDay = format.format(calendar.getTime());
searchFilter.setsSearch1(lastDay);
//按电子厂和鱼缸厂分组统计设备数量
StringBuilder sb = new StringBuilder("SELECT date_format(d.authorize_time,'%Y-%m-%d') as date,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_factory_list f ON f.factory_code=d.factory_code WHERE d.is_blacklist=0 ");
if (!"-1".equals(selectField1)) {
sb.append("AND d.is_charge='" + selectField1 + "' ");
}
sb.append("AND d.factory_code='" + selectField + "' AND date_format(d.authorize_time,'%Y-%m-%d') BETWEEN '" + firstDay + "' AND '" + lastDay + "' GROUP BY date ORDER BY d.authorize_time DESC");
List<RecordData> list = (List<RecordData>) this.deviceDao.getReportDataByGroup(sb.toString(), RecordData.class);
//设备数量
Integer total = 0;
for (RecordData data : list) {
total += Integer.valueOf(data.getDeviceNumber().toString());
}
//计算占比
for (RecordData data : list) {
int deviceNumber = Integer.valueOf(data.getDeviceNumber().toString());
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按电子厂和鱼缸厂分类统计
map.put("result", "result1");
map.put("searchFilter", searchFilter);
map.put("totalNumber", total);
map.put("list", list);
} else if (selectField.length() > 0 && sSearch.length() > 0 && sSearch1.length() > 0) {
//按电子厂和鱼缸厂分组统计设备数量
StringBuilder sb = new StringBuilder("SELECT date_format(d.authorize_time,'%Y-%m-%d') as date,count(*) AS deviceNumber FROM tbl_device d LEFT JOIN tbl_factory_list f ON f.factory_code=d.factory_code WHERE d.is_blacklist=0 ");
if (!"-1".equals(selectField1)) {
sb.append("AND d.is_charge='" + selectField1 + "' ");
}
sb.append("AND d.factory_code='" + selectField + "' AND date_format(d.authorize_time,'%Y-%m-%d') BETWEEN '" + sSearch + "' AND '" + sSearch1 + "' GROUP BY date ORDER BY d.authorize_time DESC");
List<RecordData> list = (List<RecordData>) this.deviceDao.getReportDataByGroup(sb.toString(), RecordData.class);
//设备数量
Integer total = 0;
for (RecordData data : list) {
total += Integer.valueOf(data.getDeviceNumber().toString());
}
//计算占比
for (RecordData data : list) {
int deviceNumber = Integer.valueOf(data.getDeviceNumber().toString());
String result = numberFormat.format((float) deviceNumber / (float) total * 100);
data.setDevicePrec(result);
}
//按电子厂和鱼缸厂分类统计
map.put("result", "result1");
map.put("searchFilter", searchFilter);
map.put("totalNumber", total);
map.put("list", list);
}
return map;
}
@Override
public Pagination<OperateRecord> getOperateRecordByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//操作日期
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.sqlRestriction("'" + sSearch + "'=date_format(create_time,'%Y-%m-%d')"));
}
//电子厂
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
queryList.add(Restrictions.eq("factoryCode", sSearch1));
}
//分配编号
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.like("createCode", "%" + sSearch2 + "%"));
}
//授权年月
String sSearch3 = searchFilter.getsSearch3();
if (sSearch3 != null && sSearch3.length() > 0) {
queryList.add(Restrictions.sqlRestriction("'" + sSearch3 + "'=date_format(create_time,'%Y-%m')"));
}
//操作类型
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("recordType", selectField));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<OperateRecord> page = this.operateRecordDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Pagination<LoginRecord> getLoginRecordByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//mac地址
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.like("macAddress", "%" + sSearch + "%"));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("loginTime"));
}
Pagination<LoginRecord> page = this.loginRecordDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public Pagination<PayBill> getPayBillByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//电子厂
String sSearch = searchFilter.getsSearch();
if (sSearch != null && sSearch.length() > 0) {
queryList.add(Restrictions.eq("payBillId.factoryCode", sSearch));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("payBillId.billMonth"));
}
Pagination<PayBill> page = this.payBillDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
List<PayBill> list = page.getList();
for (PayBill payBill : list) {
Integer number = payBill.getAuthorizeNumber();
Integer payMoney = payBill.getPayMoney();
FactoryList factoryList = payBill.getFactoryList();
if (factoryList != null) {
//是否收税,电子厂信息维护
String isTax = factoryList.getIsTax();
if (StringUtils.isNotBlank(isTax)) {
isTax = BooleanEnum.NO.getKey();
factoryList.setIsTax(isTax);
} else {
isTax = BooleanEnum.NO.getKey();
factoryList.setIsTax(isTax);
}
//支付金额为null时
if (payMoney == null) {
//支付金额
Integer money = 0;
//数量小于1000,每个收费15元
if (number < 1000) {
money = number * 15;
} //数量1000~5000,每个收费12元
else if (number >= 1000 && number < 5000) {
money = number * 12;
} //数量5000~10000,每个收费10元
else if (number >= 5000 && number < 10000) {
money = number * 10;
} //数量大于10000,每个收费8元
else if (number >= 10000) {
money = number * 8;
}
//数量超过1000的且需要收税的每个收税一元
if (number >= 1000 && isTax.equals(BooleanEnum.YES.getKey())) {
payBill.setIsTax(isTax);
payBill.setPayMoney(money + number);
} else {
payBill.setIsTax(BooleanEnum.NO.getKey());
payBill.setPayMoney(money);
}
}
}
}
return page;
} else {
return null;
}
}
@Override
public PayeeInfo getPayeeInfo(Integer payeeId) {
return this.payeeInfoDao.get(payeeId);
}
@Override
public PayeeInfo saveOrUpdatePayeeInfo(PayeeInfo payeeInfo) {
Integer payeeId = payeeInfo.getPayeeId();
if (payeeId != null) {
this.payeeInfoDao.update(payeeInfo);
} else {
payeeInfo.setCreateTime(new Date());
this.payeeInfoDao.save(payeeInfo);
}
return payeeInfo;
}
@Override
public Pagination<Ueditor> getUeditorByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("ueditorId"));
}
Pagination<Ueditor> page = this.ueditorDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public boolean saveUeditor(Ueditor ueditor) {
Integer ueditorId = ueditor.getUeditorId();
if (ueditorId != null) {
this.ueditorDao.update(ueditor);
return true;
} else {
String ueditorType = ueditor.getUeditorType();
if (ueditorType.equals(UeditorTypeEnum.nopinglun.getKey())) {
//生成网页
String result = IfishUtil.getHtmlFile("index1.html", ueditor.getUeditorTitle(), ueditor.getUeditorContent());
if (result.length() > 0) {
ueditor.setHtmlName(result);
} else {
return false;
}
} else if (ueditorType.equals(UeditorTypeEnum.yespinglun.getKey())) {
//生成网页
String result = IfishUtil.getHtmlFile("index2.html", ueditor.getUeditorTitle(), ueditor.getUeditorContent());
if (result.length() > 0) {
ueditor.setHtmlName(result);
} else {
return false;
}
}
ueditor.setCreateTime(new Date());
this.ueditorDao.save(ueditor);
return true;
}
}
@Override
public Ueditor getUeditorById(Integer ueditorId) {
return this.ueditorDao.get(ueditorId);
}
@Override
public boolean deleteUeditor(Integer ueditorId) {
if (ueditorId != null) {
Ueditor ueditor = this.ueditorDao.get(ueditorId);
this.ueditorDao.delete(ueditor);
return true;
}
return false;
}
@Override
public Pagination<LiveBanner> getLiveBannerByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("bannerId"));
}
Pagination<LiveBanner> page = this.liveBannerDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public boolean saveOrUpdateLiveBanner(LiveBanner liveBanner, MultipartFile fileUpload) {
Integer bannerId = liveBanner.getBannerId();
boolean bln = false;
if (fileUpload != null && !fileUpload.isEmpty()) {
//上传的图片不能大于1M
if (fileUpload.getSize() > 1048576) {
return false;
} else {
//图片名称
String picName = String.valueOf(System.currentTimeMillis()) + ".png";
try {
File file = new File(IfishFileDirectory.path_img_banner, picName);
//不存在则创建
if (!file.exists()) {
file.mkdirs();
}
//保存
fileUpload.transferTo(file);
liveBanner.setBannerImg(picName);
bln = true;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
if (bannerId != null) {
//修改
LiveBanner curLiveBanner = this.liveBannerDao.get(bannerId);
if (curLiveBanner != null) {
curLiveBanner.setBannerType(liveBanner.getBannerType());
curLiveBanner.setBannerLink(liveBanner.getBannerLink());
if (bln) {
curLiveBanner.setBannerImg(liveBanner.getBannerImg());
}
this.liveBannerDao.update(curLiveBanner);
return true;
}
} else {
//新增
LiveBanner curLiveBanner = new LiveBanner();
curLiveBanner.setAppShow(BooleanEnum.NO.getKey());
curLiveBanner.setBannerType(liveBanner.getBannerType());
curLiveBanner.setBannerLink(liveBanner.getBannerLink());
if (bln) {
curLiveBanner.setBannerImg(liveBanner.getBannerImg());
}
curLiveBanner.setCreateTime(new Date());
this.liveBannerDao.save(curLiveBanner);
return true;
}
return false;
}
@Override
public LiveBanner getLiveBannerById(Integer bannerId) {
if (bannerId != null) {
return this.liveBannerDao.get(bannerId);
}
return null;
}
@Override
public boolean liveBannerShowUpdate(Integer bannerId, String appShow) {
if (bannerId != null && appShow != null && appShow.length() > 0) {
LiveBanner liveBanner = this.liveBannerDao.get(bannerId);
if (liveBanner != null) {
liveBanner.setAppShow(appShow);
this.liveBannerDao.update(liveBanner);
return true;
}
}
return false;
}
@Override
public boolean deleteLiveBanner(Integer bannerId) {
if (bannerId != null) {
LiveBanner liveBanner = this.liveBannerDao.get(bannerId);
if (liveBanner != null) {
this.liveBannerDao.delete(liveBanner);
return true;
}
}
return false;
}
@Override
public Pagination<LiveRoom> getLiveRoomByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
/**
* 级联子查询
*/
Map<String, List<Criterion>> joinMap = new HashMap<String, List<Criterion>>();
//级联user表
List<Criterion> userList = new ArrayList<Criterion>();
//手机号
String sSearch1 = searchFilter.getsSearch1();
if (sSearch1 != null && sSearch1.length() > 0) {
userList.add(Restrictions.like("phoneNumber", "%" + sSearch1 + "%"));
}
//手机号
String sSearch3 = searchFilter.getsSearch3();
if (sSearch3 != null && sSearch3.length() > 0) {
userList.add(Restrictions.like("nickName", "%" + sSearch3 + "%"));
}
if (userList.size() > 0) {
joinMap.put("user", userList);
}
//直播间名称
String sSearch2 = searchFilter.getsSearch2();
if (sSearch2 != null && sSearch2.length() > 0) {
queryList.add(Restrictions.like("roomName", "%" + sSearch2 + "%"));
}
//直播间状态
String selectField = searchFilter.getSelectField();
if (selectField != null && selectField.length() > 0) {
queryList.add(Restrictions.eq("roomStatus", selectField));
}
//是否推荐
String selectField1 = searchFilter.getSelectField1();
if (selectField1 != null && selectField1.length() > 0) {
orderList.add(Order.asc("tuijianNum"));
queryList.add(Restrictions.eq("isTuijian", selectField1));
}
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<LiveRoom> page = this.liveRoomDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, queryList.toArray(new Criterion[queryList.size()]));
List<LiveRoom> list = page.getList();
for (LiveRoom liveRoom : list) {
List<CameraUser> cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", liveRoom.getUser().getUserId()));
/*for (CameraUser tmp : cameraUser) {
liveRoom.getCameraList().add(tmp.getCamera());
}*/
liveRoom.setCameraUserList(cameraUserList);
}
page.setList(list);
return page;
} else {
return null;
}
}
@Override
public LiveRoom liveRoomStatus(Integer roomId, String roomStatus) {
LiveRoom liveRoom = this.liveRoomDao.get(roomId);
if (liveRoom != null) {
liveRoom.setRoomStatus(roomStatus);
this.liveRoomDao.update(liveRoom);
}
return null;
}
@Override
public JsonResult liveRoomTuiJian(Integer roomId, String isTuijian, Integer tuijianNum) {
liveRoomDao.updateIsTuijian(roomId, isTuijian, tuijianNum);
return ResultUtil.success();
}
@Override
public Pagination<IfishDoctor> getIfishDoctorByPage(SearchFilter searchFilter) {
if (searchFilter != null) {
//查询条件
List<Criterion> queryList = new ArrayList<Criterion>();
//排序条件
List<Order> orderList = new ArrayList<Order>();
//分页
Integer iDisplayStart = searchFilter.getiDisplayStart();
Integer iDisplayLength = searchFilter.getiDisplayLength();
//排序字段
String sortField = searchFilter.getSortField();
if (StringUtils.isNotBlank(sortField)) {
//排序方式
String sortMode = searchFilter.getSortMode();
//升序
if (sortMode != null && SortModeEnum.ASC.getKey().equals(sortMode)) {
orderList.add(Order.asc(sortField));
} //降序
else {
orderList.add(Order.desc(sortField));
}
} else {
orderList.add(Order.desc("createTime"));
}
Pagination<IfishDoctor> page = this.ifishDoctorDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()]));
return page;
} else {
return null;
}
}
@Override
public boolean sendMsgToShops(Integer questionId) {
IfishDoctor ifishDoctor = ifishDoctorDao.get(questionId);
if (ifishDoctor != null) {
List<Integer> list = this.shopsInfoDao.getShopsUserIdByRand(ifishDoctor.getUserId());
if (list.size() > 0) {
ifishDoctor.setIsSend(BooleanEnum.YES.getKey());
ifishDoctorDao.update(ifishDoctor);
}
//发送云信消息
neteaseIM.sendBatchMsg(ifishDoctor.getUserId().toString(), JSONArray.toJSONString(list), "来自鱼医生的提问:" + ifishDoctor.getQuestionContent(), "");
return true;
}
return false;
}
}