src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -1,15 +1,12 @@
package com.nanometer.smartlab.controller;
import com.nanometer.smartlab.dao.BaseMetaDao;
import com.nanometer.smartlab.dao.OpeApplyDao;
import com.nanometer.smartlab.dao.OpeReagentStatusDao;
import com.nanometer.smartlab.dao.OpeWarehouseReserveDao;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.dto.ApplyListDto;
import com.nanometer.smartlab.entity.enumtype.ApplyStatusVo;
import com.nanometer.smartlab.entity.enumtype.ApplyStatus;
import com.nanometer.smartlab.entity.enumtype.ArrivalStatus;
import com.nanometer.smartlab.entity.enumtype.SeeFlag;
import com.nanometer.smartlab.entity.enumtype.ValidFlag;
import com.nanometer.smartlab.entity.enumtype.*;
import com.nanometer.smartlab.exception.BusinessException;
import com.nanometer.smartlab.exception.ExceptionEnumCode;
import com.nanometer.smartlab.service.*;
@@ -50,8 +47,8 @@
/**
 * Created by cmower on 17/11/20.
 */
@Controller
@PropertySource(value = "WEB-INF/config.properties",encoding = "utf-8")
@Controller
@Scope("session")
public class WarehouseStockMngController extends BaseController {
@@ -74,6 +71,8 @@
   private SysSupplierService sysSupplierService;
   @Resource
   private OpeOrderService opeOrderService;
   @Resource
   private BaseMetaDao baseMetaDao;
   @Resource
   private MenuController menuController;
@@ -164,8 +163,10 @@
   private String endReagentCode;
   private String startReagentCodeForPerson;
   private String endReagentCodeForPerson;
   private String warehouseName;
   private Integer editFlag;
   private Integer isAllApply = 0;
   private StreamedContent file;
   @Value("${pdf.export.file.path}")
   private String pdfExportFilePath;
@@ -374,7 +375,7 @@
   private void initUserSelectList() {
      logger.info("WarehouseStockMngController initUserSelectList start");
      this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null));
      this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null,null,null));
      /**if(sysUserService.getSysUser(userId) == null)
      {
         this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByDep(this.getUserDepartment());
@@ -530,6 +531,13 @@
      selectedTmpOrderList = null;
   }
   public void hideOrderTmp() {
      //清空
      selectedTmpOrderList = null;
      //隐藏
      RequestContext.getCurrentInstance().execute("document.getElementById('showTabOrder').style.display='none'");
   }
   public void  clearInputStorageTmp(){
      selectedInputStorageTmpOrderList = null;
   }
@@ -562,6 +570,10 @@
   }
   public void hide(){
      selectedTmpList = null;
      RequestContext.getCurrentInstance().execute("document.getElementById('showTab').style.display='none'");
   }
   public void cancelOrderTmp(){
      if (trulySelectedOrderList == null || trulySelectedOrderList.size()<=0){
         FacesUtils.info("至少选择一个");
@@ -623,7 +635,7 @@
         FacesUtils.info("至少选择一个");
         return;
      }
      this.userId = getUser().getId();
      this.menuController.goToPage(Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW, Constants.PAGE_WAREHOUSE_STOCK_MNG);
   }
//
@@ -648,6 +660,8 @@
         }
      }
      checkTable = null;
      //
      this.userId = selectedTmpOrderList.get(0).getApplyUser();
      this.menuController.goToPage(Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW_PERSON, Constants.PAGE_WAREHOUSE_STOCK_MNG);
   }
@@ -1248,11 +1262,37 @@
   }
   /**
    * 点击打印  关联所有流向和领用单号e
    */
   public void associatedFlowReceiptNumber2() {
      try {
         opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber);
         //弹出打印窗口
         RequestContext.getCurrentInstance().execute("document.getElementById('indirectPrint').click()");
      } catch (Exception e) {
         logger.info(e.getMessage());
      }
   }
   public void closeDialog() {
      try {
         opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber);
         onCancelBtnClick();
      } catch (Exception e) {
         logger.info(e.getMessage());
      }
   }
   public void closeDialog2() {
      try {
         opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber);
         onCancelBtnClick();
      } catch (Exception e) {
         logger.info(e.getMessage());
      }
