gdg
2021-02-23 3cc43725fa2e4b8ed4b4b00b845a7dc83f99f39a
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -48,8 +48,6 @@
    @Resource
    private OpeUseFlowService opeUseFlowService;
    @Resource
    private OpeWarehouseReserveService opeWarehouseReserveService;
    @Resource(name="baseMetaDao")
    private BaseMetaDao baseMetaDao;
@@ -94,7 +92,7 @@
   @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);
@@ -102,6 +100,7 @@
         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);
@@ -111,12 +110,13 @@
   }
   @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);
@@ -508,23 +508,7 @@
               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());
@@ -572,23 +556,7 @@
               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());
@@ -626,10 +594,9 @@
    @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();
@@ -637,6 +604,8 @@
         ope.setReserve(opeApplyReserve.getArrivalNum());
         //仓库
         ope.setWarehouseId(opeApplyReserve.getHouseId());
         //仓库的货柜号
         ope.setContainerId(opeApplyReserve.getContainerId());
         //试剂
         ope.setReagentId(opeApplyReserve.getReagent().getId());
         //订单编号
@@ -646,10 +615,12 @@
         //批号
         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);
      }
@@ -711,14 +682,15 @@
      }
      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;
@@ -731,8 +703,41 @@
               //   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;
               }
@@ -819,19 +824,21 @@
            // 仓库库存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);
            }
        }
   }