package com.nanometer.smartlab.service; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import javax.annotation.Resource; import com.hazelcast.core.IFunction; import com.nanometer.smartlab.dao.*; import com.nanometer.smartlab.entity.*; import com.nanometer.smartlab.entity.dto.OpeUseFlowQueryDto; import com.nanometer.smartlab.entity.dto.PersonUseDetail; import com.nanometer.smartlab.entity.enumtype.OperateStatus; import com.nanometer.smartlab.model.CommonPage; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.ExcelUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.log4j.Logger; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.nanometer.smartlab.entity.enumtype.ArrivalStatus; import com.nanometer.smartlab.entity.enumtype.SeeFlag; import com.nanometer.smartlab.exception.AlarmCode; import com.nanometer.smartlab.exception.AlarmException; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.util.IDUtils; import com.nanometer.smartlab.util.MessageUtil; import org.springframework.util.Assert; /** * Created by johnny on 17/12/16. */ @Service("OpeUseFlowService") public class OpeUseFlowServiceImpl implements OpeUseFlowService { private static Logger logger = Logger.getLogger(OpeUseFlowService.class); @Resource(name = "opeUseFlowDao") OpeUseFlowDao opeUseFlowDao; @Resource private SysLaboratoryContainerDao sysLaboratoryContainerDao; @Resource private SysWarehouseContainerDao sysWarehouseContainerDao; @Resource private SysUserService sysUserService; @Resource private OpeReagentStatusService opeReagentStatusService; @Resource private SysReagentService sysReagentService; @Resource private BaseMetaDao baseMetaDao; @Resource private OpeReagentStatusDao opeReagentStatusDao; @Transactional(propagation = Propagation.REQUIRED) public OpeUseFlow insertOpeUseFlow(OpeUseFlow opeUseFlow) { try { if (opeUseFlow.getId() == null) { opeUseFlow.setId(IDUtils.uuid()); } if(opeUseFlow.getCreateTime()==null){ opeUseFlow.setCreateTime(new Timestamp(System.currentTimeMillis()+1000)); } this.opeUseFlowDao.insertOpeUseFlow(opeUseFlow); return opeUseFlow; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public List getOpeUseFlowList(String reagentId, String reagentCode, Integer status, String userId, Integer first, Integer pageSize) { try { Map params = new HashMap(); params.put("reagentId", reagentId); if (StringUtils.isNotBlank(reagentCode)) { params.put("reagentCode", "%" + reagentCode + "%"); } params.put("status", status); addParamByUserId(userId, params); params.put("first", first); params.put("pageSize", pageSize); return this.opeUseFlowDao.getOpeUseFlowList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public int getOpeUseFlowTotalCount(String reagentId, String reagentCode, Integer status, String userId) { try { Map params = new HashMap(); params.put("reagentId", reagentId); if (StringUtils.isNotBlank(reagentCode)) { params.put("reagentCode", "%" + reagentCode + "%"); } addParamByUserId(userId, params); params.put("status", status); return this.opeUseFlowDao.getOpeUseFlowTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public List getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate,Integer first, Integer pageSize,String operatestate) { try { Map params = new HashMap(); params.put("reagentName", reagentId); if (StringUtils.isNotBlank(reagentCode)) { params.put("reagentCode", "%" + reagentCode + "%"); } SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.add(Calendar.DATE, -7); Date startTime = cal.getTime(); if (null != startDate){ try { params.put("startDate",sdfstart.format(startDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("startDate",sdfstart.format(startTime)); } if (null != endDate){ try { params.put("endDate",sdfend.format(endDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("endDate",sdfend.format(now)); } params.put("status", status); params.put("houseName", houseName); params.put("operatestate", operatestate); params.put("containerCode", containerCode); addParamByUserId(userId, params); params.put("first", first); params.put("pageSize", pageSize); return this.opeUseFlowDao.getOpeUseFlowList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } public CommonPage getOpeUseFlowSimpleInfoList(Integer pageNum, Integer pageSize, OpeUseFlowQueryDto opeUseFlowQueryDto) { CommonPage commonPage=new CommonPage(); Map params = new HashMap(); if(pageNum==null||pageNum<1){ pageNum=1; } if(pageSize==null||pageSize<1){ pageSize=10; } if(pageSize>50){ pageSize=50;//每页最多查询50条记录 } commonPage.setPageNum(pageNum); commonPage.setPageSize(pageSize); params.put("reagentName", opeUseFlowQueryDto.getReagentName()); if (StringUtils.isNotBlank(opeUseFlowQueryDto.getReagentCode())) { params.put("reagentCode", "%" + opeUseFlowQueryDto.getReagentCode() + "%"); } SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.add(Calendar.DATE, -7); Date startTime = cal.getTime(); params.put("startDate",opeUseFlowQueryDto.getStartDate()!=null?opeUseFlowQueryDto.getStartDate():sdfstart.format(startTime)); params.put("endDate",opeUseFlowQueryDto.getEndDate()!=null?opeUseFlowQueryDto.getEndDate():sdfend.format(now)); params.put("houseName", opeUseFlowQueryDto.getHouseName()); params.put("operatestate", opeUseFlowQueryDto.getOperatestate()); params.put("containerCode", opeUseFlowQueryDto.getContainerCode()); params.put("first", (pageNum-1)*pageSize); params.put("pageSize", pageSize); Long total= new Long(this.opeUseFlowDao.getOpeUseFlowTotalCount(params)); commonPage.setTotalPage(CommonPage.getTotalPage(total,pageSize)); commonPage.setTotal(total); List opeUseFlows= this.opeUseFlowDao.getOpeUseFlowSimpleInfoList(params); commonPage.setList(opeUseFlows); return commonPage; } @Transactional(propagation = Propagation.REQUIRED) public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate,String operatestate) { try { Map params = new HashMap(); params.put("reagentName", reagentId); if (StringUtils.isNotBlank(reagentCode)) { params.put("reagentCode", "%" + reagentCode + "%"); } SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.add(Calendar.DATE, -7); Date startTime = cal.getTime(); if (null != startDate){ try { params.put("startDate",sdfstart.format(startDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("startDate",sdfstart.format(startTime)); } if (null != endDate){ try { params.put("endDate",sdfend.format(endDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("endDate",sdfend.format(now)); } params.put("operatestate", operatestate); params.put("houseName", houseName); params.put("containerCode", containerCode); addParamByUserId(userId, params); params.put("status", status); return this.opeUseFlowDao.getOpeUseFlowTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } private void addParamByUserId(String userId, Map params) { if (StringUtils.isNotBlank(userId)) { SysUser sysUser = sysUserService.getSysUser(userId); // 不是管理员时,加入userid if (sysUser.getSeeFlag().getKey() == SeeFlag.MANAGE.getKey()||sysUser.getSeeFlag().getKey() == SeeFlag.LEADING.getKey()) { } else { params.put("userId", userId); } // // 负责人,需要把部门的userid传递到SQL // if (sysUser.getSeeFlag().getKey() == SeeFlag.LEADING.getKey()) { // List departmentUserIds = new ArrayList(); // List departmentUsers = sysUserService.getSeeUserList(sysUser.getDepartment()); // for (SysUser departmentUser : departmentUsers) { // departmentUserIds.add(departmentUser.getId()); // } // // if (departmentUserIds.size() > 0) { // params.put("departmentUserIds", departmentUserIds); // } // // } else if (sysUser.getSeeFlag().getKey() == SeeFlag.NORMAL.getKey()) { // params.put("userId", userId); // } } } @Transactional(propagation = Propagation.REQUIRED) public boolean update(OpeUseFlow opeUseFlow) { try { int row = this.opeUseFlowDao.update(opeUseFlow); return row != 0; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Override @Transactional(propagation = Propagation.REQUIRED) public void syncReagentFlow(List reagentFlowList) throws ParseException { Assert.notNull(reagentFlowList, "请求参数不能为空!"); for (Map params : reagentFlowList) { //0:个人领用 1:在库 3:报废 // OpeUseFlow opeUseFlow = new OpeUseFlow(); opeUseFlow.setId(IDUtils.uuid()); opeUseFlow.setCreateTime(new Timestamp(DateUtils.parseDate(params.get("updateTime").toString(), Constants.TIME_PATTERN_YYYY_MM_DD_HH_MM_SS).getTime())); opeUseFlow.setStatus(ArrivalStatus.parse(Integer.valueOf(String.valueOf(params.get("status"))))); opeUseFlow.setReagentCode((String) params.get("reagentCode")); if (params.get("idcard") != null) { SysUser sysUser = sysUserService.getSysUserByIdCard((String) params.get("idcard")); if (Objects.isNull(sysUser)) { logger.error("The idcard:" + (String) params.get("idcard") + " has not been exists!"); continue; } opeUseFlow.setUserId(sysUser.getId()); opeUseFlow.setContainerId("0"); opeUseFlow.setHouseId("0"); } else { logger.error("The idcard is empty!"); continue; } // if (params.get("status").toString().equals("1")) { SysWarehouseContainer container = sysWarehouseContainerDao.getSysWarehouseContainerByContainerCode((String) params.get("containerCode")); if (Objects.isNull(container)==false) { if (params.get("status").toString().equals("1")) { opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE); } else { opeUseFlow.setStatus(ArrivalStatus.PERSONAL); } opeUseFlow.setContainerId(container.getId()); opeUseFlow.setHouseId(container.getWarehouseId()); opeUseFlow.setPlace(container.getStructure()); }else{ SysLaboratoryContainer sysLaboratoryContainer = sysLaboratoryContainerDao.getSysLaboratoryContainerByContainerCode((String) params.get("containerCode")); if (Objects.isNull(sysLaboratoryContainer)) { logger.error("The containerCode["+(String) params.get("containerCode")+"] has not been exists!"); continue; } if (params.get("status").toString().equals("1")) { opeUseFlow.setStatus(ArrivalStatus.LABORATORY); } else { opeUseFlow.setStatus(ArrivalStatus.PERSONAL); } opeUseFlow.setContainerId(sysLaboratoryContainer.getId()); opeUseFlow.setHouseId(sysLaboratoryContainer.getLaboratoryId()); opeUseFlow.setPlace(sysLaboratoryContainer.getStructure()); } // } if(params.get("remainder") != null && !params.get("remainder").toString().equals("")) { opeUseFlow.setRemainder(new BigDecimal(params.get("remainder").toString()).setScale(2, BigDecimal.ROUND_HALF_UP)); } if(opeUseFlow.getCreateTime()==null){ opeUseFlow.setCreateTime(new Timestamp(System.currentTimeMillis())); } opeUseFlowDao.insertOpeUseFlow(opeUseFlow); } } @Override public void deleteByReagentCode(String reagentCode) { opeUseFlowDao.deleteByReagentCode(reagentCode); } @Override public void updateTimeByCode(String code) { Map params = new HashMap(); params.put("code", code); params.put("status",-1); opeUseFlowDao.updateTimeByCode(params); } @Override public OpeUseFlow getOpeUseFlowByCode(String reagentCode) { return opeUseFlowDao.getOpeUseFlowByCode(reagentCode); } @Override public void updateReceiptNumber(String code, String receiptNumber,String note) { opeUseFlowDao.updateReceiptNumber(code, receiptNumber,note); } @Transactional public void updateReceiptNumberByCode(List selectedTmpOrderList,String receiptNumber,String note) { for (OpeApplyReserve oar : selectedTmpOrderList) { if (oar.getFlag() == 1) { //库中领取 code存的是 试剂状态的id for (String statusId : oar.getReagentCode()) { String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode(); //此时状态为领用待入库 this.updateReceiptNumber(code, receiptNumber,note); } }else{ //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 List codeTmp = opeReagentStatusService .generateReagentCode(oar.getStartReagentCode2(), oar.getEndReagentCode2()); for (String code : codeTmp) { this.updateReceiptNumber(code, receiptNumber,note); } } } } @Override public Map getRegentInfoFromReceiptNumber(String receiptNumber) { List maps = opeUseFlowDao.getRegentInfoFromReceiptNumber(receiptNumber); if (maps.size() > 0) { Map printInfo = new HashMap<>(); for (Map map : maps) { Integer count =Integer.parseInt(String.valueOf(map.get("count")));; String reagentId = (String) map.get("reagentId"); SysReagent reagent = sysReagentService.getSysReagent(reagentId); printInfo.put(reagent.getId(), count); } return printInfo; } return null; } @Override public Map getApplyUserByReagentCode(String reagentCode) { Map metaMap2 = new HashMap<>(); metaMap2.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetaList2 = baseMetaDao.getBaseMetaList(metaMap2); String id = baseMetaList2.get(0).getId(); return opeUseFlowDao.getUserIdByReagentCode(reagentCode, id); } @Override public void updateReceiptNumberByCode2(List selectTmpList, String receiptNumber,String note) { for (OpeWarehouseReserve owr : selectTmpList) { if (owr.getFlag() == 1) { //库中领取 code存的是 试剂状态的id for (String statusId : owr.getReagentCodes()) { String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode(); //此时状态为领用待入库 this.updateReceiptNumber(code, receiptNumber,note); } }else{ //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 List codeTmp = opeReagentStatusService .generateReagentCode(owr.getStartReagentCode2(), owr.getEndReagentCode2()); for (String code : codeTmp) { this.updateReceiptNumber(code, receiptNumber,note); } } } } @Override public int getPersonalUseInfoCount(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber, String department, String project,String applyPerson,String reagentName) { Map params = new HashMap<>(); SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.add(Calendar.DATE, -7); Date startTime = cal.getTime(); if (null != startDate){ try { params.put("startTime",sdfstart.format(startDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("startTime",sdfstart.format(startTime)); } if (null != endDate){ try { params.put("endTime",sdfend.format(endDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("endTime",sdfend.format(now)); } params.put("receiptNumber", receiptNumber); params.put("department", department); params.put("project", project); params.put("reagentCode", reagentCode); params.put("applyPerson", applyPerson); if (StringUtils.isNotBlank(reagentName)) { //根据试剂名获取单号 } params.put("reagentName", reagentName); //操作状态位仓库领取 Map metaMap2 = new HashMap<>(); metaMap2.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate", baseMetas.get(0).getId()); metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); List baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate1", baseMetas1.get(0).getId()); addParamByUserId(userId, params); return opeUseFlowDao.countPersonalUseInfo(params); } @Override public List getPersonalUseInfoList(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber, String department, String project,String applyPerson,String reagentName, int first, int pageSize) { Map params = new HashMap<>(); SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.add(Calendar.DATE, -7); Date startTime = cal.getTime(); if (null != startDate){ try { params.put("startTime",sdfstart.format(startDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("startTime",sdfstart.format(startTime)); } if (null != endDate){ try { params.put("endTime",sdfend.format(endDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("endTime",sdfend.format(now)); } params.put("receiptNumber", receiptNumber); params.put("department", department); params.put("project", project); params.put("reagentCode", reagentCode); params.put("applyPerson", applyPerson); params.put("reagentName", reagentName); //操作状态位仓库领取 Map metaMap2 = new HashMap<>(); metaMap2.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate", baseMetas.get(0).getId()); metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); List baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate1", baseMetas1.get(0).getId()); params.put("first", first); params.put("pageSize", pageSize); addParamByUserId(userId, params); return opeUseFlowDao.selectPersonalUseInfo(params); } @Override public List getApplyInfo(String receiptNumber) { Map params = new HashMap<>(); Map metaMap2 = new HashMap<>(); metaMap2.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate", baseMetas.get(0).getId()); metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); List baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate1", baseMetas1.get(0).getId()); params.put("receiptNumber", receiptNumber); return opeUseFlowDao.getApplyInfo(params); } @Override public int getApplyInfoSize(String receiptNumber) { Map params = new HashMap<>(); Map metaMap2 = new HashMap<>(); metaMap2.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate", baseMetas.get(0).getId()); metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); List baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate1", baseMetas1.get(0).getId()); params.put("receiptNumber", receiptNumber); return opeUseFlowDao.getApplyInfoSize(params); } @Override public int getOpeUseFlow(OpeUseFlow opeUseFlow) { return opeUseFlowDao.countOpeUseFlow(opeUseFlow); } @Override @Transactional public void scrapReagent(String reagentId,String reagentCode, String userId) { //1.试剂状态表更新试剂状态为报废 OpeReagentStatus status = opeReagentStatusService.getStatus(reagentId, reagentCode); if (status.getStatus() == ArrivalStatus.SCRAP) { throw new BusinessException(ExceptionEnumCode.PARAM_ERR,"该试剂已是报废状态,无法进行操作"); } //报废 status.setStatus(ArrivalStatus.SCRAP); status.setUserId(userId); opeReagentStatusDao.updateOpeReagentStatusDao(status); //2.插入一条报废的流向记录 OpeUseFlow useFlow = new OpeUseFlow(); //获取报废状态id Map params = new HashMap<>(); params.put("groupId", "operate_status"); params.put("metaKey", String.valueOf(OperateStatus.SCRAP.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(params); useFlow.setOperateState(baseMetas.get(0).getId()); useFlow.setReagentCode(reagentCode); useFlow.setContainerId(status.getContainerId()); useFlow.setHouseId(status.getHouseId()); useFlow.setUserId(userId); useFlow.setPlace(status.getPlace()); useFlow.setRemainder(status.getRemainder()); useFlow.setStoreType(status.getStoreType()); useFlow.setProject(status.getProjectNum()); useFlow.setArticleNumber(status.getArticleNumber()); useFlow.setCreateTime(new Timestamp(new Date().getTime())); useFlow.setId(IDUtils.uuid()); opeUseFlowDao.insertOpeUseFlow(useFlow); } @Override public OpeUseFlow selectById(String id) { return opeUseFlowDao.selectById(id); } @Override public OpeUseFlow selectByReceiptNumber(String receiptNumber,String userId) { Map params = new HashMap<>(); params.put("userId", userId); params.put("receiptNumber", receiptNumber); //操作状态位仓库领取 Map metaMap2 = new HashMap<>(); metaMap2.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate", baseMetas.get(0).getId()); metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); List baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate1", baseMetas1.get(0).getId()); addParamByUserId(userId, params); return opeUseFlowDao.selectByReceiptNumber(params); } @Override public List selectAll(String houseName, String reagentId, String reagentCode, String containerCode, String userId, Date startDate, Date endDate) { try { Map params = new HashMap(); params.put("reagentName", reagentId); if (StringUtils.isNotBlank(reagentCode)) { params.put("reagentCode", "%" + reagentCode + "%"); } SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.add(Calendar.DATE, -7); Date startTime = cal.getTime(); if (null != startDate){ try { params.put("startDate",sdfstart.format(startDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("startDate",sdfstart.format(startTime)); } if (null != endDate){ try { params.put("endDate",sdfend.format(endDate)); }catch (Exception e){ e.printStackTrace(); } }else { params.put("endDate",sdfend.format(now)); } params.put("houseName", houseName); params.put("containerCode", containerCode); addParamByUserId(userId, params); return opeUseFlowDao.selectAll(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Override public boolean export2Excel(List list) throws Exception { Map map = new LinkedHashMap<>(); map.put("reagentCode", "试剂条形码"); map.put("reagentName", "试剂名称"); map.put("laboratoryContainerCode", "柜号"); map.put("operatestateName", "操作状态"); map.put("remainder", "残存量"); map.put("userName", "持有者"); map.put("createTime", "更新时间"); map.put("warehouseContainerName", "场所名"); ExcelUtils.export2Excel(list,"试剂流向追踪列表",map); return true; } /** * @Description: 查询导出 */ @Override public List selectExportDetail(String reagentCode, String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, String applyPerson, String reagentName) { Map params = new HashMap<>(); Map metaMap2 = new HashMap<>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (startTime != null) { params.put("startTime", sdf.format(startTime) +" 00:00:00"); } if (endTime != null) { params.put("endTime", sdf.format(endTime) + " 23:59:59"); } params.put("reagentCode", reagentCode); params.put("endTime", endTime); params.put("receiptNumber", receiptNumber); params.put("department", department); params.put("project", project); params.put("applyPerson", applyPerson); params.put("reagentName", reagentName); params.put("groupId", "operate_status"); metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); List baseMetas = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate", baseMetas.get(0).getId()); metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); List baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); params.put("operatestate1", baseMetas1.get(0).getId()); addParamByUserId(userId, params); return opeUseFlowDao.selectDetail(params); } @Override public boolean export22Excel(List list) throws Exception { Map map = new LinkedHashMap<>(); map.put("productSn", "产品编号"); map.put("reagentName", "试剂名称"); map.put("reagentCode", "试剂条形码"); map.put("controlProducts", "管制品"); map.put("reagentFormat", "规格型号"); map.put("perInfo", "包装"); map.put("productHome", "厂家"); map.put("articleNumber", "批号"); map.put("username", "申领人"); map.put("project", "课题组"); map.put("department", "部门"); map.put("location", "地点"); map.put("createTime", "领用时间"); ExcelUtils.export2Excel(list,"试剂领用记录表",map); return true; } }