| | |
| | | package com.ld.igds.drug.service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Repository; |
| | | import com.bstek.bdf2.core.model.DefaultDept; |
| | | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; |
| | | |
| | | import com.bstek.bdf2.core.orm.jdbc.JdbcDao; |
| | | import com.bstek.dorado.data.provider.Page; |
| | | import com.ld.igds.constant.RedisConst; |
| | | import com.ld.igds.models.Drug; |
| | | import com.ld.igds.models.DrugApply; |
| | | import com.ld.igds.models.DrugInout; |
| | | import com.ld.igds.models.DrugLog; |
| | | import com.ld.igds.sys.service.SysDeptService; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.RedisUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.hibernate.Session; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * 后期调整为Hibernate |
| | | * @author Andy |
| | | * 药剂管理 |
| | | * |
| | | * @author Andy |
| | | */ |
| | | @Repository |
| | | public class HDrugService extends JdbcDao { |
| | | @Service |
| | | public class HDrugService extends HibernateDao { |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private SysDeptService sysDeptService; |
| | | |
| | | public void pageDrug(Page<Drug> page, Map<String, Object> param) |
| | | throws Exception { |
| | | /** |
| | | * 缓存 药剂ID |
| | | */ |
| | | public static final String CACHE_DRUG_ID = "LOSS_DRUG_ID"; |
| | | |
| | | List<Object> args = new ArrayList<Object>(); |
| | | /** |
| | | * 分页查询药剂信息 |
| | | * |
| | | * @param page |
| | | * @param param |
| | | * @throws Exception |
| | | */ |
| | | public void pageDrug(Page<Drug> page, Map<String, Object> param) throws Exception { |
| | | StringBuffer hql = new StringBuffer(); |
| | | Map<String, Object> args = new HashMap<>(); |
| | | hql.append(" from " + Drug.class.getName() + " where companyId=:companyId"); |
| | | args.put("companyId", ContextUtil.getCompanyId()); |
| | | if (null != param) { |
| | | buildHql(hql, param, args); |
| | | } |
| | | hql.append(" order by id "); |
| | | String countHql = "select count(*) " + hql.toString(); |
| | | this.pagingQuery(page, String.valueOf(hql), countHql, args); |
| | | } |
| | | |
| | | args.add(ContextUtil.getCompanyId()); |
| | | /** |
| | | * 获取药剂列表 |
| | | * |
| | | * @param companyId |
| | | * @return |
| | | */ |
| | | public List<Drug> listDrug(String companyId, Map<String, Object> param) { |
| | | StringBuffer hql = new StringBuffer(" from " + Drug.class.getName() + " where companyId=:companyId"); |
| | | Map<String, Object> args = new HashMap<>(); |
| | | args.put("companyId", companyId); |
| | | if (null != param) { |
| | | buildHql(hql, param, args); |
| | | } |
| | | hql.append(" order by id desc"); |
| | | return this.query(hql.toString(), args); |
| | | |
| | | String sql = "select * from D_DRUG where company_id_ =? "; |
| | | } |
| | | |
| | | if (null != param) { |
| | | String str = (String) param.get("name"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | sql += " and name_ like ?"; |
| | | args.add("%" + str + "%"); |
| | | } |
| | | } |
| | | sql += " order by name_ "; |
| | | /** |
| | | * 更新或添加药剂信息 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | | public String saveDrug(Drug data) { |
| | | if (null == data.getCompanyId()) { |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | if (null == data.getDeptId()) { |
| | | data.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | DefaultDept dept = sysDeptService.getDeptById(data.getDeptId()); |
| | | data.setDeptName(dept.getName()); |
| | | Session session = this.getSessionFactory().openSession(); |
| | | data.setUpdateTime(new Date()); |
| | | data.setUpdateUser(ContextUtil.getLoginUserCName()); |
| | | try { |
| | | if (null == data.getId()) { |
| | | String id = createId(data.getCompanyId(), data.getDeptId()); |
| | | data.setId(id); |
| | | session.save(data); |
| | | } else { |
| | | session.saveOrUpdate(data); |
| | | } |
| | | |
| | | this.pagingQuery(page, sql, args.toArray(), new DrugRowMapper()); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public List<Drug> listDrug(String name) { |
| | | /** |
| | | * 删除药剂信息 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | | public String delDrug(Drug 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; |
| | | } |
| | | |
| | | String sql = "select * from D_DRUG where company_id_ =? "; |
| | | |
| | | List<Object> args = new ArrayList<Object>(); |
| | | public void pageDrugInout(Page<DrugInout> page, Map<String, Object> param) { |
| | | |
| | | args.add(ContextUtil.getCompanyId()); |
| | | } |
| | | |
| | | if (StringUtils.isNotEmpty(name)) { |
| | | sql += " and name_ like ?"; |
| | | args.add("%" + name + "%"); |
| | | } |
| | | public String delDrugInout(DrugInout data) { |
| | | |
| | | sql += " order by name_ "; |
| | | return null; |
| | | } |
| | | |
| | | return this.getJdbcTemplate().query(sql, args.toArray(), |
| | | new DrugRowMapper()); |
| | | } |
| | | public String updateDrugInout(DrugInout data) { |
| | | |
| | | public String delDrug(Drug data) { |
| | | return null; |
| | | } |
| | | |
| | | if (null == data.getId()) { |
| | | return null; |
| | | } |
| | | private String addDrugInout(DrugInout data) { |
| | | return null; |
| | | } |
| | | |
| | | String sql = " delete from D_DRUG where ID_ =?"; |
| | | |
| | | this.getJdbcTemplate().update(sql, new Object[] { data.getId() }); |
| | | public String auditDrugApply(DrugApply data) { |
| | | |
| | | return null; |
| | | } |
| | | if (null == data.getAuditUser()) { |
| | | data.setAuditUser(ContextUtil.getLoginUserCName()); |
| | | } |
| | | if (null == data.getAuditTime()) { |
| | | data.setApplyTime(new Date()); |
| | | } |
| | | |
| | | public String updateDrug(Drug data) { |
| | | data.setUpdateTime(new Date()); |
| | | data.setUpdateUser(ContextUtil.getLoginUserCName()); |
| | | if (null == data.getId()) { |
| | | return this.addDrug(data); |
| | | } |
| | | if (data.getApplyUser().equals(data.getAuditUser())) { |
| | | return "系统:审核人和申请人不可为同一个人。"; |
| | | } |
| | | |
| | | String sql = " update D_DRUG set name_=?," + "spec_=?," + "dosage_=?," |
| | | + "count_=?," + "update_User_=?," + "update_Time_=?," |
| | | + "remarks_=? where id_=?"; |
| | | return updateDrugApply(data); |
| | | |
| | | this.getJdbcTemplate().update( |
| | | sql, |
| | | new Object[] { data.getName(), data.getSpec(), |
| | | data.getDosage(), data.getCount(), |
| | | data.getUpdateUser(), data.getUpdateTime(), |
| | | data.getRemarks(), data.getId() }); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | public String updateDrugApply(DrugApply data) { |
| | | |
| | | private String addDrug(Drug data) { |
| | | data.setId(ContextUtil.getUUID()); |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | return null; |
| | | } |
| | | |
| | | String sql = " insert into D_DRUG(id_,company_ID_,name_,spec_,dosage_,count_,update_User_,update_Time_,remarks_) " |
| | | + " values(?,?,?,?,?,?,?,?,?)"; |
| | | private String addDrugApply(DrugApply data) { |
| | | return null; |
| | | } |
| | | |
| | | this.getJdbcTemplate().update( |
| | | sql, |
| | | new Object[] { data.getId(), data.getCompanyId(), |
| | | data.getName(), data.getSpec(), data.getDosage(), |
| | | data.getCount(), data.getUpdateUser(), |
| | | data.getUpdateTime(), data.getRemarks() }); |
| | | public String delDrugApply(DrugApply data) { |
| | | return null; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | public void pageDrugApply(Page<DrugApply> page, Map<String, Object> param) { |
| | | |
| | | public void pageDrugInout(Page<DrugInout> page, Map<String, Object> param) { |
| | | List<Object> args = new ArrayList<Object>(); |
| | | } |
| | | |
| | | args.add(ContextUtil.getCompanyId()); |
| | | public String createId(String companyId, String deptId) { |
| | | |
| | | String sql = "select * from D_DRUG_INOUT where company_id_ =? "; |
| | | // 从缓存中获取已有的组织编码 |
| | | String cacheKey = RedisConst.buildKey(companyId, HDrugService.CACHE_DRUG_ID); |
| | | |
| | | if (null != param) { |
| | | String str = (String) param.get("name"); |
| | | String cacheId = (String) redisUtil.get(cacheKey); |
| | | |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | sql += " and person_ like ?"; |
| | | args.add("%" + str + "%"); |
| | | } |
| | | if (null != cacheId && cacheId.indexOf(deptId) >= 0) { |
| | | String temp = cacheId.substring(cacheId.length() - 3); |
| | | Integer i = Integer.valueOf(temp); |
| | | cacheId = deptId + String.format("%03d", ++i); |
| | | } else { |
| | | List<Drug> result = listDrug(companyId, null); |
| | | if (null == result || result.size() == 0) { |
| | | cacheId = deptId + "001"; |
| | | } else { |
| | | Drug drug = result.get(0); |
| | | String temp = drug.getId().substring(drug.getId().length() - 3); |
| | | Integer i = Integer.valueOf(temp); |
| | | cacheId = deptId + String.format("%03d", ++i); |
| | | } |
| | | } |
| | | // 更新缓存 |
| | | redisUtil.set(cacheKey, cacheId); |
| | | |
| | | str = (String) param.get("type"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | sql += " and type_ = ?"; |
| | | args.add(str); |
| | | } |
| | | } |
| | | return cacheId; |
| | | } |
| | | |
| | | sql += " order by update_time_ desc "; |
| | | |
| | | this.pagingQuery(page, sql, args.toArray(), new DrugInoutRowMapper()); |
| | | } |
| | | |
| | | public String delDrugInout(DrugInout data) { |
| | | |
| | | if (null == data.getId()) { |
| | | return null; |
| | | } |
| | | |
| | | String sql = " delete from D_DRUG_INOUT where ID_ =?"; |
| | | |
| | | this.getJdbcTemplate().update(sql, new Object[] { data.getId() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public String updateDrugInout(DrugInout data) { |
| | | data.setUpdateTime(new Date()); |
| | | data.setUpdateUser(ContextUtil.getLoginUserCName()); |
| | | if (null == data.getId()) { |
| | | return this.addDrugInout(data); |
| | | } |
| | | |
| | | String sql = " update D_DRUG_INOUT set DRUG_ID_=?," + "TIME_=?," |
| | | + "PERSON_=?," + "REASON_=?," + "COUNT_=?," + "TYPE_=?," |
| | | + "UPDATE_USER_=?,UPDATE_TIME_=?,REMARKS_=? where id_=?"; |
| | | |
| | | this.getJdbcTemplate() |
| | | .update(sql, |
| | | new Object[] { data.getDrugId(), data.getTime(), |
| | | data.getPerson(), data.getReason(), |
| | | data.getCount(), data.getType(), |
| | | data.getUpdateUser(), data.getUpdateTime(), |
| | | data.getRemarks(), data.getId() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private String addDrugInout(DrugInout data) { |
| | | data.setId(ContextUtil.getUUID()); |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | |
| | | String sql = "insert into D_DRUG_INOUT(ID_,COMPANY_ID_,DRUG_ID_,TIME_,PERSON_,REASON_,COUNT_,TYPE_,UPDATE_USER_,UPDATE_TIME_,REMARKS_)" |
| | | + " values(?,?,?,?,?,?,?,?,?,?,?)"; |
| | | |
| | | this.getJdbcTemplate().update( |
| | | sql, |
| | | new Object[] { data.getId(), data.getCompanyId(), |
| | | data.getDrugId(), data.getTime(), data.getPerson(), |
| | | data.getReason(), data.getCount(), data.getType(), |
| | | data.getUpdateUser(), data.getUpdateTime(), |
| | | data.getRemarks() }); |
| | | return null; |
| | | } |
| | | |
| | | public String delDrugLog(DrugLog data) { |
| | | if (null == data.getId()) { |
| | | return null; |
| | | } |
| | | |
| | | String sql = " delete from D_DRUG_LOG where ID_ =?"; |
| | | |
| | | this.getJdbcTemplate().update(sql, new Object[] { data.getId() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public String updateDrugLog(DrugLog data) { |
| | | data.setUpdateTime(new Date()); |
| | | data.setUpdateUser(ContextUtil.getLoginUserCName()); |
| | | if (null == data.getId()) { |
| | | return this.addDrugLog(data); |
| | | } |
| | | |
| | | String sql = " update D_DRUG_LOG set DEPOT_ID_=?," |
| | | + "START_=?," |
| | | + "END_=?," |
| | | + "USER_=?," |
| | | + "UPDATE_USER_=?,UPDATE_TIME_=?,REMARKS_=?,DOSE_=? where ID_=?"; |
| | | |
| | | this.getJdbcTemplate().update( |
| | | sql, |
| | | new Object[] { data.getDepotId(), data.getStart(), |
| | | data.getEnd(), data.getUser(), data.getUpdateUser(), |
| | | data.getUpdateTime(), data.getRemarks(), |
| | | data.getDose(), data.getId() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private String addDrugLog(DrugLog data) { |
| | | data.setId(ContextUtil.getUUID()); |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | |
| | | String sql = "insert into D_DRUG_LOG(ID_,COMPANY_ID_,DEPOT_ID_,START_,END_,USER_,UPDATE_USER_,UPDATE_TIME_,REMARKS_,DOSE_)" |
| | | + " values(?,?,?,?,?,?,?,?,?,?)"; |
| | | |
| | | this.getJdbcTemplate() |
| | | .update(sql, |
| | | new Object[] { data.getId(), data.getCompanyId(), |
| | | data.getDepotId(), data.getStart(), |
| | | data.getEnd(), data.getUser(), |
| | | data.getUpdateUser(), data.getUpdateTime(), |
| | | data.getRemarks(), data.getDose() }); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public void pageDrugLog(Page<DrugLog> page, Map<String, Object> param) { |
| | | List<Object> args = new ArrayList<Object>(); |
| | | |
| | | args.add(ContextUtil.getCompanyId()); |
| | | |
| | | String sql = "select * from D_DRUG_LOG where company_id_ =? "; |
| | | |
| | | if (null != param) { |
| | | String str = (String) param.get("name"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | sql += " and user_ = ?"; |
| | | args.add(str); |
| | | } |
| | | } |
| | | sql += " order by start_ desc "; |
| | | |
| | | this.pagingQuery(page, sql, args.toArray(), new DrugLogRowMapper()); |
| | | |
| | | } |
| | | |
| | | public String auditDrugApply(DrugApply data) { |
| | | |
| | | if (null == data.getAuditUser()) { |
| | | data.setAuditUser(ContextUtil.getLoginUserCName()); |
| | | } |
| | | if (null == data.getAuditTime()) { |
| | | data.setApplyTime(new Date()); |
| | | } |
| | | |
| | | if (data.getApplyUser().equals(data.getAuditUser())) { |
| | | return "系统:审核人和申请人不可为同一个人。"; |
| | | } |
| | | |
| | | return updateDrugApply(data); |
| | | |
| | | } |
| | | |
| | | public String updateDrugApply(DrugApply data) { |
| | | |
| | | if (null == data.getApplyTime()) { |
| | | data.setAuditTime(new Date()); |
| | | } |
| | | if (null == data.getApplyUser()) { |
| | | data.setApplyUser(ContextUtil.getLoginUserCName()); |
| | | } |
| | | |
| | | if (null == data.getId()) { |
| | | return this.addDrugApply(data); |
| | | } |
| | | |
| | | String sql = " update D_DRUG_APPLY set " + "APPLY_TIME_=?," |
| | | + "APPLY_USER_=?," + "APPLY_REASON_=?," + "DRUG_NAME_=?," |
| | | + "COUNT_=?," + "AUDIT_TIME_=?," + "AUDIT_USER_=?," |
| | | + "AUDIT_REASON_=?," + "STATUS_=?," + "REMARKS_=? " |
| | | + "where ID_=?"; |
| | | |
| | | this.getJdbcTemplate().update( |
| | | sql, |
| | | new Object[] { data.getApplyTime(), data.getApplyUser(), |
| | | data.getApplyReason(), data.getDrugName(), |
| | | data.getCount(), data.getAuditTime(), |
| | | data.getAuditUser(), data.getAuditReason(), |
| | | data.getStatus(), data.getRemarks(), data.getId() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private String addDrugApply(DrugApply data) { |
| | | data.setId(ContextUtil.getUUID()); |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | data.setStatus(DrugApply.STATUS_APPLY); |
| | | |
| | | String sql = "INSERT INTO D_DRUG_APPLY(ID_,COMPANY_ID_,APPLY_TIME_,APPLY_USER_,APPLY_REASON_,DRUG_NAME_,COUNT_,AUDIT_TIME_,AUDIT_USER_,AUDIT_REASON_," |
| | | + "STATUS_,REMARKS_) values(?,?,?,?,?,?,?,?,?,?,?,?)"; |
| | | |
| | | this.getJdbcTemplate().update( |
| | | sql, |
| | | new Object[] { data.getId(), data.getCompanyId(), |
| | | data.getApplyTime(), data.getApplyUser(), |
| | | data.getApplyReason(), data.getDrugName(), |
| | | data.getCount(), data.getAuditTime(), |
| | | data.getAuditUser(), data.getAuditReason(), |
| | | data.getStatus(), data.getRemarks() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public String delDrugApply(DrugApply data) { |
| | | |
| | | if (null == data.getId()) { |
| | | return null; |
| | | } |
| | | |
| | | String sql = " delete from D_DRUG_APPLY where ID_ =?"; |
| | | |
| | | this.getJdbcTemplate().update(sql, new Object[] { data.getId() }); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public void pageDrugApply(Page<DrugApply> page, Map<String, Object> param) { |
| | | List<Object> args = new ArrayList<Object>(); |
| | | |
| | | args.add(ContextUtil.getCompanyId()); |
| | | |
| | | String sql = "select * from D_DRUG_APPLY where company_id_ =? "; |
| | | |
| | | if (null != param) { |
| | | String str = (String) param.get("name"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | sql += " and APPLY_USER_ like ?"; |
| | | args.add("%" + str + "%"); |
| | | } |
| | | } |
| | | sql += " order by APPLY_TIME_ desc "; |
| | | |
| | | this.pagingQuery(page, sql, args.toArray(), new DrugApplyRowMapper()); |
| | | } |
| | | public void buildHql(StringBuffer hql, Map<String, Object> param, Map<String, Object> args) { |
| | | String str = (String) param.get("id"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql.append(" and id =:id"); |
| | | args.put("id", str); |
| | | } |
| | | str = (String) param.get("name"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql.append(" and name like :name"); |
| | | args.put("name", "%" + str + "%"); |
| | | } |
| | | Date date = (Date) param.get("start"); |
| | | if (null != date) { |
| | | hql.append(" and cgrq >=:start"); |
| | | args.put("start", date); |
| | | } |
| | | date = (Date) param.get("end"); |
| | | if (null != date) { |
| | | hql.append(" and cgrq <=:end"); |
| | | args.put("end", date); |
| | | } |
| | | } |
| | | |
| | | } |