kongzy
2023-11-28 59d9ea33f503e363f2e2941c7c00cc9dd9d9d1c7
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -16,6 +16,7 @@
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;
@@ -46,10 +47,9 @@
   @Resource
   private OpeReagentStatusService opeReagentStatusService;
   @Lazy
    @Resource
    private OpeUseFlowService opeUseFlowService;
    @Resource
    private OpeWarehouseReserveService opeWarehouseReserveService;
    @Resource(name="baseMetaDao")
    private BaseMetaDao baseMetaDao;
@@ -205,7 +205,7 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
   public boolean updateOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve) {
      try {
         int row = this.opeWarehouseReserveDao.updateOpeWarehouseReserve(opeWarehouseReserve);
@@ -225,26 +225,14 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public void claimForPerson(List<OpeApplyReserve> selectedListForPerson,String userId,String projectNum,String laboratoryId,String laboratoryContainerId){
   @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
   public void claimForPerson(List<OpeApplyReserve> selectedListForPerson,String userId,String projectNum,String laboratoryId,String laboratoryContainerId,String receiptNumber){
      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,receiptNumber);
               }
               //更新是现实库存
               OpeLaboratoryReserve lr=new OpeLaboratoryReserve();
               lr.setReagentId(app.getReagent().getId());
@@ -295,12 +283,15 @@
         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);
      }
   }
   // 仓库领用
   @Transactional(propagation = Propagation.REQUIRED)
   public void claim(List<OpeWarehouseReserve> selectedList, String userId,String projectNum) {
   public void claim(List<OpeWarehouseReserve> selectedList, String userId,String projectNum,String receiptNumber) {
      try {
         for (OpeWarehouseReserve opeWarehouseReserve : selectedList) {
            List<String> reagentCodes = opeWarehouseReserve.getReagentCodes();
@@ -311,7 +302,7 @@
                  opeReagentStatus.setUserId(userId);
                  opeReagentStatus.setProjectNum(projectNum);
                  //boolean flag = this.opeReagentStatusService.updateReagentStatus(opeReagentStatus);
                  this.opeReagentStatusService.updateReagentStatus(opeReagentStatus);
                  this.opeReagentStatusService.updateReagentStatus(opeReagentStatus,receiptNumber);
                  //if (flag) {
                     //opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() - 1);
                     //opeWarehouseReserve.setSelectNum(0);
@@ -452,7 +443,7 @@
      }
   }
   public void reagentDStore4(List<OpeApply> reagentDStoreList, String loginUserId){
   public void reagentDStore4(List<OpeApply> reagentDStoreList, String loginUserId,String receiptNumber){
      if (reagentDStoreList == null) {
         return;
      }
@@ -527,6 +518,7 @@
               metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
               List<BaseMeta> baseMetaList2 = baseMetaDao.getBaseMetaList(metaMap2);
               ouf.setOperateState(baseMetaList2.get(0).getId());
               ouf.setReceiptNumber(receiptNumber);
               this.opeUseFlowService.insertOpeUseFlow(ouf);
            }
         }
@@ -598,8 +590,7 @@
   @Transactional
    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();
@@ -623,7 +614,7 @@
         opeWarehouseReserveDao.insertOpeWarehouseReserve2(ope);
      }else {
         ope.setReserve(ope.getReserve() + opeApplyReserve.getArrivalNum());
         this.opeWarehouseReserveService.updateOpeWarehouseReserve(ope);
         this.updateOpeWarehouseReserve(ope);
      }
@@ -678,7 +669,21 @@
      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 OpeWarehouseReserve getRowData(String rowKey) {
        return opeWarehouseReserveDao.getRowData(rowKey);
    }
    @Override
   public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList) {
      if (opeList.size() < 1) {
         return;
@@ -690,7 +695,7 @@
         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();
@@ -729,14 +734,18 @@
                     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;
               }
@@ -823,7 +832,7 @@
            // 仓库库存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());
@@ -835,9 +844,9 @@
            }
            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);
            }
        }
   }