3081 lines
138 KiB
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;
|
|
}
|
|
|
|
}
|