| | |
| | | |
| | | import org.apache.commons.lang.StringUtils; |
| | | import org.apache.log4j.Logger; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.dao.DataAccessException; |
| | | import org.springframework.dao.DataIntegrityViolationException; |
| | | import org.springframework.dao.DuplicateKeyException; |
| | |
| | | @Resource |
| | | private OpeReagentStatusService opeReagentStatusService; |
| | | |
| | | @Lazy |
| | | @Resource |
| | | private OpeUseFlowService opeUseFlowService; |
| | | @Resource |
| | | private OpeWarehouseReserveService opeWarehouseReserveService; |
| | | |
| | | @Resource(name="baseMetaDao") |
| | | private BaseMetaDao baseMetaDao; |
| | |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first, |
| | | Integer pageSize,String productSn) { |
| | | Integer pageSize,String productSn,String warehouseName) { |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | params.put("reagentName", reagentId); |
| | |
| | | params.put("first", first); |
| | | params.put("pageSize", pageSize); |
| | | params.put("productSn", productSn); |
| | | params.put("warehouseName", warehouseName); |
| | | return this.opeWarehouseReserveDao.getOpeWarehouseReserveList(params); |
| | | } catch (DataAccessException e) { |
| | | logger.error(e.getMessage(), e); |
| | |
| | | } |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn) { |
| | | public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn,String warehouseName) { |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | params.put("reagentName", reagentId); |
| | | params.put("supplierId", supplierId); |
| | | params.put("productSn", productSn); |
| | | params.put("warehouseName", warehouseName); |
| | | return this.opeWarehouseReserveDao.getOpeWarehouseReserveTotalCount(params); |
| | | } catch (DataAccessException e) { |
| | | logger.error(e.getMessage(), e); |
| | |
| | | } |
| | | } |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED) |
| | | public boolean updateOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve) { |
| | | try { |
| | | int row = this.opeWarehouseReserveDao.updateOpeWarehouseReserve(opeWarehouseReserve); |
| | |
| | | } |
| | | } |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED) |
| | | public void claimForPerson(List<OpeApplyReserve> selectedListForPerson,String userId,String projectNum,String laboratoryId,String laboratoryContainerId){ |
| | | try{ |
| | | for(OpeApplyReserve app:selectedListForPerson){ |
| | | List<String> reagentCodes = app.getReagentCode(); |
| | | if (reagentCodes != null && reagentCodes.size() > 0) { |
| | | List<OpeReagentStatus> ss=new ArrayList<>(); |
| | | for (String opeReagentStatusId : reagentCodes) { |
| | | OpeReagentStatus opeReagentStatus = this.opeReagentStatusService.getOpeReagentStatus(opeReagentStatusId); |
| | | opeReagentStatus.setUserId(userId); |
| | | opeReagentStatus.setProjectNum(projectNum); |
| | | //boolean flag = this.opeReagentStatusService.updateReagentStatus(opeReagentStatus); |
| | | this.opeReagentStatusService.updateReagentStatus3(opeReagentStatus); |
| | | ss.add(opeReagentStatus); |
| | | //更新试剂状态和 |
| | | opeReagentStatus.setHouseId(laboratoryId); |
| | | opeReagentStatus.setContainerId(laboratoryContainerId); |
| | | this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus); |
| | | this.opeReagentStatusService.updateReagentStatus3(reagentCodes,userId,projectNum,laboratoryId,laboratoryContainerId); |
| | | |
| | | } |
| | | //更新是现实库存 |
| | | OpeLaboratoryReserve lr=new OpeLaboratoryReserve(); |
| | | lr.setReagentId(app.getReagent().getId()); |
| | |
| | | logger.error(ex.getMessage(), ex); |
| | | throw new BusinessException(ExceptionEnumCode.DB_ERR, |
| | | MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); |
| | | }catch(Exception e){ |
| | | e.printStackTrace(); |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | |
| | | opeReagentStatus.setStoreType(StoreType.DIRECTSTORE); |
| | | this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus); |
| | | |
| | | // 试剂使用情况入库insert |
| | | OpeUseFlow opeUseFlow = new OpeUseFlow(); |
| | | opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode()); |
| | | opeUseFlow.setStatus(opeReagentStatus.getStatus()); |
| | | opeUseFlow.setHouseId(opeReagentStatus.getHouseId()); |
| | | opeUseFlow.setContainerId(opeReagentStatus.getContainerId()); |
| | | opeUseFlow.setUserId(opeReagentStatus.getUserId()); |
| | | opeUseFlow.setPlace(opeReagentStatus.getPlace()); |
| | | opeUseFlow.setRemainder(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0)); |
| | | opeUseFlow.setStoreType(StoreType.DIRECTSTORE); |
| | | |
| | | Map<String, String> metaMap = new HashMap<>(); |
| | | metaMap.put("groupId", "operate_status"); |
| | | metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey())); |
| | | List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap); |
| | | opeUseFlow.setOperateState(baseMetaList.get(0).getId()); |
| | | this.opeUseFlowService.insertOpeUseFlow(opeUseFlow); |
| | | // 试剂使用情况领用insert |
| | | OpeUseFlow ouf=new OpeUseFlow(); |
| | | ouf.setReagentCode(opeReagentStatus.getReagentCode()); |
| | |
| | | opeReagentStatus.setStoreType(StoreType.DIRECTSTORE); |
| | | this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus); |
| | | |
| | | // 试剂使用情况入库insert |
| | | OpeUseFlow opeUseFlow = new OpeUseFlow(); |
| | | opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode()); |
| | | opeUseFlow.setStatus(opeReagentStatus.getStatus()); |
| | | opeUseFlow.setHouseId(opeReagentStatus.getHouseId()); |
| | | opeUseFlow.setContainerId(opeReagentStatus.getContainerId()); |
| | | opeUseFlow.setUserId(opeReagentStatus.getUserId()); |
| | | opeUseFlow.setPlace(opeReagentStatus.getPlace()); |
| | | opeUseFlow.setRemainder(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0)); |
| | | opeUseFlow.setStoreType(StoreType.DIRECTSTORE); |
| | | |
| | | Map<String, String> metaMap = new HashMap<>(); |
| | | metaMap.put("groupId", "operate_status"); |
| | | metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey())); |
| | | List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap); |
| | | opeUseFlow.setOperateState(baseMetaList.get(0).getId()); |
| | | this.opeUseFlowService.insertOpeUseFlow(opeUseFlow); |
| | | // 试剂使用情况领用insert |
| | | OpeUseFlow ouf=new OpeUseFlow(); |
| | | ouf.setReagentCode(opeReagentStatus.getReagentCode()); |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo) { |
| | | public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo,String consigneeId) { |
| | | |
| | | OpeWarehouseReserve ope = this.opeWarehouseReserveService |
| | | .getOpeWarehouseReserve2(opeApplyReserve.getReagent().getId(), opeApplyReserve.getArticleNumber(),opeApplyReserve.getHouseId()); |
| | | OpeWarehouseReserve ope = this.getOpeWarehouseReserve2(opeApplyReserve.getReagent().getId(), opeApplyReserve.getArticleNumber(),opeApplyReserve.getHouseId()); |
| | | if (ope == null) { |
| | | |
| | | ope = new OpeWarehouseReserve(); |
| | |
| | | ope.setReserve(opeApplyReserve.getArrivalNum()); |
| | | //仓库 |
| | | ope.setWarehouseId(opeApplyReserve.getHouseId()); |
| | | //仓库的货柜号 |
| | | ope.setContainerId(opeApplyReserve.getContainerId()); |
| | | //试剂 |
| | | ope.setReagentId(opeApplyReserve.getReagent().getId()); |
| | | //订单编号 |
| | |
| | | //批号 |
| | | ope.setArticleNumber(opeApplyReserve.getArticleNumber()); |
| | | ope.setId(IDUtils.uuid()); |
| | | //新增收货人 保存在仓库库存表 |
| | | ope.setUserId(consigneeId); |
| | | opeWarehouseReserveDao.insertOpeWarehouseReserve2(ope); |
| | | }else { |
| | | ope.setReserve(ope.getReserve() + opeApplyReserve.getArrivalNum()); |
| | | this.opeWarehouseReserveService.updateOpeWarehouseReserve(ope); |
| | | this.updateOpeWarehouseReserve(ope); |
| | | } |
| | | |
| | | |
| | |
| | | opeWarehouseReserveDao.updateBtReserve(id, useNum); |
| | | } |
| | | |
| | | @Override |
| | | @Override |
| | | public int countByReagentId(String id) { |
| | | int num = 0; |
| | | if (opeWarehouseReserveDao.countByReagentId(id) != null) { |
| | | num = opeWarehouseReserveDao.countByReagentId(id); |
| | | } |
| | | return num; |
| | | } |
| | | |
| | | @Override |
| | | public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList) { |
| | | if (opeList.size() < 1) { |
| | | return; |
| | | } |
| | | for (OpeApplyReserve oar : opeList) { |
| | | String reagentId = oar.getReagent().getId(); |
| | | |
| | | List<String> reagentCodes = new ArrayList<>(oar.getReagentCode()); |
| | | //开始库存扣除 |
| | | List<OpeWarehouseReserve> cacheUpdateList = oar.getCacheUpdateList(); |
| | | for (OpeWarehouseReserve owr : cacheUpdateList) { |
| | | //1.根据仓库id和试剂id搜索不同批号的试剂库存 |
| | | List<OpeWarehouseReserve> reserveList = opeWarehouseReserveService |
| | | List<OpeWarehouseReserve> reserveList = this |
| | | .selectWarehouseByRidAndArticleNumberAndWarehouse(reagentId, owr.getArticleNumber(), owr.getWarehouseId()); |
| | | Integer numLeave = owr.getUseNum(); |
| | | |
| | | for (OpeWarehouseReserve warehouseReserve:reserveList){ |
| | | //库存大于剩余领用-》直接扣完 |
| | | int usedNum = 0; |
| | |
| | | // warehouseReserve.setReserve(0); |
| | | usedNum = warehouseReserve.getReserve(); |
| | | } |
| | | |
| | | //更新流向,加入一条 |
| | | if (usedNum > 0) { |
| | | for (int i = 0; i < usedNum; i++) { |
| | | // 试剂使用情况入库insert TODO 流向需要当时的时间和地点 |
| | | OpeUseFlow opeUseFlow = new OpeUseFlow(); |
| | | opeUseFlow.setReagentCode(reagentCodes.get(0)); |
| | | opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE); |
| | | opeUseFlow.setUserId(warehouseReserve.getUserId()); |
| | | //仓库地点 |
| | | opeUseFlow.setHouseId(warehouseReserve.getWarehouseId()); |
| | | opeUseFlow.setContainerId(warehouseReserve.getContainerId()); |
| | | opeUseFlow.setRemainder(oar.getReagent().getMainMetering()!=null?oar.getReagent().getMainMetering():new BigDecimal(0)); |
| | | //入库时间 |
| | | opeUseFlow.setCreateTime(warehouseReserve.getUpdateTime()); |
| | | opeUseFlow.setStoreType(StoreType.DIRECTSTORE); |
| | | |
| | | Map<String, String> metaMap = new HashMap<>(); |
| | | metaMap.put("groupId", "operate_status"); |
| | | metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey())); |
| | | List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap); |
| | | opeUseFlow.setOperateState(baseMetaList.get(0).getId()); |
| | | this.opeUseFlowService.insertOpeUseFlow(opeUseFlow); |
| | | //更新试剂状态表 :批号 |
| | | opeReagentStatusDao.updateArticleNumberByRCode(reagentCodes.get(0),warehouseReserve.getArticleNumber()); |
| | | |
| | | reagentCodes.remove(0); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | //更新库存 |
| | | opeWarehouseReserveService.updateBtReserve(warehouseReserve.getId(),usedNum); |
| | | this.updateBtReserve(warehouseReserve.getId(),usedNum); |
| | | if (numLeave < 1) { |
| | | break; |
| | | } |
| | |
| | | |
| | | |
| | | // 仓库库存update |
| | | opeWarehouseReserve = this.opeWarehouseReserveService.getOpeWarehouseReserve2(opeApply.getReagent().getId(), opeApply.getArticleNumber(),opeApply.getHouseId()); |
| | | opeWarehouseReserve = this.getOpeWarehouseReserve2(opeApply.getReagent().getId(), opeApply.getArticleNumber(),opeApply.getHouseId()); |
| | | if (opeWarehouseReserve == null) { |
| | | opeWarehouseReserve = new OpeWarehouseReserve(); |
| | | opeWarehouseReserve.setReagentId(opeApply.getReagent().getId()); |
| | | opeWarehouseReserve.setArticleNumber(opeApply.getArticleNumber()); |
| | | opeWarehouseReserve.setReserve(0); |
| | | opeWarehouseReserve.setWarehouseId(opeApply.getHouseId()); |
| | | opeWarehouseReserve.setContainerId(opeApply.getContainerId()); |
| | | opeWarehouseReserve.setUserId(loginUserId); |
| | | } |
| | | opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + opeApply.getArrivalNum()); |
| | | if (StringUtils.isBlank(opeWarehouseReserve.getId())) { |
| | | this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve); |
| | | this.insertOpeWarehouseReserve(opeWarehouseReserve); |
| | | } else { |
| | | this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve); |
| | | this.updateOpeWarehouseReserve(opeWarehouseReserve); |
| | | } |
| | | } |
| | | } |