package com.ld.igds.m.service; import com.bstek.bdf2.core.orm.hibernate.HibernateDao; import com.bstek.dorado.data.provider.Page; import com.ld.igds.models.InoutStockChange; 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.apache.commons.lang3.time.DateUtils; import org.hibernate.Session; import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class HMAtockChangeService extends HibernateDao { public void pageData(Page page, Map param) throws Exception { String hql = " from " + InoutStockChange.class.getName() + " where companyId=:companyId"; Map args = new HashMap(); args.put("companyId", ContextUtil.getCompanyId()); if (null != param) { String str = (String) param.get("depotId"); if (StringUtils.isNotEmpty(str)) { hql += " and depotIdIn =:depotIdIn or depotIdOut =:depotIdOut"; args.put("depotIdIn", str); args.put("depotIdOut", str); } } String count = "select count(*) " + hql; hql += " order by updateTime desc"; this.pagingQuery(page, hql, count, args); } public void saveData(InoutStockChange data) { if (null == data.getCompanyId()) { data.setCompanyId(ContextUtil.getCompanyId()); } if (null == data.getDeptId()) { data.setDeptId(ContextUtil.subDeptId(null)); } Session session = this.getSessionFactory().openSession(); data.setUpdateTime(new Date()); data.setUpdateUser(ContextUtil.getLoginUserCName()); try { if (null == data.getCzbz()) { Map param = new HashMap<>(); param.put("dateTime", data.getChangeDate()); List list = queryAll(param); int max = 0; if (list.size() != 0) { int num; for (InoutStockChange stockChange : list) { num = Integer.parseInt(stockChange.getId().substring(stockChange.getId().length() - 4)); max = Math.max(max, num); } } String date = DateFormatUtils.format(new Date(), "yyyyMMdd"); data.setId(date + String.format("%04d", max + 1)); data.setCzbz("i"); session.save(data); } else { data.setCzbz("u"); session.update(data); } } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } } public String delData(InoutStockChange data) { Session session = this.getSessionFactory().openSession(); try { if (null != data.getId()) { session.delete(data); } } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } return null; } public List queryAll(Map param) { String hql = "from " + InoutStockChange.class.getName() + " where 1 = 1 "; Map args = new HashMap(); Date date = (Date) param.get("dateTime"); if (null != date) { hql += " and updateTime >= :startTime and updateTime < :endTime"; args.put("startTime", DateUtil.getCurZero(date)); args.put("endTime", DateUtil.getNextZero(date)); } hql += " order by updateTime desc limit 20"; return this.query(hql, args); } }