| | |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.nanometer.smartlab.dao.BaseMetaDao; |
| | | import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; |
| | | import com.nanometer.smartlab.dao.SysWarehouseContainerDao; |
| | | import com.nanometer.smartlab.dao.*; |
| | | import com.nanometer.smartlab.entity.*; |
| | | import com.nanometer.smartlab.entity.dto.PersonUseDetail; |
| | | import com.nanometer.smartlab.entity.enumtype.OperateStatus; |
| | | 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.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.nanometer.smartlab.dao.OpeUseFlowDao; |
| | | import com.nanometer.smartlab.entity.enumtype.ArrivalStatus; |
| | | import com.nanometer.smartlab.entity.enumtype.SeeFlag; |
| | | import com.nanometer.smartlab.exception.AlarmCode; |
| | |
| | | @Resource |
| | | private OpeReagentStatusService opeReagentStatusService; |
| | | @Resource |
| | | private OpeUseFlowService opeUseFlowService; |
| | | @Resource |
| | | private SysReagentService sysReagentService; |
| | | @Resource |
| | | private BaseMetaDao baseMetaDao; |
| | | @Resource |
| | | private OpeReagentStatusDao opeReagentStatusDao; |
| | | |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | |
| | | } |
| | | |
| | | if(opeUseFlow.getCreateTime()==null){ |
| | | opeUseFlow.setCreateTime(new Timestamp(System.currentTimeMillis())); |
| | | opeUseFlow.setCreateTime(new Timestamp(System.currentTimeMillis()+1000)); |
| | | } |
| | | |
| | | this.opeUseFlowDao.insertOpeUseFlow(opeUseFlow); |
| | |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId, |
| | | Date startDate,Date endDate,Integer first, Integer pageSize) { |
| | | Date startDate,Date endDate,Integer first, Integer pageSize,String operatestate) { |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | |
| | |
| | | |
| | | params.put("status", status); |
| | | params.put("houseName", houseName); |
| | | params.put("operatestate", operatestate); |
| | | params.put("containerCode", containerCode); |
| | | addParamByUserId(userId, params); |
| | | |
| | |
| | | } |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate) { |
| | | public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate,String operatestate) { |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | params.put("reagentName", reagentId); |
| | |
| | | params.put("endDate",sdfend.format(now)); |
| | | } |
| | | |
| | | params.put("operatestate", operatestate); |
| | | params.put("houseName", houseName); |
| | | params.put("containerCode", containerCode); |
| | | addParamByUserId(userId, params); |
| | |
| | | public void updateReceiptNumberByCode(List<OpeApplyReserve> selectedTmpOrderList,String receiptNumber) { |
| | | |
| | | for (OpeApplyReserve oar : selectedTmpOrderList) { |
| | | //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 |
| | | List<String> codeTmp = opeReagentStatusService |
| | | .generateReagentCode(oar.getStartReagentCode2(), oar.getEndReagentCode2()); |
| | | assert codeTmp.size() > 0; |
| | | |
| | | if (oar.getFlag() == 1) { |
| | | //库中领取 code存的是 试剂状态的id |
| | | for (String statusId : codeTmp) { |
| | | for (String statusId : oar.getReagentCode()) { |
| | | String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode(); |
| | | //此时状态为领用待入库 |
| | | opeUseFlowService.updateReceiptNumber(code, receiptNumber); |
| | | this.updateReceiptNumber(code, receiptNumber); |
| | | } |
| | | }else{ |
| | | //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 |
| | | List<String> codeTmp = opeReagentStatusService |
| | | .generateReagentCode(oar.getStartReagentCode2(), oar.getEndReagentCode2()); |
| | | for (String code : codeTmp) { |
| | | opeUseFlowService.updateReceiptNumber(code, receiptNumber); |
| | | this.updateReceiptNumber(code, receiptNumber); |
| | | } |
| | | } |
| | | |
| | |
| | | @Override |
| | | public void updateReceiptNumberByCode2(List<OpeWarehouseReserve> selectTmpList, String receiptNumber) { |
| | | for (OpeWarehouseReserve owr : selectTmpList) { |
| | | //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 |
| | | List<String> codeTmp = opeReagentStatusService |
| | | .generateReagentCode(owr.getStartReagentCode2(), owr.getEndReagentCode2()); |
| | | assert codeTmp.size() > 0; |
| | | |
| | | if (owr.getFlag() == 1) { |
| | | //库中领取 code存的是 试剂状态的id |
| | | for (String statusId : codeTmp) { |
| | | for (String statusId : owr.getReagentCodes()) { |
| | | String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode(); |
| | | //此时状态为领用待入库 |
| | | opeUseFlowService.updateReceiptNumber(code, receiptNumber); |
| | | this.updateReceiptNumber(code, receiptNumber); |
| | | } |
| | | }else{ |
| | | //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 |
| | | List<String> codeTmp = opeReagentStatusService |
| | | .generateReagentCode(owr.getStartReagentCode2(), owr.getEndReagentCode2()); |
| | | for (String code : codeTmp) { |
| | | opeUseFlowService.updateReceiptNumber(code, receiptNumber); |
| | | this.updateReceiptNumber(code, receiptNumber); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, |
| | | public int getPersonalUseInfoCount(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber, |
| | | String department, String project,String applyPerson,String reagentName) { |
| | | Map<String,Object> 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("userId", userId); |
| | | params.put("startTime", startTime); |
| | | params.put("endTime", endTime); |
| | | params.put("receiptNumber", receiptNumber); |
| | | params.put("department", department); |
| | | params.put("project", project); |
| | |
| | | List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate", baseMetas.get(0).getId()); |
| | | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); |
| | | List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate1", baseMetas1.get(0).getId()); |
| | | |
| | | addParamByUserId(userId, params); |
| | | return opeUseFlowDao.countPersonalUseInfo(params); |
| | | } |
| | | |
| | | @Override |
| | | public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, |
| | | public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber, |
| | | String department, String project,String applyPerson,String reagentName, int first, int pageSize) { |
| | | Map<String, Object> 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("userId", userId); |
| | | params.put("startTime", startTime); |
| | | params.put("endTime", endTime); |
| | | params.put("receiptNumber", receiptNumber); |
| | | params.put("department", department); |
| | | params.put("project", project); |
| | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); |
| | | List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate", baseMetas.get(0).getId()); |
| | | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); |
| | | List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate1", baseMetas1.get(0).getId()); |
| | | |
| | | params.put("first", first); |
| | | params.put("pageSize", pageSize); |
| | | |
| | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); |
| | | List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate", baseMetas.get(0).getId()); |
| | | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); |
| | | List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate1", baseMetas1.get(0).getId()); |
| | | |
| | | params.put("receiptNumber", receiptNumber); |
| | | |
| | | return opeUseFlowDao.getApplyInfo(params); |
| | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); |
| | | List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate", baseMetas.get(0).getId()); |
| | | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); |
| | | List<BaseMeta> 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<String, Object> params = new HashMap<>(); |
| | | params.put("groupId", "operate_status"); |
| | | params.put("metaKey", String.valueOf(OperateStatus.SCRAP.getKey())); |
| | | List<BaseMeta> 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<String, Object> params = new HashMap<>(); |
| | | params.put("userId", userId); |
| | | params.put("receiptNumber", receiptNumber); |
| | | //操作状态位仓库领取 |
| | | Map<String, String> metaMap2 = new HashMap<>(); |
| | | metaMap2.put("groupId", "operate_status"); |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); |
| | | List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate", baseMetas.get(0).getId()); |
| | | |
| | | metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); |
| | | List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); |
| | | params.put("operatestate1", baseMetas1.get(0).getId()); |
| | | |
| | | addParamByUserId(userId, params); |
| | | |
| | | return opeUseFlowDao.selectByReceiptNumber(params); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map> selectAll(String houseName, String reagentId, String reagentCode, String containerCode, String userId, Date startDate, Date endDate) { |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | |
| | | 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<Map> list) throws Exception { |
| | | Map<String,String> 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; |
| | | } |
| | | |
| | | } |