package com.ld.igds.oa.service; import com.bstek.bdf2.core.model.DefaultDept; import com.bstek.bdf2.core.orm.hibernate.HibernateDao; import com.bstek.dorado.data.provider.Page; import com.ld.igds.models.DeptDevice; import com.ld.igds.models.DeviceCheckup; import com.ld.igds.sys.service.SysDeptService; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.DateUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 库区设备信息 * * @Author:YAN */ @Component public class HDeptDeviceService extends HibernateDao { @Autowired private SysDeptService sysDeptService; //=====================================库区设备=======================================// public void pageData(Page page, Map param) throws Exception { String hql = " from " + DeptDevice.class.getName() + " where companyId =:companyId and deptId =:deptId"; Map args = new HashMap<>(); args.put("companyId", ContextUtil.getCompanyId()); args.put("deptId", ContextUtil.subDeptId(null)); if (null != param) { hql = buildHql(hql, param, args); } String count = "select count(*) " + hql; hql += " order by updateTime desc"; this.pagingQuery(page, hql, count, args); } public String saveOrUpdate(DeptDevice data) { Session session = this.getSessionFactory().openSession(); try { if (null == data.getCompanyId()) { data.setCompanyId(ContextUtil.getCompanyId()); } if (StringUtils.isEmpty(data.getDeptId())) { data.setDeptId(ContextUtil.subDeptId(null)); } data.setUpdateTime(new Date()); if (null == data.getSbbh()) { data.setSbbh(DateFormatUtils.format(new Date(), "yyyyMMdd") + getIndex(data.getCompanyId())); } session.saveOrUpdate(data); } finally { session.flush(); session.close(); } return null; } public String getIndex(String companyId) { List list = getDataByTime(companyId); int index = 10000; if (list != null && list.size() > 0) { String id = list.get(0).getSbbh().substring(8); int temp = Integer.valueOf(id) + 1; index += temp; }else { index ++; } return String.valueOf(index).substring(1); } private List getDataByTime(String companyId) { String hql = " from " + DeptDevice.class.getName() + " where companyId =:companyId "; Map args = new HashMap(); args.put("companyId", companyId); hql += " and updateTime >:startTime"; args.put("startTime", DateUtil.getCurZero(new Date())); hql += " and updateTime <:endTime"; args.put("endTime", DateUtil.getNextZero(new Date())); hql += " order by id desc"; return this.query(hql, args); } public String delData(DeptDevice data) { Session session = this.getSessionFactory().openSession(); try { Map param = new HashMap<>(); param.put("code", data.getSbbh()); List list = this.listCheck(param); for (DeviceCheckup checkup : list) { session.delete(checkup); } session.delete(data); } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } return null; } //==================================设备检修记录===================================// public void pageCheck(Page page, Map param) throws Exception { String hql = " from " + DeviceCheckup.class.getName() + " where companyId=:companyId"; Map args = new HashMap<>(); args.put("companyId", ContextUtil.getCompanyId()); if (null != param) { hql = buildHql(hql, param, args); } String count = "select count(*) " + hql; hql += " order by zhgxsj desc"; this.pagingQuery(page, hql, count, args); } public List listCheck(Map param) throws Exception { String hql = " from " + DeviceCheckup.class.getName() + " where companyId=:companyId"; Map args = new HashMap<>(); args.put("companyId", ContextUtil.getCompanyId()); if (null != param) { hql = buildHql(hql, param, args); } hql += " order by jdsj desc"; return this.query(hql, args); } public String saveCheck(DeviceCheckup data) { Session session = this.getSessionFactory().openSession(); try { if (null == data.getCompanyId()) { data.setCompanyId(ContextUtil.getCompanyId()); } if (StringUtils.isEmpty(data.getKqdm())) { data.setKqdm(ContextUtil.subDeptId(null)); } DefaultDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getKqdm()); data.setKqmc(dept.getName()); data.setZhgxsj(new Date()); if (null == data.getId()) { data.setId(ContextUtil.getUUID()); } session.saveOrUpdate(data); } finally { session.flush(); session.close(); } return null; } public String delCheck(DeviceCheckup data) { Session session = this.getSessionFactory().openSession(); try { session.delete(data); } finally { session.flush(); session.close(); } return null; } public String buildHql(String hql, Map param, Map args) { String str = (String) param.get("name"); if (StringUtils.isNotEmpty(str)) { hql += " and sbyqmc like:name"; args.put("name", "%" + str + "%"); } str = (String) param.get("code"); if (StringUtils.isNotEmpty(str)) { hql += " and sbbh =:code"; args.put("code", str); } Date date = (Date) param.get("start"); if (null != date) { hql += " and jdsj >=:start"; args.put("start", DateUtil.getCurZero(date)); } date = (Date) param.get("end"); if (null != date) { hql += " and jdsj <:end"; args.put("end", DateUtil.getNextZero(date)); } return hql; } }