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 getRoles() { return this.roleDao.findByProperty(); } @Override public List 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 roleList = new ArrayList(); 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 getFactoryList() { return getFactoryListByPage(null).getList(); } @Override public List getVenderList() { return getVenderListByPage(null).getList(); } @Override public List getHardwareTypeList() { return getHardwareTypeByPage(null).getList(); } /** * 用户列表 */ @Override public Pagination getUserByPage(SearchFilter searchFilter, UserAsset userAsset) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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> joinMap = new HashMap>(); //用户资产信息查询 List userAssetQueryList = new ArrayList(); //签到日期 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 orderMap = new HashMap(); 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 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 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 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 getUserDetail(User user) { Map map = new HashMap(); user = this.userDao.get(user.getUserId()); if (user != null) { map.put("user", user); List deviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.userId", user.getUserId())); map.put("deviceUserList", deviceUserList); List cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", user.getUserId())); map.put("cameraUserList", cameraUserList); List cameraIds = new ArrayList(); for (CameraUser cameraUser : cameraUserList) { cameraIds.add(cameraUser.getCameraUserId().getCameraId()); } if (cameraIds.size() > 0) { List deviceCameraList = this.deviceCameraDao.findByProperty(Restrictions.in("deviceCameraId.cameraId", cameraIds)); map.put("deviceCameraList", deviceCameraList); } } return map; } public Pagination getNeteaseUserByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 createMap = neteaseIM.createAccid(neteaseUser.getAccountNo().toString(), neteaseUser.getNickName(), neteaseUser.getLinkImg(), ""); if (createMap != null) { if (createMap.get("code").equals(NeteaseEnum.status200.getKey())) { //更新云信 Map exMap = new HashMap(); exMap.put("user_type", neteaseUser.getUserType()); Map 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 exMap = new HashMap(); exMap.put("user_type", neteaseUser.getUserType()); Map 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 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 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 map = new HashMap(); map.put("timestamp", IfishUtil.format(new Date())); map.put("msg_type", pushType); //推送记录 PushList pushList = new PushList(); //商家审核推送 if (pushType.equals(PushTypeEnum.review_push.getKey())) { Map 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 getQusetionByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getVenderListByPage(SearchFilter searchFilter) { //查询条件 List queryList = new ArrayList(); 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 orderList = new ArrayList(); //排序字段 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 page = this.venderListDao.findByCriteria(searchFilter.getiDisplayStart(), searchFilter.getiDisplayLength(), orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { Pagination page = this.venderListDao.findByCriteria(null, null, null, null); return page; } } @Override public Pagination getDeviceListByPage(String brandCode, SearchFilter searchFilter) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getSysUserListByPage(SearchFilter searchFilter) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.securityUserDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } @Override public List 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 getVersionByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getHardwareTypeByPage(SearchFilter searchFilter) { if (searchFilter != null) { List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.hardwareTypeDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { //下拉列表 Pagination 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 getDeviceByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.deviceDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { return null; } } @Override public Pagination getDeviceUserByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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> joinMap = new HashMap>(); //级联user表 List userList = new ArrayList(); //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 deviceList = new ArrayList(); //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 page = this.deviceUserDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, queryList.toArray(new Criterion[queryList.size()])); return page; } else { return null; } } @Override public Pagination getTmpPushRemindByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 venderLists = new HashSet(); 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 hardwareTypeSet = new HashSet(); 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 venderLists = new HashSet(); 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 hardwareTypeSet = new HashSet(); 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 getFactoryListByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.factoryListDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { Pagination 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 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 list = tbl_Push_List_Mapper.getPushListByPage(phoneNumber, macAddress, sdkVersion, pushType, phoneType, sort, sortModel, iDisplayStart, iDisplayLength); // //查询条件 // List queryList = new ArrayList(); // //排序条件 // List orderList = new ArrayList(); // //分页 // Integer iDisplayStart = searchFilter.getiDisplayStart(); // Integer iDisplayLength = searchFilter.getiDisplayLength(); // /** // * 级联子查询 // */ // Map> joinMap = new HashMap>(); // //级联user表 // List userList = new ArrayList(); // //手机号 // 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 deviceList = new ArrayList(); // //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 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 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 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 map = new HashMap(); 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 getUpgradeNotesByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getCameraByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getCameraActiveByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.cameraActiveDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { return null; } } @Override public Pagination getCameraUserByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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> joinMap = new HashMap>(); //级联user表 List userList = new ArrayList(); //手机号 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 cameraList = new ArrayList(); //是否激活 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 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 getReportData(SearchFilter searchFilter) { Map map = new HashMap(); //电子厂 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 list = (List) 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 list1 = (List) 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 list2 = (List) this.deviceDao.getReportDataByGroup(sql2, HardwareTypeData.class); //计算占比 for (HardwareTypeData data : list2) { if (data.getHardwareName() == null) { if (data.getHardwareType().length() > 0) { data.setHardwareName(""); } else { data.setHardwareName(""); } } 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 list = (List) 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 list1 = (List) this.deviceDao.getReportDataByGroup(sql3, HardwareTypeData.class); //计算占比 for (HardwareTypeData data : list1) { if (data.getHardwareName() == null) { if (data.getHardwareType().length() > 0) { data.setHardwareName(""); } else { data.setHardwareName(""); } } 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 list = (List) 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 list1 = (List) this.deviceDao.getReportDataByGroup(sql3, HardwareTypeData.class); //计算占比 for (HardwareTypeData data : list1) { if (data.getHardwareName() == null) { if (data.getHardwareType().length() > 0) { data.setHardwareName(""); } else { data.setHardwareName(""); } } 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 list = (List) 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(""); } else { data.setHardwareName(""); } } 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 getRecordData(SearchFilter searchFilter) { Map map = new HashMap(); //电子厂 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 list = (List) 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 list = (List) 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 list = (List) 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 list = (List) 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 getOperateRecordByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.operateRecordDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { return null; } } @Override public Pagination getLoginRecordByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.loginRecordDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); return page; } else { return null; } } @Override public Pagination getPayBillByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 page = this.payBillDao.findByCriteria(iDisplayStart, iDisplayLength, orderList, queryList.toArray(new Criterion[queryList.size()])); List 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 getUeditorByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getLiveBannerByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 getLiveRoomByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 Integer iDisplayStart = searchFilter.getiDisplayStart(); Integer iDisplayLength = searchFilter.getiDisplayLength(); /** * 级联子查询 */ Map> joinMap = new HashMap>(); //级联user表 List userList = new ArrayList(); //手机号 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 page = this.liveRoomDao.findByJoinCriteria(iDisplayStart, iDisplayLength, orderList, joinMap, queryList.toArray(new Criterion[queryList.size()])); List list = page.getList(); for (LiveRoom liveRoom : list) { List 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 getIfishDoctorByPage(SearchFilter searchFilter) { if (searchFilter != null) { //查询条件 List queryList = new ArrayList(); //排序条件 List orderList = new ArrayList(); //分页 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 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 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; } }