@@ -1550,8 +1590,38 @@
            }
            this.opeWarehouseReserveService.reagentDStore4(opeList,userId);
            for(int i=0;i<list2.size();i++){
               List<String> reagentCodes = opeReagentStatusService
                     .generateReagentCode(list2.get(i).getStartReagentCode2(), list2.get(i).getEndReagentCode2());
               Integer selectNum = list2.get(i).getSelectNum();
               for (int j = 0;j<selectNum;j++){
                  // 试剂使用情况入库insert
                  OpeUseFlow opeUseFlow = new OpeUseFlow();
                  opeUseFlow.setReagentCode(reagentCodes.get(0));
                  opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
                  //仓库信息
                  List<OpeWarehouseReserve> warehouseReserveInfo = opeWarehouseReserveService
                        .selectWarehouseByRidAndArticleNumberAndWarehouse(list2.get(i).getReagent().getId()
                              , list2.get(i).getArticleNumber()
                              , list2.get(i).getWarehouseId());
                  opeUseFlow.setHouseId(list2.get(i).getWarehouseId());
                  opeUseFlow.setContainerId(warehouseReserveInfo.get(0).getContainerId());
                  opeUseFlow.setCreateTime(warehouseReserveInfo.get(0).getUpdateTime());
                  opeUseFlow.setUserId(warehouseReserveInfo.get(0).getUserId());
                  opeUseFlow.setRemainder(list2.get(i).getReagent().getMainMetering()!=null?list2.get(i).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);
                  reagentCodes.remove(0);
               }
               list2.get(i).setReserve(list2.get(i).getReserve()-list2.get(i).getSelectNum());
               opeWarehouseReserveDao.updateOpeWarehouseReserve(list2.get(i));
               opeWarehouseReserveDao.updateOpeWarehouseReserve2(list2.get(i));
            }
@@ -1629,11 +1699,11 @@
                  Map<String, Object> filters) {
               List<OpeWarehouseReserve> list = null;
               try {
                  int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn);
                  int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn,warehouseName);
                  this.setRowCount(count);
                  if (count > 0) {
                     list = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, first,
                           pageSize,productSn);
                           pageSize,productSn,warehouseName);
                  }
               } catch (Exception e) {
                  logger.error(e);
@@ -1679,11 +1749,11 @@
               }
               try {
                  int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id,reagentId, userName,productSn,applyCode,status);
                  int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id, reagentId, userName, productSn, applyCode, status, isAllApply);
                  this.setRowCount(count);
                  if (count > 0) {
                     list = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, first,
                           pageSize,productSn,applyCode,status);
                     list = opeApplyService.getOpeApplyReserveListByNameFor(id, reagentId, userName, first,
                           pageSize, productSn, applyCode, status, isAllApply);
                  }
               } catch (Exception e) {
                  logger.error(e);
@@ -1788,7 +1858,7 @@
            realDataList=selectedListForPerson;
         }else {
            realDataList = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, null,
                  null,productSn,applyCode,status);
                  null,productSn,applyCode,status,isAllApply);
         }
         List<String> headerList = new ArrayList<>();
         headerList.add("申购编号");
@@ -1905,7 +1975,7 @@
            realDataList=selectedList;
         }else {
            realDataList = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, null,
                  null,productSn);
                  null,productSn,warehouseName);
         }
            List<String> headerList = new ArrayList<>();
            headerList.add("试剂名称");
@@ -2506,7 +2576,7 @@
            list.add(sysUser);
            applyUserSelectList = list;
         } else {
            applyUserSelectList = this.sysUserService.getSysUserList(null, null, null, null, null);
            applyUserSelectList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
         }
      }
      return applyUserSelectList;
@@ -2653,7 +2723,9 @@
   public List<SysLaboratory> getLaboratory() {
      if(userId != null && userId.trim().length() > 0)
      {
         this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByDep(sysUserService.getSysUser(userId).getDepartment());
         //Todo 修改申领人的实验室显示信息
         this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByUserId(userId);
         if(this.laboratory != null && this.laboratory.size() > 0)
         {
            //flag =true;
@@ -2664,8 +2736,9 @@
            //{
            //   this.oriLaboratoryId = this.laboratory.get(0).getId();
            //}
            this.laboratoryId=this.laboratory.get(0).getId();
            this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(this.laboratory.get(0).getId());
            this.laboratoryId= laboratoryId==null?this.laboratory.get(0).getId():laboratoryId;
            this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryId);
         }else {
            this.oriLaboratoryId = null;
            this.laboratoryContainers = null;
@@ -2704,6 +2777,7 @@
   }
   public String getLaboratoryContainerId() {
      return laboratoryContainerId;
   }
@@ -2831,7 +2905,7 @@
   }
   public List getConsignee() {
      List<SysUser> dataList = this.sysUserService.getSysUserList(null, null, null, null, null);
      List<SysUser> dataList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
      //将admin置于首位
      for (int i = 0; i < dataList.size(); i++) {
         if ("admin".equals(dataList.get(i).getAccount())){
@@ -2969,4 +3043,20 @@
   public void setReceiptNumber(String receiptNumber) {
      this.receiptNumber = receiptNumber;
   }
   public String getWarehouseName() {
      return warehouseName;
   }
   public void setWarehouseName(String warehouseName) {
      this.warehouseName = warehouseName;
   }
   public Integer getIsAllApply() {
      return isAllApply;
   }
   public void setIsAllApply(Integer isAllApply) {
      this.isAllApply = isAllApply;
   }
}