From 47a751cb301d05276ae5d75145d57b2d090fe4e1 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期一, 01 七月 2024 10:58:35 +0800 Subject: [PATCH] change --- src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java | 1849 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 1,419 insertions(+), 430 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java index e9cc241..a16737d 100644 --- a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java +++ b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java @@ -1,14 +1,11 @@ package com.nanometer.smartlab.controller; -import com.nanometer.smartlab.dao.OpeApplyDao; -import com.nanometer.smartlab.dao.OpeReagentStatusDao; -import com.nanometer.smartlab.dao.OpeWarehouseReserveDao; +import com.nanometer.smartlab.dao.*; import com.nanometer.smartlab.entity.*; import com.nanometer.smartlab.entity.dto.ApplyListDto; -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.*; import com.nanometer.smartlab.util.*; import org.apache.commons.lang.StringUtils; @@ -18,13 +15,16 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.primefaces.context.RequestContext; import org.primefaces.event.SelectEvent; +import org.primefaces.event.TabChangeEvent; import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; import org.primefaces.model.StreamedContent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.faces.context.ExternalContext; @@ -36,6 +36,8 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.net.URLEncoder; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -43,8 +45,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 { @@ -54,6 +56,8 @@ @Resource private OpeApplyService opeApplyService; + @Resource + private SysProjectDao sysProjectDao; @Resource private OpeWarehouseReserveService opeWarehouseReserveService; @@ -65,6 +69,10 @@ private SysUserService sysUserService; @Resource private SysSupplierService sysSupplierService; + @Resource + private OpeOrderService opeOrderService; + @Resource + private BaseMetaDao baseMetaDao; @Resource private MenuController menuController; @@ -82,6 +90,8 @@ @Resource(name = "opeReagentStatusDao") OpeReagentStatusDao opeReagentStatusDao; + @Resource + OpeUseFlowService opeUseFlowService; @Resource OpeWarehouseReserveDao opeWarehouseReserveDao; @@ -89,7 +99,7 @@ OpeApplyDao opeApplyDao; @Resource - OpeLaboratoryReserveService opeLaboratoryReserveService; + OpeLaboratoryReserveDao opeLaboratoryReserveDao; /** * 数据源 */ @@ -113,6 +123,20 @@ * 打开条形码对话框用 */ private List<OpeReagentStatus> reagentStatusSelectListForPerson; + /** + *打开条形码对话框用 + */ + private Map<Long,Map<Long,OpeWarehouseReserve>> warehouseReserveUseTmp=new HashMap<>(); + /** + * 打开条形码对话框用 + */ + private List<OpeWarehouseReserve> warehouseReserveList = new ArrayList<>(); + + /** + * 打开条形码对话框用 + */ + private OpeWarehouseReserve opeWarehouseReserve = new OpeWarehouseReserve(); + public List<OpeReagentStatus> getReagentStatusSelectListForPerson() { return reagentStatusSelectListForPerson; @@ -122,31 +146,38 @@ this.reagentStatusSelectListForPerson = reagentStatusSelectListForPerson; } - private String reagentId; - private String reagentLogId; + private String reagentName; + private Long reagentLogId; private String userName; + private Integer tabValue = 0; private List<SysReagent> reagentSelectList; private List<String> showCodes; - private String userId; - private String projectNum; - private String userLogId; + private Long userId; + private Long projectId; + private Long userLogId; private String reagentCode; private Integer useNum; private String startReagentCode; 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; @Value("${institute.name}") String instituteName; + private boolean isExpired; + private Hashtable printTable; + @Autowired + private AccountInAndOutService accountInAndOutService; public Hashtable getPrintTable() { return printTable; @@ -186,10 +217,13 @@ private List<SysUser> userSelectList; private List<SysUser> applyUserSelectList; - private String supplierId; + private Long supplierId; private List<SysSupplier> supplierSelectList; //private boolean flag = false; - + //领用单号 + private String receiptNumber; + //备注 + private String note; // 试剂库 private LazyDataModel<SysReagent> reagentDataModel; // 直接入库试剂List @@ -202,18 +236,22 @@ private OpeApply reagentDStore; private String applyNewReagentName; private String applyNewCas; + private String productSn; + private String applyCode; + private Integer status; + private List<ApplyStatusVo> statusSelectList; private List<SysWarehouse> warehouseList; private List<SysWarehouseContainer> warehouseContainerList; private List<BaseMeta> warehouseContainerPlaceList; - private Map<String, String> warehouseNameMap; - private Map<String, SysWarehouseContainer> warehouseContainerMap; - private Map<String, List<SysWarehouseContainer>> warehouseIdContainerMap; + private Map<Long, String> warehouseNameMap; + private Map<Long, SysWarehouseContainer> warehouseContainerMap; + private Map<Long, List<SysWarehouseContainer>> warehouseIdContainerMap; - private String laboratoryId; - private String oriLaboratoryId; + private Long laboratoryId; + private Long oriLaboratoryId; private List<SysLaboratory> laboratory; - private String laboratoryContainerId; + private Long laboratoryContainerId; private List<SysLaboratoryContainer> laboratoryContainers; /** @@ -229,7 +267,22 @@ * 选中的list */ private List<OpeApplyReserve> selectedListForPerson; - + private List<OpeApplyReserve> selectedTmpOrderList; + private List<OpeApplyReserve> trulySelectedOrderList; + /** + * 入库车 + */ + private List<OpeApplyReserve> selectedInputStorageTmpOrderList; + private List<OpeApplyReserve> trulyInputStorageTmpSelectedOrderList; + /** + * 订单入库变量 + */ + //到货时间 + private Timestamp arrivalTime; + //收货人 + private Long consigneeId; + //OpeApply + private List<OpeApplyReserve> opeApplyList; /** * 条形码对话框中选择的条形码集合 */ @@ -259,7 +312,14 @@ this.initUserSelectList(); } - + /** + * 获取已领用数量 + * @param applyCode + * @return + */ + public Integer getUsedCount(String applyCode){ + return this.opeReagentStatusDao.getReagentStatusCountByApplyCode(applyCode); + } @@ -269,15 +329,15 @@ this.initUserSelectList(); this.warehouseList = this.sysWarehouseService.getSysWarehouseList(null, null, null, null); - this.warehouseNameMap = new HashMap<String, String>(); + this.warehouseNameMap = new HashMap<Long, String>(); if (this.warehouseList != null && this.warehouseList.size() > 0) { for (SysWarehouse house : this.warehouseList) { this.warehouseNameMap.put(house.getId(), house.getName()); } } - this.warehouseContainerMap = new HashMap<String, SysWarehouseContainer>(); - this.warehouseIdContainerMap = new HashMap<String, List<SysWarehouseContainer>>(); + this.warehouseContainerMap = new HashMap<Long, SysWarehouseContainer>(); + this.warehouseIdContainerMap = new HashMap<Long, List<SysWarehouseContainer>>(); List<SysWarehouseContainer> warehouseContainerList = this.sysWarehouseContainerService.getSysWarehouseContainerList(null, null, null, null, null); if (warehouseContainerList != null && warehouseContainerList.size() > 0) { for (SysWarehouseContainer container : warehouseContainerList) { @@ -294,6 +354,33 @@ this.onWarehouseSelectChange(null); } + public void initInputWarehouse() { + logger.info("WarehouseStockMngController initInputWarehouse start"); + this.warehouseList = this.sysWarehouseService.getSysWarehouseList(null, null, null, null); + this.warehouseNameMap = new HashMap<Long, String>(); + if (this.warehouseList != null && this.warehouseList.size() > 0) { + for (SysWarehouse house : this.warehouseList) { + this.warehouseNameMap.put(house.getId(), house.getName()); + } + } + this.warehouseContainerMap = new HashMap<Long, SysWarehouseContainer>(); + this.warehouseIdContainerMap = new HashMap<Long, List<SysWarehouseContainer>>(); + List<SysWarehouseContainer> warehouseContainerList = this.sysWarehouseContainerService.getSysWarehouseContainerList(null, null, null, null, null); + if (warehouseContainerList != null && warehouseContainerList.size() > 0) { + for (SysWarehouseContainer container : warehouseContainerList) { + warehouseContainerMap.put(container.getId(), container); + + if (!warehouseIdContainerMap.containsKey(container.getWarehouseId()) + || warehouseIdContainerMap.get(container.getWarehouseId()) == null) { + warehouseIdContainerMap.put(container.getWarehouseId(), new ArrayList<SysWarehouseContainer>()); + } + warehouseIdContainerMap.get(container.getWarehouseId()).add(container); + } + } + + this.onWarehouseSelectChange(null); + } + private void initReagentSelectList() { logger.info("WarehouseStockMngController initReagentSelectList start"); this.setReagentSelectList(this.sysReagentService.getSysReagentList(null, null, null, null,null, null)); @@ -301,7 +388,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()); @@ -317,11 +404,11 @@ private void initReagentStatusSelectList() { logger.info("WarehouseStockMngController initReagentStatusSelectList start"); if (selectedOpeWarehouseReserve != null) { - String reagentId = selectedOpeWarehouseReserve.getReagentId(); + Long reagentId = selectedOpeWarehouseReserve.getReagentId(); String articleNumber = selectedOpeWarehouseReserve.getArticleNumber(); - this.setReagentStatusSelectList(opeReagentStatusService.getOpeReagentStatusList(reagentId, articleNumber, - ArrivalStatus.WAREHOUSE.getKey(), reagentCode, null, null, null)); + this.setReagentStatusSelectList(opeReagentStatusService.getOpeReagentStatusList22(reagentId, articleNumber, + ArrivalStatus.WAREHOUSE.getKey(), reagentCode, null, null,null, null)); // System.out.print("this.getReagentStatusSelectList().size(): " + this.reagentStatusSelectList.size()); // System.out.print("this.getReagentStatusSelectList().get(0): " + this.reagentStatusSelectList.get(0).getReagentCode()); @@ -334,13 +421,10 @@ private void initReagentStatusSelectListForPerson() { logger.info("WarehouseStockMngController initReagentStatusSelectListForPerson start"); if (selectedOpeApplyReserve != null) { - String reagentId = selectedOpeApplyReserve.getReagent().getId(); + Long reagentId = selectedOpeApplyReserve.getReagent().getId(); String articleNumber = selectedOpeApplyReserve.getArticleNumber(); - System.out.println(reagentId); - System.out.println(articleNumber); - System.out.println(reagentCode); - this.setReagentStatusSelectListForPerson(opeReagentStatusService.getOpeReagentStatusList(reagentId, articleNumber, - ArrivalStatus.WAREHOUSE.getKey(), reagentCode, null, null, null)); + this.setReagentStatusSelectListForPerson(opeReagentStatusService.getOpeReagentStatusList22(reagentId, articleNumber, + ArrivalStatus.WAREHOUSE.getKey(), reagentCode, null, selectedOpeApplyReserve.getApplyCode(),null, null)); } } @@ -350,7 +434,8 @@ System.out.println(getUser().getSeeFlag().getKey()); //SysUser u=sysUserService.getSysUser(getUserId()); //System.out.println(u); - if (getUser().getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) { + if (getUser().getSeeFlag().getKey() != SeeFlag.MANAGE.getKey() + && getUser().getSeeFlag().getKey() != SeeFlag.LEADING.getKey()) { editFlag=0; }else{ editFlag=1; @@ -387,10 +472,92 @@ } } + public void addOrder() { + logger.info("WarehouseStockMngController onUseBtnClick start"); + if (this.selectedListForPerson == null || this.selectedListForPerson.size() == 0) { + FacesUtils.warn("请选择数据。"); + return; + } + if (selectedTmpOrderList !=null && selectedTmpOrderList.size()>0){ + ArrayList<OpeApplyReserve> tmp = new ArrayList<>(); + selectedListForPerson.forEach(opeApplyReserve -> { + AtomicBoolean flag = new AtomicBoolean(false); + selectedTmpOrderList.forEach(opeApplyReserve1 -> { + if (opeApplyReserve.getId().equals(opeApplyReserve1.getId())){ + flag.set(true); + } + + }); + if(!flag.get()) { + tmp.add(opeApplyReserve); + } + }); + selectedTmpOrderList.addAll(tmp); + }else{ + selectedTmpOrderList = new ArrayList<>(); + selectedTmpOrderList.addAll(selectedListForPerson); + } + } + + public void addInputStorageOrder() { + if (this.selectedListForPerson == null || this.selectedListForPerson.size() == 0) { + FacesUtils.warn("请选择数据。"); + return; + } + //1.判断非状态为确认的申购单不能入库 + for (OpeApplyReserve opeApplyReserve : this.selectedListForPerson) { + if (opeApplyReserve.getStatus() != ApplyStatus.SUPPLIER_CONFIRM && opeApplyReserve.getStatus() != ApplyStatus.UNCOMPLETED) { + FacesUtils.warn("非已确认的数据不能入库。"); + return; + } + } + //2.加入暂存 + if (selectedInputStorageTmpOrderList !=null && selectedInputStorageTmpOrderList.size()>0){ + ArrayList<OpeApplyReserve> tmp = new ArrayList<>(); + selectedListForPerson.forEach(opeApplyReserve -> { + AtomicBoolean flag = new AtomicBoolean(false); + selectedInputStorageTmpOrderList.forEach(opeApplyReserve1 -> { + if (opeApplyReserve.getId().equals(opeApplyReserve1.getId())){ + flag.set(true); + } + + }); + if(!flag.get()) { + tmp.add(opeApplyReserve); + } + }); + selectedInputStorageTmpOrderList.addAll(tmp); + }else{ + selectedInputStorageTmpOrderList = new ArrayList<>(); + selectedInputStorageTmpOrderList.addAll(selectedListForPerson); + } + } + public void clear(){ selectedTmpList = null; } + + public void clearOrderTmp(){ + selectedTmpOrderList = null; + } + + public void hideOrderTmp() { + //清空 + selectedTmpOrderList = null; + //隐藏 + RequestContext.getCurrentInstance().execute("document.getElementById('showTabOrder').style.display='none'"); + } + + public void clearInputStorageTmp(){ + selectedInputStorageTmpOrderList = null; + } + + public void hideInputStorageTmp(){ + selectedInputStorageTmpOrderList = null; + + RequestContext.getCurrentInstance().execute("document.getElementById('putInStorage').style.display='none'"); + } public void cancel(){ if (trulySelectedList == null || trulySelectedList.size()<=0){ @@ -403,19 +570,78 @@ return; } - ArrayList<Integer> indexs = new ArrayList<>(); - for (int i =0;i<trulySelectedList.size();i++){ - for (int j = 0; j < selectedTmpList.size(); j++) { - if(trulySelectedList.get(i).getId().equals(selectedTmpList.get(j).getId())) - { - indexs.add(i); + ArrayList<Object> indexs = new ArrayList<>(); + for (OpeWarehouseReserve warehouseReserve : trulySelectedList) { + for (OpeWarehouseReserve opeWarehouseReserve : selectedTmpList) { + if (warehouseReserve.getId().equals(opeWarehouseReserve.getId())) { + indexs.add(warehouseReserve); + } + } + } + + if (indexs.size()>0){ + indexs.forEach(obj -> { + selectedTmpList.remove(obj); + }); + } + + } + + 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("至少选择一个"); + return; + } + + if (selectedTmpOrderList == null || selectedTmpOrderList.size()<=0){ + FacesUtils.info("至少选择一个"); + return; + } + + ArrayList<Object> indexs = new ArrayList<>(); + for (OpeApplyReserve opeApplyReserve : trulySelectedOrderList) { + for (OpeApplyReserve applyReserve : selectedTmpOrderList) { + if (opeApplyReserve.getId().equals(applyReserve.getId())) { + indexs.add(opeApplyReserve); + } + } + } + + if (indexs.size()>0){ + indexs.forEach(obj -> { + selectedTmpOrderList.remove(obj); + }); + } + + } + + public void cancelInputStorageTmp(){ + if (trulyInputStorageTmpSelectedOrderList == null || trulyInputStorageTmpSelectedOrderList.size()<=0){ + FacesUtils.info("至少选择一个"); + return; + } + + if (selectedInputStorageTmpOrderList == null || selectedInputStorageTmpOrderList.size()<=0){ + FacesUtils.info("至少选择一个"); + return; + } + + ArrayList<Object> indexs = new ArrayList<>(); + for (OpeApplyReserve opeApplyReserve : trulyInputStorageTmpSelectedOrderList) { + for (OpeApplyReserve applyReserve : selectedInputStorageTmpOrderList) { + if (opeApplyReserve.getId().equals(applyReserve.getId())) { + indexs.add(opeApplyReserve); } } } if (indexs.size()>0){ - indexs.forEach(index -> { - selectedTmpList.remove(selectedTmpList.get(index)); + indexs.forEach(obj -> { + selectedInputStorageTmpOrderList.remove(obj); }); } @@ -426,10 +652,55 @@ FacesUtils.info("至少选择一个"); return; } - + this.userId = getUser().getId(); this.menuController.goToPage(Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW, Constants.PAGE_WAREHOUSE_STOCK_MNG); } // + public void onUseBtnClickOrderTmp(){ + warehouseReserveUseTmp = new HashMap<>(); + opeWarehouseReserve = new OpeWarehouseReserve(); + if (selectedTmpOrderList == null || selectedTmpOrderList.size()<=0){ + FacesUtils.info("至少选择一个"); + return; + } + + + //相同的试剂不能再多选 + Set<Long> checkTable = new HashSet<>(); + for (OpeApplyReserve oar : selectedTmpOrderList) { + Long reagentId = oar.getReagent().getId(); + if (!checkTable.contains(reagentId)) { + checkTable.add(reagentId); + }else{ + FacesUtils.info("相同试剂不能重复选择"); + return; + } + } + checkTable = null; + // + this.userId = selectedTmpOrderList.get(0).getApplyUserId(); + SysUser sysUser = sysUserService.getSysUser(this.userId); + if (sysUser == null){ + FacesUtils.info("申领人不存在"); + return; + } + this.menuController.goToPage(Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW_PERSON, Constants.PAGE_WAREHOUSE_STOCK_MNG); + } + + public void onUseBtnClickInputStorageTmp(){ + if (selectedInputStorageTmpOrderList == null || selectedInputStorageTmpOrderList.size()<=0){ + FacesUtils.info("至少选择一个"); + return; + } + opeApplyList = new ArrayList<>(); + selectedInputStorageTmpOrderList.forEach(opeApplyReserve -> { + OpeApplyReserve applyDetail = opeApplyService.getOpeApplyDetail(opeApplyReserve.getId()); + opeApplyList.add(applyDetail); + + }); + //跳转编辑页面 + this.menuController.goToPage(Constants.PAGE_ORDER_INPUT_WAREHOUSE, Constants.PAGE_WAREHOUSE_STOCK_MNG); + } public void onUseBtnClickForPerson() { logger.info("WarehouseStockMngController onUseBtnClickForPerson start"); @@ -471,9 +742,161 @@ // 根据选择的试剂获取对应的条形码 initReagentStatusSelectListForPerson(); + //初始化试剂库存所在仓库仓库 + this.warehouseReserveList = opeWarehouseReserveService.selectWarehouseByReagentIdAndArticleNumber(selectedOpeApplyReserve.getReagent().getId(),selectedOpeApplyReserve.getArticleNumber(),true); + //初始化第一个库存 + if (warehouseReserveList.size()>0) + selectChangeReserve(warehouseReserveList.get(0).getWarehouseId()); + //初始化条形码,通过applyReserve保存的条码显示对应试剂的条码 + for (OpeApplyReserve oar : selectedTmpOrderList) { + if (oar.getReagent().getId().equals(opeWarehouseReserve.getReagentId())) { + this.endReagentCodeForPerson = oar.getEndReagentCode2(); + this.startReagentCodeForPerson = oar.getStartReagentCode2(); + } + } + if (warehouseReserveUseTmp.get(selectedOpeApplyReserve.getReagent().getId()) == null) { + //初始化库中领用和大小, + reagentCodeSelectedList = selectedOpeApplyReserve.getReagentCodes(); + useNum = selectedOpeApplyReserve.getReagentCodes() == null?0: selectedOpeApplyReserve.getReagentCodes().size(); + this.endReagentCodeForPerson = null; + this.startReagentCodeForPerson = null; + } RequestContext.getCurrentInstance().execute("PF('reagentCodeDialogForPerson').show()"); } + /** + * 变换库存 + */ + public void selectChangeReserve(Long id) { + if (warehouseReserveList.size() > 0) { + warehouseReserveList.forEach(owr -> { + if (owr.getWarehouseId().equals(id)){ + opeWarehouseReserve.setId(owr.getId()); + opeWarehouseReserve.setWarehouseId(id); + opeWarehouseReserve.setWarehouseName(owr.getWarehouseName()); + opeWarehouseReserve.setReserve(owr.getReserve()); + opeWarehouseReserve.setReagentId(owr.getReagentId()); + } + }); + } + } + + /** + * 补贴条码->添加x仓库的n个试剂 + */ + public void add2() { + + //0.判断该批次是否再仓库有库存 + if (opeWarehouseReserve.getId() == null) { + FacesUtils.warn("没有库存"); + return; + } + //1.判断领取数量 + if (useNum > opeWarehouseReserve.getReserve()) { + FacesUtils.warn("领用数量不能超过库存"); + return; + } + //2.加入Map + OpeWarehouseReserve owr = new OpeWarehouseReserve(); + owr.setId(opeWarehouseReserve.getId()); + owr.setWarehouseId(opeWarehouseReserve.getWarehouseId()); + owr.setWarehouseName(opeWarehouseReserve.getWarehouseName()); + owr.setReserve(opeWarehouseReserve.getReserve()); + owr.setReagentId(opeWarehouseReserve.getReagentId()); + owr.setUseNum(useNum); + if (warehouseReserveUseTmp.get(owr.getReagentId()) == null) { + Map<Long, OpeWarehouseReserve> tmp = new HashMap<>(); + tmp.put(owr.getWarehouseId(), owr); + warehouseReserveUseTmp.put(owr.getReagentId(), tmp); + }else{ + warehouseReserveUseTmp.get(owr.getReagentId()).put(owr.getWarehouseId(), owr); + } + //变换条码 + btCodeChange(); + } + + /** + * 取消一个仓库领取 + */ + public void remove2(OpeWarehouseReserve owr) { + if (warehouseReserveUseTmp.get(owr.getReagentId()).size() > 0) { + warehouseReserveUseTmp.get(owr.getReagentId()).remove(owr.getWarehouseId()); + //变换条码 + btCodeChange(); + } + } + + /** + * 获取暂存表单 + */ + public List<OpeWarehouseReserve> getDataTmp() { + + List<OpeWarehouseReserve> list = new ArrayList<>(); + + + Map<Long, OpeWarehouseReserve> dataMap = warehouseReserveUseTmp. + get(opeWarehouseReserve.getReagentId()); + if (dataMap ==null) { + return list; + } + Set<Map.Entry<Long, OpeWarehouseReserve>> entries = dataMap.entrySet(); + for (Map.Entry<Long, OpeWarehouseReserve> e : entries) { + list.add(e.getValue()); + } + return list; + } + /** + * @Description: 补贴结束条码的生成 + */ + public void btCodeChange(){ + //1.获取补贴试剂总数 + List<OpeWarehouseReserve> dataTmp = getDataTmp(); + int distance = dataTmp.stream().mapToInt(item -> item.getUseNum() == null ? 0 : item.getUseNum()).sum(); + + //1.如果开始条码为空,距离为0 + if (StringUtils.isBlank(startReagentCodeForPerson) + || distance < 1) { + return; + } + //2如果开始条码不为空 + //2.0如果包含字母不等于24位的直接不管 + if (startReagentCodeForPerson.matches(".*\\D+.*")) { + if (startReagentCodeForPerson.length() ==24 && + startReagentCodeForPerson.matches(".*([A-F]|\\d)+.*") && + startReagentCodeForPerson.substring(startReagentCodeForPerson.length() - 5).matches("\\d{5}")){ + //2.2长度为24位编码的 + BigInteger arrNum = BigInteger.valueOf(distance); + //后5位随机码 + String randomCode = startReagentCodeForPerson.substring(startReagentCodeForPerson.length() - 5); + String reagentCodePrefix = startReagentCodeForPerson.substring(0,startReagentCodeForPerson.length() - 5); + + BigInteger startReagentCodeSuffix = new BigInteger(randomCode); + BigInteger endReagentCodeSuffix = startReagentCodeSuffix.add(arrNum).subtract((new BigInteger("1"))); + String reagentCodeSuffix= autoGenericCode(randomCode, endReagentCodeSuffix); + endReagentCodeForPerson = (reagentCodePrefix + reagentCodeSuffix); + }else{ + endReagentCodeForPerson = (""); + } + }else{ + + BigInteger startReagentCode = new BigInteger(startReagentCodeForPerson); + //2.1长度不为24位编码 + //数据1 + BigInteger arrNum = BigInteger.valueOf(distance); + BigInteger code1 = startReagentCode.add(arrNum).subtract(BigInteger.ONE); + endReagentCodeForPerson = (autoGenericCode(startReagentCodeForPerson, code1)); + } + //把数据放入applyReserve + for (OpeApplyReserve oar : selectedTmpOrderList) { + if (oar.getReagent().getId().equals(this.opeWarehouseReserve.getReagentId())) { + oar.setEndReagentCode2(endReagentCodeForPerson); + oar.setStartReagentCode2(startReagentCodeForPerson); + } + } + } + + + public void onYesBtnClickForPerson() { try { @@ -496,8 +919,11 @@ } } // 将当前选择条形码保存到库存中 - for (OpeApplyReserve opeApplyReserve : this.selectedListForPerson) { + for (OpeApplyReserve opeApplyReserve : this.selectedTmpOrderList) { if (opeApplyReserve.getId().equals(this.selectedOpeApplyReserve.getId())) { + //list OpeWarehouseReserve + //getReserve 总数小于 useNum 报错 + OpeWarehouseReserve wa=opeWarehouseReserveService.getOpeWarehouseReserve(opeApplyReserve.getReagent().getId(),opeApplyReserve.getArticleNumber()); if(this.useNum > wa.getReserve()) { @@ -507,12 +933,18 @@ opeApplyReserve.setSelectNum(useNum); if(this.reagentCodeSelectedList != null) { - opeApplyReserve.setReagentCode(this.reagentCodeSelectedList); + opeApplyReserve.setReagentCodes(this.reagentCodeSelectedList); } opeApplyReserve.setFlag(1); + //删除前面部分的补贴条码领用显示 + warehouseReserveUseTmp.remove(opeApplyReserve.getReagent().getId()); + endReagentCodeForPerson = null; + startReagentCodeForPerson = null; break; } } + + //FacesUtils.info("选择条形码个数为" + this.reagentCodeSelectedList.size()); RequestContext.getCurrentInstance().execute("PF('reagentCodeDialogForPerson').hide()"); @@ -524,94 +956,43 @@ public void onYesBtnClickForPerson2() { try { - //if (this.reagentCodeSelectedList == null || this.reagentCodeSelectedList.size() == 0) { - //FacesUtils.warn("请选择条形码。"); - //return; - //} - if(this.useNum == null || this.useNum <= 0) - { - FacesUtils.warn("请输入大于0的领用数量!"); + //1.获取补贴试剂总数,判断数量 + List<OpeWarehouseReserve> dataTmp = getDataTmp(); + //distance为领用总数 + int distance = dataTmp.stream().mapToInt(item -> item.getUseNum() == null ? 0 : item.getUseNum()).sum(); + if (distance < 1) { + FacesUtils.warn("请领取试剂"); return; } - System.out.println("====onYesBtnClick======"); - BigDecimal startReagentCode2 = new BigDecimal(startReagentCodeForPerson); - BigDecimal endReagentCode2 = new BigDecimal(endReagentCodeForPerson); - // 检查条形码结束要大于条形码开始 - if (endReagentCode2.compareTo(startReagentCode2) == -1) { - FacesUtils.warn("条形码开始必须小于条形码结束。"); + //2.申购单已经领用的数量+当前准备领用的数量不能超过 单子的申请数量 + if (selectedOpeApplyReserve.getNum() < selectedOpeApplyReserve.getUsed() + distance) { + FacesUtils.warn("当前领用数量超过订单的申请数量"); return; } - // 检查条形码和到货数量是否匹配 - if (endReagentCode2.subtract(startReagentCode2).intValue() != (useNum - 1)) { - FacesUtils.warn("条形码数量和领用数量不一致。"); - return; - } - - BigInteger startReagentCode3=new BigInteger(startReagentCodeForPerson); - BigInteger endReagentCode3=new BigInteger(endReagentCodeForPerson); - int len = startReagentCodeForPerson.length() - String.valueOf(startReagentCode3).length(); - String temp = ""; - for (int i = 0; i < len; i++) { - temp += "0"; - } - String str=""; - for (BigInteger i = startReagentCode3; i.compareTo(endReagentCode3) < 1; i = i.add(BigInteger.ONE)) { - String code = temp + String.valueOf(i); - OpeReagentStatus status=this.opeReagentStatusService.getOpeReagentStatusByReagentCode(code); - if(status==null){ - - }else{ - if(status.getStatus()==ArrivalStatus.WAREHOUSE){ - - }else{ - str+=code+","; - } - } - } - if(str!=null && !str.equals("")){ - FacesUtils.info("条形码"+str.substring(0,str.length()-1)+"已被领用"); - return; - } - + List<String> codeList = opeReagentStatusService + .checkReagentCode(startReagentCodeForPerson, endReagentCodeForPerson, distance); // 将当前选择条形码保存到库存中 - List<String> codeList=new ArrayList<>(); - for (OpeApplyReserve opeApplyReserve : this.selectedListForPerson) { + for (OpeApplyReserve opeApplyReserve : this.selectedTmpOrderList) { if (opeApplyReserve.getId().equals(this.selectedOpeApplyReserve.getId())) { - OpeWarehouseReserve wa=opeWarehouseReserveService.getOpeWarehouseReserve(opeApplyReserve.getReagent().getId(),opeApplyReserve.getArticleNumber()); - if(wa==null){ - wa=new OpeWarehouseReserve(); - wa.setReserve(0); - } - if(this.useNum > wa.getReserve()) - { - FacesUtils.warn("库存不够,请确认或申购!"); - return; - } - opeApplyReserve.setSelectNum(useNum); - opeApplyReserve.setStartReagentCode(startReagentCode2); - opeApplyReserve.setEndReagentCode(endReagentCode2); - opeApplyReserve.setStartReagentCode2(temp+startReagentCode2.toString()); - opeApplyReserve.setEndReagentCode2(temp+endReagentCode2.toString()); - for (BigInteger i = new BigInteger(startReagentCodeForPerson); i.compareTo(new BigInteger(endReagentCodeForPerson)) < 1; i = i.add(BigInteger.ONE)) { - codeList.add(i.toString()); - } - /*for(int i=Integer.parseInt(startReagentCodeForPerson);i<=Integer.parseInt(endReagentCodeForPerson);i++){ - codeList.add(Integer.toString(i)); - }*/ - if(codeList != null) - { - opeApplyReserve.setReagentCode(codeList); - } + opeApplyReserve.setSelectNum(distance); + opeApplyReserve.setStartReagentCode2(this.startReagentCodeForPerson); + opeApplyReserve.setEndReagentCode2(this.endReagentCodeForPerson); + opeApplyReserve.setReagentCodes(codeList); + opeApplyReserve.setCacheUpdateList(getDataTmp()); opeApplyReserve.setFlag(0); + reagentCodeSelectedList = null; break; } } //FacesUtils.info("选择条形码个数为" + codeList.size()); RequestContext.getCurrentInstance().execute("PF('reagentCodeDialogForPerson').hide()"); + } catch (BusinessException e) { + logger.error("操作失败。", e); + FacesUtils.warn(e.getMessage()); } catch (Exception e) { logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); @@ -619,72 +1000,25 @@ } public void onYesBtnClick2(){ - try{ - if(this.useNum == null || this.useNum <= 0) - { + try { + if (this.useNum == null || this.useNum <= 0) { FacesUtils.warn("请输入大于0的领用数量!"); return; } - BigDecimal startReagentCode2 = new BigDecimal(startReagentCode); - BigDecimal endReagentCode2 = new BigDecimal(endReagentCode); - // 检查条形码结束要大于条形码开始 - if (endReagentCode2.compareTo(startReagentCode2) == -1) { - FacesUtils.warn("条形码开始必须小于条形码结束。"); - return; - } - // 检查条形码和到货数量是否匹配 - if (endReagentCode2.subtract(startReagentCode2).intValue() != (useNum - 1)) { - FacesUtils.warn("条形码数量和领用数量不一致。"); - return; - } - BigInteger startReagentCode3=new BigInteger(startReagentCode); - BigInteger endReagentCode3=new BigInteger(endReagentCode); - int len = startReagentCode.length() - String.valueOf(startReagentCode3).length(); + List<String> codeList = opeReagentStatusService + .checkReagentCode(startReagentCode, endReagentCode, useNum); - String temp = ""; - for (int i = 0; i < len; i++) { - temp += "0"; - } - String str=""; - for (BigInteger i = startReagentCode3; i.compareTo(endReagentCode3) < 1; i = i.add(BigInteger.ONE)) { - String code = temp + String.valueOf(i); - OpeReagentStatus status=this.opeReagentStatusService.getOpeReagentStatusByReagentCode(code); - if(status==null){ - - }else{ - if(status.getStatus()==ArrivalStatus.WAREHOUSE){ - - }else{ - str+=code+","; - } - } - } - if(str!=null && !str.equals("")){ - FacesUtils.info("条形码"+str.substring(0,str.length()-1)+"已被领用"); - return; - } - - List<String> codeList=new ArrayList<>(); - for (OpeWarehouseReserve opeWarehouseReserve : this.selectedList) { + for (OpeWarehouseReserve opeWarehouseReserve : this.selectedTmpList) { if (opeWarehouseReserve.getId().equals(this.selectedOpeWarehouseReserve.getId())) { - if(this.useNum > opeWarehouseReserve.getReserve()) - { + if (this.useNum > opeWarehouseReserve.getReserve()) { FacesUtils.warn("库存不够,请确认或申购!"); return; } opeWarehouseReserve.setSelectNum(useNum); - opeWarehouseReserve.setStartReagentCode(startReagentCode2); - opeWarehouseReserve.setEndReagentCode(endReagentCode2); - opeWarehouseReserve.setStartReagentCode2(temp+startReagentCode2.toString()); - opeWarehouseReserve.setEndReagentCode2(temp+endReagentCode2.toString()); - for (BigInteger i = new BigInteger(startReagentCode); i.compareTo(new BigInteger(endReagentCode)) < 1; i = i.add(BigInteger.ONE)) { - codeList.add(i.toString()); - } - /*for(int i=Integer.parseInt(startReagentCode);i<=Integer.parseInt(endReagentCode);i++){ - codeList.add(Integer.toString(i)); - }*/ - if(codeList != null) - { + opeWarehouseReserve.setStartReagentCode2(startReagentCode); + opeWarehouseReserve.setEndReagentCode2(endReagentCode); + + if (codeList != null) { opeWarehouseReserve.setReagentCodes(codeList); } opeWarehouseReserve.setFlag(0); @@ -694,10 +1028,13 @@ } //FacesUtils.info("选择条形码个数为" + codeList.size()); RequestContext.getCurrentInstance().execute("PF('reagentCodeDialog').hide()"); - } catch (Exception e) { - logger.error("操作失败。", e); - FacesUtils.warn("操作失败。"); - } + } catch (BusinessException e) { + logger.error(e.getMessage()); + FacesUtils.warn(e.getMessage()); + } catch (Exception e) { + logger.error("操作失败。", e); + FacesUtils.warn("操作失败。"); + } } public void onYesBtnClick() { @@ -713,7 +1050,7 @@ System.out.println("====onYesBtnClick======"); // 将当前选择条形码保存到库存中 - for (OpeWarehouseReserve opeWarehouseReserve : this.selectedList) { + for (OpeWarehouseReserve opeWarehouseReserve : this.selectedTmpList) { if (opeWarehouseReserve.getId().equals(this.selectedOpeWarehouseReserve.getId())) { if(this.useNum > opeWarehouseReserve.getReserve()) { @@ -737,11 +1074,28 @@ } } + public void onTabChange(TabChangeEvent event) { + if ("firstTab".equals(event.getTab().getId())) { + tabValue = 0; + }else{ + tabValue = 1; + } + } + + public void onCancelBtnClick() { + this.selectedTmpOrderList = null; + this.selectedTmpList = null; + this.selectedInputStorageTmpOrderList = null; + this.endReagentCodeForPerson = null; + this.startReagentCodeForPerson = null; + this.laboratoryId = null; + this.useNum = null; this.menuController.backToPage(); } public void onClose(){ + this.selectedTmpOrderList = null; this.selectedTmpList = null; this.menuController.backToPage(); } @@ -754,7 +1108,7 @@ public void onSaveBtnClickForPerson(){ try { - if (this.selectedListForPerson == null || this.selectedListForPerson.size() == 0) { + if (this.selectedTmpOrderList == null || this.selectedTmpOrderList.size() == 0) { FacesUtils.warn("请选择申领试剂。"); return; } @@ -763,45 +1117,49 @@ FacesUtils.warn("请选择申领人。"); return; } + List<OpeApplyReserve> list=new ArrayList<>(); List<OpeApplyReserve> list2=new ArrayList<>(); //int size = 0; - for(OpeApplyReserve app:this.selectedListForPerson){ + for(OpeApplyReserve app:this.selectedTmpOrderList){ + if (app.getFlag() == null) { + FacesUtils.warn("请选择。"); + return; + } if(app.getFlag()==1){ list.add(app); }else { list2.add(app); } - } + + //1.1判断库存 + checkReserve(list); + checkReserve(list2); + //1.2判断提交的条码是否重复(只有补贴条码需要判断) + checkReagentCode(list2); + String receiptNum = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); + //库中领取 if(list.size()>0&&list!=null){ + //扣库存 对象中的reagentCode存的是id + for(OpeApplyReserve app:list){ - List<String> reagentCode=app.getReagentCode(); - if(reagentCode!=null && reagentCode.size()>0){ - for(String opeReagentStatusId:reagentCode){ - OpeReagentStatus opeReagentStatus=this.opeReagentStatusService.getOpeReagentStatus(opeReagentStatusId); + List<String> reagentCodes=app.getReagentCodes(); + if(reagentCodes!=null && reagentCodes.size()>0){ + for(String reagentCode:reagentCodes){ + OpeReagentStatus opeReagentStatus=this.opeReagentStatusService.getOpeReagentStatusByCode(reagentCode); if (!this.opeReagentStatusService.isAllowWarehouseUse(opeReagentStatus)) { FacesUtils.warn("只能申领在仓库的试剂。"); return; - }else { - opeReagentStatus.setHouseId(laboratoryId); - opeReagentStatus.setContainerId(laboratoryContainerId); - this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus); - OpeLaboratoryReserve lr=new OpeLaboratoryReserve(); - lr.setReagentId(app.getReagent().getId()); - lr.setHouseId(laboratoryId); - lr.setContainerId(laboratoryContainerId); - lr.setReserve(app.getSelectNum()); - lr.setUserId(userId); - lr.setValidFlag(ValidFlag.VALID); - this.opeLaboratoryReserveService.insert(lr); } } } } - this.opeWarehouseReserveService.claimForPerson(list, userId,projectNum); + this.opeWarehouseReserveService.claimForPerson(list, userId,projectId,laboratoryId,laboratoryContainerId,receiptNum); } + + //补贴条码 if(list2.size()>0&&list!=null){ List<OpeApply> opeList=new ArrayList<>(); for(int i=0;i<list2.size();i++){ @@ -812,6 +1170,8 @@ opeApply.setReagent(list2.get(i).getReagent()); opeApply.setStartReagentCode(list2.get(i).getStartReagentCode2()); opeApply.setEndReagentCode(list2.get(i).getEndReagentCode2()); + opeApply.setReagentCodeList(list2.get(i).getReagentCodes()); + opeApply.setId(list2.get(i).getId()); opeList.add(opeApply); OpeLaboratoryReserve lr=new OpeLaboratoryReserve(); lr.setReagentId(list2.get(i).getReagent().getId()); @@ -820,23 +1180,195 @@ lr.setReserve(list2.get(i).getSelectNum()); lr.setUserId(userId); lr.setValidFlag(ValidFlag.VALID); - this.opeLaboratoryReserveService.insert(lr); + this.opeLaboratoryReserveDao.insertOpeLaboratoryReserve(lr); } - this.opeWarehouseReserveService.reagentDStore2(opeList,userId); + this.opeWarehouseReserveService.reagentDStore3(opeList,userId); + + //扣库存 + opeWarehouseReserveService.btWarehouseReserveReduce(list2); } + for(int i=0;i<list2.size();i++){ OpeWarehouseReserve opeWarehouseReserve=new OpeWarehouseReserve(); - OpeApplyReserve re=new OpeApplyReserve(); re.setUsed(list2.get(i).getSelectNum()+list2.get(i).getUsed()); re.setId(list2.get(i).getId()); opeApplyDao.updateOpeApplyUsed(re);//修改已领数量 } + + //更新申购单状态 + for (OpeApplyReserve oar : selectedTmpOrderList) { + //确认 + if (oar.getStatus() == ApplyStatus.SUPPLIER_CONFIRM) { + //领用完 就改成已经入库 + if (oar.getNum() == oar.getUsed() + oar.getSelectNum()) { + opeApplyService.updateOpeApplyInfo(ApplyStatus.STORAGE,null,null, oar.getId(),null); + //2.2更改订单状态 + OpeOrder oo = opeOrderService.getOrder(oar.getId()); + List<OpeApply> oas = opeOrderService.getOpeApplyListByOrder(oo.getId()); + assert oas.size() > 0; + //子订单是否全部入库,是则父单为已入库,否则未完成 + boolean flag = oas.stream().allMatch(oa -> oa.getStatus() == ApplyStatus.STORAGE); + oo.setArrivalTime(arrivalTime); + if (flag){ + oo.setStatus(ApplyStatus.STORAGE); + opeOrderService.updateOpeOrderStatus(oo); + }else{ + oo.setStatus(ApplyStatus.UNCOMPLETED); + opeOrderService.updateOpeOrder(oo); + } + } + } + } + FacesUtils.info("申领成功。"); - this.menuController.goToPage(Constants.PAGE_WAREHOUSE_STOCK_MNG, Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW); - } catch (Exception e) { + //领用单生成 + printTable = null; + printTable = new Hashtable(); + int sum = 0; + List<ApplyListDto> applyList = new ArrayList<>(); + SysUser applyPersonInfo = sysUserService.getUser(userId); + if (applyPersonInfo == null) { + FacesUtils.warn("申领人不存在或者申领人部门被删除。"); + return; + } + printTable.put("head", instituteName); + printTable.put("title", "领用单"); + printTable.put("applyPerson", applyPersonInfo.getName()); + printTable.put("department", applyPersonInfo.getDepartmentName()); + printTable.put("date", Utils.now("yyyy-MM-dd")); + + printTable.put("receiptNumber", receiptNum); + if (StringUtils.isNotBlank(applyPersonInfo.getPhone())){ + printTable.put("phone", applyPersonInfo.getPhone()); + } + if (applyPersonInfo.getProjectId()!=null){ + SysProject sysProject=this.sysProjectDao.getSysProject(applyPersonInfo.getProjectId()); + if(sysProject!=null){ + printTable.put("project", sysProject.getProjectName()); + } + } + SysLaboratory lab = sysLaboratoryService.getSysLaboratory(laboratoryId); + printTable.put("lab", lab.getName()); + this.receiptNumber = receiptNum; + for (OpeApplyReserve oar : selectedTmpOrderList) { + ApplyListDto lis = new ApplyListDto(); + Map reagentDetail = sysReagentService.getReagentDetail(oar.getReagent().getId()); + lis.setNum(String.valueOf(oar.getSelectNum())); //数量 + lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit"))); + lis.setControlProducts((String) reagentDetail.get("controlProducts")); + lis.setProductName((String) reagentDetail.get("name")); + lis.setReagentFormat((String) reagentDetail.get("reagentFormat")); + lis.setProductCode((String)reagentDetail.get("productCode")); + lis.setMemo((String)reagentDetail.get("memo")); + applyList.add(lis); + sum += oar.getSelectNum(); + } + applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), "")); + printTable.put("applyList", applyList); + //返回 +// onCancelBtnClick(); + RequestContext.getCurrentInstance().execute("PF('printDialog').show()"); + } catch (BusinessException e){ + logger.info(e.getMessage()); + FacesUtils.warn(e.getMessage()); + } + catch (Exception e) { logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); + } + } + + public void receiptNumberChange( ){ + } + + /** + * 点击打印 关联所有流向和领用单号e + */ + public void associatedFlowReceiptNumber() { + try { + opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber, note); + //弹出打印窗口 + RequestContext.getCurrentInstance().execute("document.getElementById('indirectPrint').click()"); + } catch (Exception e) { + logger.info(e.getMessage()); + } + + } + + /** + * 点击打印 关联所有流向和领用单号e + */ + + + public void associatedFlowReceiptNumber2() { + try { + opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber,note); + //弹出打印窗口 + RequestContext.getCurrentInstance().execute("document.getElementById('indirectPrint').click()"); + } catch (Exception e) { + logger.info(e.getMessage()); + } + + } + + + public void closeDialog() { + try { + opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber,note); + onCancelBtnClick(); + } catch (Exception e) { + logger.info(e.getMessage()); + } + + } + + public void closeDialog2() { + try { + opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber,note); + onCancelBtnClick(); + } catch (Exception e) { + logger.info(e.getMessage()); + } + + } + + + private void checkReserve(List<OpeApplyReserve> list) { + if (list == null || list.size() < 1) { + return; + } + for (OpeApplyReserve oar : list) { + + boolean flag = (oar.getFlag() != 1); + List<OpeWarehouseReserve> owr = opeWarehouseReserveService + .selectWarehouseByReagentIdAndArticleNumber(oar.getReagent().getId(), oar.getArticleNumber(),flag); + int sum = owr.stream().mapToInt(item -> item.getReserve() == null ? 0 : item.getReserve()).sum(); + //剩余库存不足领取数量 + if (sum < oar.getSelectNum()) { + throw new BusinessException(ExceptionEnumCode.APPLY_NUM_OVER, "库存已经不够"); + } + } + } + + private void checkReagentCode(List<OpeApplyReserve> list){ + if (list == null || list.size() < 1) { + return; + } + Set<String> checkSet = new HashSet<>(); + for (OpeApplyReserve oar : list) { + List<String> codeList = opeReagentStatusService + .checkReagentCode(oar.getStartReagentCode2(), oar.getEndReagentCode2(), oar.getSelectNum()); + oar.setReagentCodes(codeList); + if (codeList != null && codeList.size() > 0) { + for (String code:codeList) { + if (!checkSet.contains(code)) { + checkSet.add(code); + }else{ + throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, "当前订单条码重复,"+code); + } + } + } } } @@ -968,9 +1500,11 @@ } } + + public void onSaveBtnClick() { try { - if (this.selectedList == null || this.selectedList.size() == 0) { + if (this.selectedTmpList == null || this.selectedTmpList.size() == 0) { FacesUtils.warn("请选择申领试剂。"); return; } @@ -983,54 +1517,45 @@ printTable = null; printTable = new Hashtable(); List<ApplyListDto> applyList = new ArrayList<>(); - Map applyPersonInfo = sysUserService.getUser(userId); + SysUser applyPersonInfo = sysUserService.getUser(userId); + if (applyPersonInfo == null) { + FacesUtils.warn("申领人不存在或者申领人部门被删除。"); + return; + } printTable.put("head", instituteName); printTable.put("title", "领用单"); - printTable.put("applyPerson", applyPersonInfo.get("name")); - printTable.put("department", applyPersonInfo.get("meta_value")); + printTable.put("applyPerson", applyPersonInfo.getName()); + printTable.put("department", applyPersonInfo.getDepartmentName()); printTable.put("date", Utils.now("yyyy-MM-dd")); - printTable.put("phone", applyPersonInfo.get("phone")); + if (StringUtils.isNotBlank(applyPersonInfo.getPhone())){ + printTable.put("phone", applyPersonInfo.getPhone()); + } + if (applyPersonInfo.getProjectId()!=null){ + SysProject sysProject=this.sysProjectDao.getSysProject(applyPersonInfo.getProjectId()); + if(sysProject!=null){ + printTable.put("project", sysProject.getProjectName()); + } + } + SysLaboratory lab = sysLaboratoryService.getSysLaboratorySimpleInfo(laboratoryId); + String receiptNum = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); + printTable.put("receiptNumber", receiptNum); + printTable.put("lab", lab.getName()); + this.receiptNumber = receiptNum; //int size = 0; int sum = 0; List<OpeWarehouseReserve> list=new ArrayList<>(); - List<OpeWarehouseReserve> list2=new ArrayList<>(); - for (OpeWarehouseReserve selectWarehouseReserve : this.selectedList) { - if(selectWarehouseReserve.getFlag()==1){ - list.add(selectWarehouseReserve); - }else{ - list2.add(selectWarehouseReserve); - } + for (OpeWarehouseReserve selectWarehouseReserve : this.selectedTmpList) { + list.add(selectWarehouseReserve); } + if(list.size()>0&&list!=null){ for (OpeWarehouseReserve selectWarehouseReserve : list) { - List<String> reagentCodes = selectWarehouseReserve.getReagentCodes(); - if (reagentCodes != null && reagentCodes.size() > 0) - for (String opeReagentStatusId : reagentCodes) { - OpeReagentStatus opeReagentStatus = this.opeReagentStatusService - .getOpeReagentStatus(opeReagentStatusId); - if (!this.opeReagentStatusService.isAllowWarehouseUse(opeReagentStatus)) { - FacesUtils.warn("只能申领在仓库的试剂。"); - return; - }else { - opeReagentStatus.setHouseId(laboratoryId); - opeReagentStatus.setContainerId(laboratoryContainerId); - this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);//更新试剂状态表 - OpeLaboratoryReserve lr=new OpeLaboratoryReserve(); - lr.setReagentId(selectWarehouseReserve.getReagentId()); - lr.setHouseId(laboratoryId); - lr.setContainerId(laboratoryContainerId); - lr.setReserve(selectWarehouseReserve.getSelectNum()); - lr.setUserId(userId); - lr.setValidFlag(ValidFlag.VALID); - this.opeLaboratoryReserveService.insert(lr); - } - //else { - //size++; - //} - } - ApplyListDto lis = new ApplyListDto(); Map reagentDetail = sysReagentService.getReagentDetail(selectWarehouseReserve.getReagentId()); + if (reagentDetail == null) { + throw new Exception("试剂有误,请联系管理员"); + } + ApplyListDto lis = new ApplyListDto(); lis.setNum(String.valueOf(selectWarehouseReserve.getSelectNum())); //数量 lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit"))); lis.setControlProducts((String) reagentDetail.get("controlProducts")); @@ -1042,58 +1567,10 @@ sum += selectWarehouseReserve.getSelectNum(); } - //if (size == 0) { - //FacesUtils.warn("未选择一个条形码。"); - //return; - //} - this.opeWarehouseReserveService.claim(list, userId,projectNum); + this.opeWarehouseReserveService.claim(list, userId,projectId,laboratoryId,laboratoryContainerId,receiptNum); } - if(list2.size()>0&&list2!=null){ - List<OpeApply> opeList=new ArrayList<>(); - //this.opeApplyService.getOpeApplyList(null,null,null,null,null) - for(int i=0;i<list2.size();i++){ - OpeApply opeApply=new OpeApply(); - opeApply.setArticleNumber(list2.get(i).getArticleNumber()); - opeApply.setHouseId(laboratoryId); - opeApply.setContainerId(laboratoryContainerId); - opeApply.setReagent(this.sysReagentService.getSysReagent(list2.get(i).getReagentId())); - opeApply.setStartReagentCode(list2.get(i).getStartReagentCode2()); - opeApply.setEndReagentCode(list2.get(i).getEndReagentCode2()); - opeList.add(opeApply); - OpeLaboratoryReserve lr=new OpeLaboratoryReserve(); - lr.setReagentId(list2.get(i).getReagentId()); - lr.setHouseId(laboratoryId); - lr.setContainerId(laboratoryContainerId); - lr.setReserve(list2.get(i).getSelectNum()); - lr.setUserId(userId); - lr.setValidFlag(ValidFlag.VALID); - this.opeLaboratoryReserveService.insert(lr); - //opeList.add(this.opeApplyService.getOpeApply(list2.get(i).getId())); - ApplyListDto lis = new ApplyListDto(); - Map reagentDetail = sysReagentService.getReagentDetail(list2.get(i).getReagentId()); - - lis.setNum(String.valueOf(list2.get(i).getSelectNum())); //数量 - lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit"))); - lis.setControlProducts((String) reagentDetail.get("controlProducts")); - lis.setProductName((String) reagentDetail.get("name")); - lis.setReagentFormat((String) reagentDetail.get("reagentFormat")); - lis.setProductCode((String)reagentDetail.get("productCode")); - lis.setMemo((String)reagentDetail.get("memo")); - applyList.add(lis); - - sum += list2.get(i).getSelectNum(); - } - this.opeWarehouseReserveService.reagentDStore2(opeList,userId); - for(int i=0;i<list2.size();i++){ - list2.get(i).setReserve(list2.get(i).getReserve()-list2.get(i).getSelectNum()); - opeWarehouseReserveDao.updateOpeWarehouseReserve(list2.get(i)); - } - //opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve()-opeWarehouseReserve.getSelectNum()); - //opeWarehouseReserveDao.updateOpeWarehouseReserve(opeWarehouseReserve); - //this.opeWarehouseReserveService.claim(list2, userId,projectNum); - } //领用票最后一行 applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), "")); @@ -1102,10 +1579,71 @@ FacesUtils.info("申领成功。"); RequestContext.getCurrentInstance().execute("PF('printDialog').show()"); // this.menuController.goToPage(Constants.PAGE_WAREHOUSE_STOCK_MNG, Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW); + } catch (BusinessException e) { + logger.error(e.getMessage(), e); + FacesUtils.warn(e.getMessage()); + } catch (Exception e) { logger.error(e.getMessage(), e); FacesUtils.warn("操作失败。"); } + } + /** + * @Description: 订单入库保存 + */ + public void onSaveInputWarehouseClick(){ + try{ + //0.0输入校验 + for (OpeApplyReserve opeApplyReserve : opeApplyList) { + if (StringUtils.isBlank(opeApplyReserve.getArticleNumber())) { + throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, opeApplyReserve.getReagent().getName() + ":批号不能为空"); + } + SysReagent sysReagent = sysReagentService.getSysReagent(opeApplyReserve.getReagent().getId()); + if (sysReagent == null){ + throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, opeApplyReserve.getReagent().getName() + ":被删除"); + } + } + + //用来检验提交表单得试剂条码是否重复 + Map<String,Boolean> checkTable= new HashMap<>(); + if (opeApplyList != null && opeApplyList.size() > 0) { + for (OpeApplyReserve opeApplyReserve:opeApplyList) { + //0.1获取该申购单的订单 + OpeOrder oo = opeOrderService.getOrder(opeApplyReserve.getId()); + if (oo == null) { + throw new BusinessException(ExceptionEnumCode.ORDER_ERROR,"订单不存在"); + } + //0.2检查条码->得到试剂条码列表 + List<String> codeList = opeReagentStatusService + .checkReagentCode(opeApplyReserve.getStartReagentCode2(), opeApplyReserve.getEndReagentCode2(), opeApplyReserve.getArrivalNum()); + if (codeList != null && codeList.size() > 0) { + for (String code:codeList) { + if (checkTable.get(code) == null) { + checkTable.put(code, true); + }else{ + throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, "当前订单条码重复,"+code); + } + } + } + } + + + checkTable = null; + opeApplyService.orderInputWarehouse(opeApplyList,consigneeId,arrivalTime); + } + + FacesUtils.info("入库完成"); + //返回 + this.onCancelBtnClick(); + }catch (BusinessException e){ + e.printStackTrace(); + FacesUtils.warn(e.getMessage()); + + } catch (Exception e) { + e.printStackTrace(); + FacesUtils.warn("系统异常,操作失败"); + } + } @SuppressWarnings("serial") @@ -1118,31 +1656,34 @@ Map<String, Object> filters) { List<OpeWarehouseReserve> list = null; try { - int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId); + int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentName, supplierId,productSn,warehouseName); this.setRowCount(count); if (count > 0) { - list = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, first, - pageSize); + list = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentName, supplierId, first, + pageSize,productSn,warehouseName); } } catch (Exception e) { logger.error(e); } + selectedList = null; + selectedTmpList=null; return list; } @Override public OpeWarehouseReserve getRowData(String rowKey) { - Iterator<OpeWarehouseReserve> iterator = this.iterator(); - if (iterator != null) { - OpeWarehouseReserve su = null; - while (iterator.hasNext()) { - su = iterator.next(); - if (rowKey.equals(su.getId())) { - return su; - } - } - } - return null; +// Iterator<OpeWarehouseReserve> iterator = this.iterator(); +// if (iterator != null) { +// OpeWarehouseReserve su = null; +// while (iterator.hasNext()) { +// su = iterator.next(); +// if (rowKey.equals(su.getId())) { +// return su; +// } +// } +// } + Long id=Long.valueOf(rowKey); + return opeWarehouseReserveService.getRowData(id); } }; } @@ -1159,8 +1700,8 @@ Map<String, Object> filters) { List<OpeApplyReserve> list = null; SysUser loginUser = getUser(); - String id=""; - if(loginUser.getSeeFlag()==SeeFlag.MANAGE){ + Long id=null; + if(loginUser.getSeeFlag()==SeeFlag.MANAGE||loginUser.getSeeFlag() ==SeeFlag.LEADING){ }else { //userName=loginUser.getName(); @@ -1168,32 +1709,34 @@ } try { - - int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id,reagentId, userName); + int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id, null, userName, productSn, applyCode, status, isAllApply,isExpired); this.setRowCount(count); if (count > 0) { - list = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, first, - pageSize); + list = opeApplyService.getOpeApplyReserveListByNameFor(id, null, userName, first, + pageSize, productSn, applyCode, status, isAllApply,isExpired); } } catch (Exception e) { logger.error(e); } + selectedListForPerson = null; + selectedTmpOrderList=null; return list; } @Override public OpeApplyReserve getRowData(String rowKey) { - Iterator<OpeApplyReserve> iterator = this.iterator(); - if (iterator != null) { - OpeApplyReserve su = null; - while (iterator.hasNext()) { - su = iterator.next(); - if (rowKey.equals(su.getId())) { - return su; - } - } - } - return null; +// Iterator<OpeApplyReserve> iterator = this.iterator(); +// if (iterator != null) { +// OpeApplyReserve su = null; +// while (iterator.hasNext()) { +// su = iterator.next(); +// if (rowKey.equals(su.getId())) { +// return su; +// } +// } +// } + Long id=Long.valueOf(rowKey); + return opeApplyService.getOpeApplyReserveListByNameForRowData(id); } }; } @@ -1242,6 +1785,132 @@ } return reagentStatusDataModel; } + + public void onExportFileBtnClickOrder(){ + ServletOutputStream out = null; + InputStream is = null; + try { + FacesContext ctx = FacesContext.getCurrentInstance(); + ctx.responseComplete(); + String contentType = "application/x-download"; + HttpServletResponse response = (HttpServletResponse) ctx + .getExternalContext().getResponse(); + response.setContentType(contentType); + StringBuffer contentDisposition = new StringBuffer(); + contentDisposition.append("attachment;"); + contentDisposition.append("filename=\""); + contentDisposition.append("订单领取导出.xls"); + contentDisposition.append("\""); + response.setHeader( + "Content-Disposition", + new String(contentDisposition.toString().getBytes( + System.getProperty("file.encoding")), "ISO8859-1")); + out = response.getOutputStream(); + Map<String, Integer> tempMap = new HashMap<String,Integer>(); + List<OpeApplyReserve> realDataList = new ArrayList<>(); + //map=null; + SysUser loginUser = getUser(); + Long id=null; + if(loginUser.getSeeFlag()==SeeFlag.MANAGE||loginUser.getSeeFlag() == SeeFlag.LEADING){ + + }else { + //userName=loginUser.getName(); + id=loginUser.getId(); + } + if(selectedListForPerson!=null&&selectedListForPerson.size()>0){ + realDataList=selectedListForPerson; + }else { + realDataList = opeApplyService.getOpeApplyReserveListByNameFor(id,null, userName, null, + null,productSn,applyCode,status,isAllApply,isExpired); + } + List<String> headerList = new ArrayList<>(); + headerList.add("申购编号"); + headerList.add("产品编号"); + headerList.add("试剂名称"); + headerList.add("管制品"); + headerList.add("规格型号"); + headerList.add("包装"); + headerList.add("价格"); + headerList.add("CAS"); + headerList.add("危险性质"); + headerList.add("厂家"); + headerList.add("申请数量"); + headerList.add("已领用数量"); + headerList.add("申领人"); + headerList.add("订单状态"); + headerList.add("课题组"); + headerList.add("课题组负责人"); + headerList.add("到货时间"); + HSSFWorkbook hssfWorkbook =exportExcelOrder(headerList, realDataList); + hssfWorkbook.write(out); + out.flush(); + ctx.responseComplete(); + + }catch (Exception e) { + if(is!=null){ + try { + is.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + if(out!=null){ + try { + out.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + }finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + public HSSFWorkbook exportExcelOrder(List<String> headerList, List<OpeApplyReserve> dataList){ + HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); + Integer total = null; + HSSFSheet sheet = hssfWorkbook.createSheet("订单领取导出"); + HSSFRow titlerRow = sheet.createRow(0); + for(int i = 0; i < headerList.size(); i++) { + titlerRow.createCell(i).setCellValue(headerList.get(i)); + } + for (int i = 0; i < dataList.size(); i++) { + HSSFRow dataRow = sheet.createRow(i + 1); + dataRow.createCell(0).setCellValue(dataList.get(i).getApplyCode()== null ? "": String.valueOf(dataList.get(i).getApplyCode())); + dataRow.createCell(1).setCellValue(dataList.get(i).getReagent().getProductSn()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductSn())); + dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getName()== null ? "": String.valueOf(dataList.get(i).getReagent().getName())); + dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getControlProducts()== null ? "": String.valueOf(dataList.get(i).getReagent().getControlProducts())); + dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentFormat())); + dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+dataList.get(i).getReagent().getReagentUnit()); + dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice())); + dataRow.createCell(7).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas())); + dataRow.createCell(8).setCellValue(dataList.get(i).getReagent().getReagentCharacter()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentCharacter())); + dataRow.createCell(9).setCellValue(dataList.get(i).getReagent().getProductHome()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductHome())); + dataRow.createCell(10).setCellValue(dataList.get(i).getNum()== null ? "": String.valueOf(dataList.get(i).getNum())); + dataRow.createCell(11).setCellValue(dataList.get(i).getUsed()== null ? "": String.valueOf(dataList.get(i).getUsed())); + dataRow.createCell(12).setCellValue(dataList.get(i).getApplyUserId()== null ? "": String.valueOf(dataList.get(i).getApplyUserId())); + dataRow.createCell(13).setCellValue(dataList.get(i).getStatus()== null ? "": String.valueOf(dataList.get(i).getStatus().getText())); + dataRow.createCell(14).setCellValue(dataList.get(i).getProjectName()== null ? "": String.valueOf(dataList.get(i).getProjectName())); + dataRow.createCell(15).setCellValue(dataList.get(i).getProjectManage()== null ? "": String.valueOf(dataList.get(i).getProjectManage())); + dataRow.createCell(16).setCellValue(dataList.get(i).getArrivalTime()== null ? "": String.valueOf(dataList.get(i).getArrivalTime())); + } + return hssfWorkbook; + } + public void onExportFileBtnClickNew(){ ServletOutputStream out = null; InputStream is = null; @@ -1268,11 +1937,12 @@ if(selectedList!=null&&selectedList.size()>0){ realDataList=selectedList; }else { - realDataList = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, null, - null); + realDataList = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentName, supplierId, null, + null,productSn,warehouseName); } List<String> headerList = new ArrayList<>(); headerList.add("试剂名称"); + headerList.add("产品编号"); headerList.add("cas"); headerList.add("厂家"); headerList.add("供应商"); @@ -1321,10 +1991,17 @@ } } + + public void onExportOutAndIn(){ + FacesContext currentInstance = FacesContext.getCurrentInstance(); + currentInstance.responseComplete(); + ExternalContext etx = currentInstance.getExternalContext(); + HttpServletResponse resp = (HttpServletResponse) etx.getResponse(); + accountInAndOutService.exportExcel(resp); + } + public HSSFWorkbook exportExcelNew(List<String> headerList, List<OpeWarehouseReserve> dataList) { HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); - - Integer total = null; HSSFSheet sheet = hssfWorkbook.createSheet("仓库库存"); HSSFRow titlerRow = sheet.createRow(0); @@ -1334,15 +2011,16 @@ for (int i = 0; i < dataList.size(); i++) { HSSFRow dataRow = sheet.createRow(i + 1); dataRow.createCell(0).setCellValue(dataList.get(i).getReagent().getName()== null ? "": String.valueOf(dataList.get(i).getReagent().getName())); - dataRow.createCell(1).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas())); - dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getProductHomeName()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductHomeName())); - dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getSupplierName()== null ? "": String.valueOf(dataList.get(i).getReagent().getSupplierName())); - dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentFormat()))); - dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentUnit())); - dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice())); - dataRow.createCell(7).setCellValue(dataList.get(i).getArticleNumber()== null ? "": String.valueOf(dataList.get(i).getArticleNumber())); - dataRow.createCell(8).setCellValue(dataList.get(i).getReserve()== null ? "": String.valueOf(dataList.get(i).getReserve())); - dataRow.createCell(9).setCellValue(dataList.get(i).getWarehouseName()== null ? "": String.valueOf(dataList.get(i).getWarehouseName())); + dataRow.createCell(1).setCellValue(dataList.get(i).getReagent().getProductSn()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductSn())); + dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas())); + dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getProductHome()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductHome())); + dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getSupplierName()== null ? "": String.valueOf(dataList.get(i).getReagent().getSupplierName())); + dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentFormat())); + dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+dataList.get(i).getReagent().getReagentUnit()); + dataRow.createCell(7).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice())); + dataRow.createCell(8).setCellValue(dataList.get(i).getArticleNumber()== null ? "": String.valueOf(dataList.get(i).getArticleNumber())); + dataRow.createCell(9).setCellValue(dataList.get(i).getReserve()== null ? "": String.valueOf(dataList.get(i).getReserve())); + dataRow.createCell(10).setCellValue(dataList.get(i).getWarehouseName()== null ? "": String.valueOf(dataList.get(i).getWarehouseName())); } return hssfWorkbook; @@ -1393,7 +2071,7 @@ return; } - List<String> selectedIds = new ArrayList<String>(); + List<Long> selectedIds = new ArrayList<Long>(); for (OpeApply oa : this.reagentDStoreSelectedList) { selectedIds.add(oa.getReagent().getId()); @@ -1461,7 +2139,7 @@ public void onSaveBtnClickNew() { if (this.reagentDStore.getReagent() == null - || StringUtils.isBlank(this.reagentDStore.getReagent().getId())) { + || this.reagentDStore.getReagent().getId()==null) { FacesUtils.warn("请选择入库试剂。"); RequestContext.getCurrentInstance().execute("PF('reagentDStoreDialog').hide()"); return; @@ -1488,17 +2166,17 @@ }*/ // 检查仓库名 - if (StringUtils.isBlank(this.reagentDStore.getHouseId())) { + if (this.reagentDStore.getHouseId()==null) { FacesUtils.warn("仓库名不能为空。"); return; } // 检查货柜名 - if (StringUtils.isBlank(this.reagentDStore.getContainerId())) { + if (this.reagentDStore.getContainerId()==null) { FacesUtils.warn("货柜名不能为空。"); return; } // 检查货柜位置 - if (StringUtils.isBlank(this.reagentDStore.getPlaceId())) { + if (this.reagentDStore.getPlace()==null) { FacesUtils.warn("货柜位置不能为空。"); return; } @@ -1525,7 +2203,7 @@ && apply.getEndReagentCode().equals(this.reagentDStore.getEndReagentCode())).count() > 0) { FacesUtils.warn("该试剂已被增加!"); }else { - this.reagentDStore.setId(IDUtils.uuid()); + // this.reagentDStore.setId(IDUtils.uuid()); this.reagentDStoreList.add(this.reagentDStore); FacesUtils.info("增加成功。"); } @@ -1541,7 +2219,7 @@ && apply.getEndReagentCode().equals(this.reagentDStore.getEndReagentCode())).count() > 0) { FacesUtils.warn("该试剂已被增加!"); }else { - this.reagentDStore.setId(IDUtils.uuid()); + // this.reagentDStore.setId(IDUtils.uuid()); this.reagentDStoreList.add(this.reagentDStore); FacesUtils.info("增加成功。"); } @@ -1558,36 +2236,42 @@ this.reagentDStore.setReagent((SysReagent)event.getObject()); this.reagentDStoreEditFlag = Constants.ACTION_ADD; + onWarehouseSelectChange(null); RequestContext.getCurrentInstance().execute("PF('reagentDStoreDialog').show()"); } - public void onWarehouseSelectChange(String warehouseId) { + public void onWarehouseSelectChange(Long warehouseId) { this.warehouseContainerList = null; this.warehouseContainerPlaceList = null; this.changeWarehouseContainerList(warehouseId); this.changeWarehouseContainerPlaceList(null); } - private void changeWarehouseContainerList(String warehouseId) { - if (StringUtils.isBlank(warehouseId)) { + public void onWarehouseContainerSelectChange(Long warehouseContainerId) { + this.warehouseContainerPlaceList = null; + this.changeWarehouseContainerPlaceList(warehouseContainerId); + } + + private void changeWarehouseContainerList(Long warehouseId) { + if (warehouseId==null) { if (this.warehouseList != null && this.warehouseList.size() > 0) { warehouseId = this.warehouseList.get(0).getId(); } } - if (StringUtils.isNotBlank(warehouseId)) { + if (warehouseId!=null) { this.warehouseContainerList = warehouseIdContainerMap.get(warehouseId); } } - private void changeWarehouseContainerPlaceList(String warehouseContainerId) { - if (StringUtils.isBlank(warehouseContainerId)) { + private void changeWarehouseContainerPlaceList(Long warehouseContainerId) { + if (warehouseContainerId==null) { if (this.warehouseContainerList != null && this.warehouseContainerList.size() > 0) { warehouseContainerId = this.warehouseContainerList.get(0).getId(); } } - if (StringUtils.isNotBlank(warehouseContainerId)) { + if (warehouseContainerId!=null) { SysWarehouseContainer container = this.warehouseContainerMap.get(warehouseContainerId); BaseMeta baseMeta = null; if (container != null @@ -1597,26 +2281,36 @@ } } - public String formatWarehouseName(String id) { - if (StringUtils.isNotBlank(id) - && this.warehouseNameMap != null) { - return warehouseNameMap.get(id); - } - - return ""; + public String formatWarehouseName(Long id) { + if(id==null){ + return ""; + } + String name=warehouseNameMap.get(id); + if(StringUtils.isBlank(name)){ + SysWarehouse warehouse=this.sysWarehouseService.getSysWarehouse(id); + if(warehouse!=null){ + warehouseNameMap.put(warehouse.getId(),warehouse.getName()); + name=warehouse.getName(); + } + } + return name; } - public String formatWarehouseContainerName(String id) { - if (StringUtils.isNotBlank(id) - && this.warehouseContainerMap != null) { - if (this.warehouseContainerMap.get(id) != null) { - return this.warehouseContainerMap.get(id).getContainerCode(); - } - } - - return ""; + public String formatWarehouseContainerName(Long id) { + if(id==null){ + return ""; + } + String containerCode=this.warehouseContainerMap.get(id).getContainerCode(); + if(StringUtils.isBlank(containerCode)){ + SysWarehouseContainer sysWarehouseContainer = this.sysWarehouseContainerService.getSysWarehouseContainer(id); + if(sysWarehouseContainer!=null){ + this.warehouseContainerMap.put(sysWarehouseContainer.getId(),sysWarehouseContainer); + containerCode=sysWarehouseContainer.getContainerCode(); + } + } + return containerCode; } - public String formatWarehouseContainerPlaceName(String id) { - if (StringUtils.isNotBlank(id)) { + public String formatWarehouseContainerPlaceName(Long id) { + if (id!=null) { return this.baseMetaService.getBaseMetaValue(id); } @@ -1638,12 +2332,12 @@ this.reagentSelectList = reagentSelectList; } - public String getReagentId() { - return reagentId; + public String getReagentName() { + return reagentName; } - public void setReagentId(String reagentId) { - this.reagentId = reagentId; + public void setReagentName(String reagentName) { + this.reagentName = reagentName; } public List<SysUser> getUserSelectList() { @@ -1653,7 +2347,7 @@ return userSelectList; } - public SysUser getSelectedUserById(String userId) { + public SysUser getSelectedUserById(Long userId) { return userSelectList.stream().filter(u->u.getId().equals(userId)).findFirst().get(); } @@ -1668,28 +2362,28 @@ this.userSelectList = userSelectList; } - public String getUserId() { + public Long getUserId() { return userId; } - public void setUserId(String userId) { + public void setUserId(Long userId) { this.userId = userId; } - public String getProjectNum() { - return projectNum; + public Long getProjectId() { + return projectId; } - public void setProjectNum(String projectNum) { - this.projectNum = projectNum; + public void setProjectId(Long projectId) { + this.projectId = projectId; } - public String getSupplierId() { + public Long getSupplierId() { return supplierId; } - public void setSupplierId(String supplierId) { + public void setSupplierId(Long supplierId) { this.supplierId = supplierId; } @@ -1737,19 +2431,19 @@ this.reagentCodeSelectedList = reagentCodeSelectedList; } - public String getReagentLogId() { + public Long getReagentLogId() { return reagentLogId; } - public void setReagentLogId(String reagentLogId) { + public void setReagentLogId(Long reagentLogId) { this.reagentLogId = reagentLogId; } - public String getUserLogId() { + public Long getUserLogId() { return userLogId; } - public void setUserLogId(String userLogId) { + public void setUserLogId(Long userLogId) { this.userLogId = userLogId; } @@ -1778,27 +2472,45 @@ } public void handleEvent2(){ - System.out.println("==============================="); if(useNum!=null && useNum>0){ if(startReagentCode!=null && !startReagentCode.equals("")){ + if (startReagentCode.matches(".*\\D+.*")) { + if (startReagentCode.length() ==24 && + startReagentCode.matches(".*([A-F]|\\d)+.*") && + startReagentCode.substring(startReagentCode.length() - 5).matches("\\d{5}")){ - BigDecimal start=new BigDecimal(startReagentCode.trim()); - String str=startReagentCode; - String up=""; - int len = startReagentCode.length() - String.valueOf(start).length(); - String temp = ""; - for (int i = 0; i < len; i++) { - temp += "0"; + //2.2长度为24位编码的 + BigInteger arrNum = BigInteger.valueOf((long)useNum); + //后5位随机码 + String randomCode = startReagentCode.substring(startReagentCode.length() - 5); + String reagentCodePrefix = startReagentCode.substring(0,startReagentCode.length() - 5); + + BigInteger startReagentCodeSuffix = new BigInteger(randomCode); + BigInteger endReagentCodeSuffix = startReagentCodeSuffix.add(arrNum).subtract((new BigInteger("1"))); + String reagentCodeSuffix= autoGenericCode(randomCode, endReagentCodeSuffix); + endReagentCode= (reagentCodePrefix + reagentCodeSuffix); + }else{ + endReagentCode = (""); + } + }else{ + + BigInteger startReagentCode2 = new BigInteger(startReagentCode); + //2.1长度不为24位编码 + //数据1 + BigInteger arrNum = BigInteger.valueOf((long)useNum); + BigInteger code1 = startReagentCode2.add(arrNum).subtract(BigInteger.ONE); + endReagentCode=(autoGenericCode(startReagentCode, code1)); } - BigDecimal end = start.add(new BigDecimal(useNum-1)); - endReagentCode=temp+end.toString(); - //endReagentCode=Integer.toString(useNum-1+Integer.parseInt(startReagentCode)); }else{ FacesUtils.info("请输入条形码开始"); } }else { FacesUtils.info("请输入领用数量"); } + } + + public void clearStartAndEndCode(){ + endReagentCode = ""; } public void handleEventForPerson(){ @@ -1855,7 +2567,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; @@ -1880,10 +2592,10 @@ public List<SysReagent> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) { List<SysReagent> list = null; try { - int count = sysReagentService.getSysReagentTotalCount(applyNewReagentName, applyNewCas, null,null); + int count = sysReagentService.getSysReagentTotalCountNew(applyNewReagentName, applyNewCas, null,null,productSn); this.setRowCount(count); if (count > 0) { - list = sysReagentService.getSysReagentList(applyNewReagentName, applyNewCas, null,null, first, pageSize); + list = sysReagentService.getSysReagentListNew(applyNewReagentName, applyNewCas, null,null, first, pageSize,productSn); } } catch (Exception e) { logger.error(e); @@ -1893,17 +2605,18 @@ @Override public SysReagent getRowData(String rowKey) { - Iterator<SysReagent> iterator = this.iterator(); - if (iterator != null) { - SysReagent sr = null; - while (iterator.hasNext()) { - sr = iterator.next(); - if (rowKey.equals(sr.getId())) { - return sr; - } - } - } - return null; +// Iterator<SysReagent> iterator = this.iterator(); +// if (iterator != null) { +// SysReagent sr = null; +// while (iterator.hasNext()) { +// sr = iterator.next(); +// if (rowKey.equals(sr.getId())) { +// return sr; +// } +// } +// } + Long id=Long.valueOf(rowKey); + return sysReagentService.getSysReagentListNewRowData(id); } }; } @@ -1980,41 +2693,47 @@ this.useNum = useNum; } - public String getOriLaboratoryId() { + public Long getOriLaboratoryId() { return oriLaboratoryId; } - public void setOriLaboratoryId(String oriLaboratoryId) { + public void setOriLaboratoryId(Long oriLaboratoryId) { this.oriLaboratoryId = oriLaboratoryId; } public void resetLaboratory(){ laboratory = null; + laboratoryId = null; laboratoryContainers = null; //getLaboratory(); //getLaboratoryContainers(); } +// public void setContainerId(){ +// } public void resetLaboratoryContainers() { laboratoryContainers = null; //getLaboratoryContainers(); } public List<SysLaboratory> getLaboratory() { - if(userId != null && userId.trim().length() > 0) + if(userId != null) { - 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; - //if(laboratoryId != null && laboratoryId.trim().length() > 0) - //{ - // this.oriLaboratoryId = this.laboratoryId; - //}else - //{ - // this.oriLaboratoryId = this.laboratory.get(0).getId(); - //} - this.laboratoryId=this.laboratory.get(0).getId(); - this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(this.laboratory.get(0).getId()); + if(laboratoryId != null) + { + this.oriLaboratoryId = this.laboratoryId; + }else + { + this.laboratoryId = this.laboratory.get(0).getId(); + } + +// this.laboratoryId = this.laboratory.get(0).getId(); + this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryId); }else { this.oriLaboratoryId = null; this.laboratoryContainers = null; @@ -2033,7 +2752,7 @@ } public List<SysLaboratoryContainer> getLaboratoryContainers() { - if(laboratoryId != null && laboratoryId.trim().length() > 0) + if(laboratoryId != null) { this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryId); } @@ -2044,19 +2763,20 @@ this.laboratoryContainers = laboratoryContainers; } - public String getLaboratoryId() { + public Long getLaboratoryId() { return laboratoryId; } - public void setLaboratoryId(String laboratoryId) { + public void setLaboratoryId(Long laboratoryId) { this.laboratoryId = laboratoryId; } - public String getLaboratoryContainerId() { + public Long getLaboratoryContainerId() { + return laboratoryContainerId; } - public void setLaboratoryContainerId(String laboratoryContainerId) { + public void setLaboratoryContainerId(Long laboratoryContainerId) { this.laboratoryContainerId = laboratoryContainerId; } @@ -2120,4 +2840,273 @@ public void setShowCodes(List<String> showCodes) { this.showCodes = showCodes; } + + public List<OpeApplyReserve> getSelectedTmpOrderList() { + return selectedTmpOrderList; + } + + public void setSelectedTmpOrderList(List<OpeApplyReserve> selectedTmpOrderList) { + this.selectedTmpOrderList = selectedTmpOrderList; + } + + public List<OpeApplyReserve> getTrulySelectedOrderList() { + return trulySelectedOrderList; + } + + public void setTrulySelectedOrderList(List<OpeApplyReserve> trulySelectedOrderList) { + this.trulySelectedOrderList = trulySelectedOrderList; + } + + + public Integer getTabValue() { + return tabValue; + } + + public void setTabValue(Integer tabValue) { + this.tabValue = tabValue; + } + + + public List<OpeApplyReserve> getSelectedInputStorageTmpOrderList() { + return selectedInputStorageTmpOrderList; + } + + public void setSelectedInputStorageTmpOrderList(List<OpeApplyReserve> selectedInputStorageTmpOrderList) { + this.selectedInputStorageTmpOrderList = selectedInputStorageTmpOrderList; + } + + public List<OpeApplyReserve> getTrulyInputStorageTmpSelectedOrderList() { + return trulyInputStorageTmpSelectedOrderList; + } + + public void setTrulyInputStorageTmpSelectedOrderList(List<OpeApplyReserve> trulyInputStorageTmpSelectedOrderList) { + this.trulyInputStorageTmpSelectedOrderList = trulyInputStorageTmpSelectedOrderList; + } + + public Timestamp getArrivalTime() { + return arrivalTime; + } + + public void setArrivalTime(Timestamp arrivalTime) { + this.arrivalTime = arrivalTime; + } + + public Long getConsigneeId() { + return consigneeId; + } + + public void setConsigneeId(Long consigneeId) { + this.consigneeId = consigneeId; + } + + public List getConsignee() { + 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())){ + dataList.add(0, dataList.remove(i)); + } + } + return dataList; + } + + public List<OpeApplyReserve> getOpeApplyList() { + return opeApplyList; + } + + public void setOpeApplyList(List<OpeApplyReserve> opeApplyList) { + this.opeApplyList = opeApplyList; + } + + + public void setArrival(OpeApplyReserve oar) { + //强制-》全到货 + oar.setArrivalNum(oar.getNum()); + } + + public void reagentStartCodeChange(OpeApplyReserve oar) { + //先输入条形码,到货数量帮填 + oar.setArrivalNum(oar.getNum()); + String startReagentCode2 = oar.getStartReagentCode2(); + String endReagentCode2 = oar.getEndReagentCode2(); + //1.如果开始条码为空,条码就为空,或者没有到货 + if (StringUtils.isBlank(startReagentCode2) + || oar.getArrivalNum() == null || oar.getArrivalNum() < 1) { + + oar.setStartReagentCode2(""); + oar.setEndReagentCode2(""); + return; + } + //2如果开始条码不为空 + //2.0如果包含字母不等于24位的直接不管 + + if (startReagentCode2.matches(".*\\D+.*")) { + if (startReagentCode2.length() ==24 && + startReagentCode2.matches(".*([A-F]|\\d)+.*") && + startReagentCode2.substring(startReagentCode2.length() - 5).matches("\\d{5}")){ + //2.2长度为24位编码的 + BigInteger arrNum = BigInteger.valueOf(oar.getArrivalNum().longValue()); + //后5位随机码 + String randomCode = startReagentCode2.substring(startReagentCode2.length() - 5); + String reagentCodePrefix = startReagentCode2.substring(0,startReagentCode2.length() - 5); + + BigInteger startReagentCodeSuffix = new BigInteger(randomCode); + BigInteger endReagentCodeSuffix = startReagentCodeSuffix.add(arrNum).subtract((new BigInteger("1"))); + String reagentCodeSuffix= autoGenericCode(randomCode, endReagentCodeSuffix); + oar.setEndReagentCode2(reagentCodePrefix + reagentCodeSuffix); + }else{ + oar.setEndReagentCode2(""); + } + }else{ + + BigInteger startReagentCode = new BigInteger(startReagentCode2); + //2.1长度不为24位编码 + //数据1 + BigInteger arrNum = BigInteger.valueOf(oar.getArrivalNum().longValue()); + BigInteger code1 = startReagentCode.add(arrNum).subtract(BigInteger.ONE); + oar.setEndReagentCode2(autoGenericCode(startReagentCode2, code1)); + } + } + + + + + private String autoGenericCode(String code, BigInteger code1) { + String result = ""; + //补充位数 + result = String.format("%0" + code.length() + "d", code1); + + return result; + } + + + + public void setProductSn(String productSn) { + this.productSn = productSn; + } + + public String getProductSn() { + return productSn; + } + + public String getApplyCode() { + return applyCode; + } + + public void setApplyCode(String applyCode) { + this.applyCode = applyCode; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public List<ApplyStatusVo> getStatusSelectList() { + if (this.statusSelectList == null) { + this.statusSelectList = Arrays.asList(ApplyStatusVo.values()); + } + return statusSelectList; + } + + + + + public List<OpeWarehouseReserve> getWarehouseReserveList() { + return warehouseReserveList; + } + + public void setWarehouseReserveList(List<OpeWarehouseReserve> warehouseReserveList) { + this.warehouseReserveList = warehouseReserveList; + } + + public OpeWarehouseReserve getOpeWarehouseReserve() { + return opeWarehouseReserve; + } + + public void setOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve) { + this.opeWarehouseReserve = opeWarehouseReserve; + } + + public String getReceiptNumber() { + return receiptNumber; + } + + 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; + } + + public boolean getIsExpired() { + return isExpired; + } + + public void setIsExpired(boolean isExpired) { + this.isExpired = isExpired; + } + + //过期处理 + public void expireOrder() { + //1.判断当前订单是否是已入库的状态 + if (this.selectedListForPerson.size() < 1) { + FacesUtils.warn("请选择数据。"); + return; + } + ArrayList<Long> ids = new ArrayList<>(); + for (OpeApplyReserve oa : this.selectedListForPerson) { + ids.add(oa.getId()); + if (oa.getStatus() != ApplyStatus.SUPPLIER_CONFIRM) { + FacesUtils.warn("只能让已确认状态的单子过期。"); + return; + } + } + + opeApplyService.updateOpeApplyStatus(ApplyStatus.EXPIRED, null, ids); + FacesUtils.warn("操作成功。"); + + + } + + public void recoverOrder(){ + if (this.selectedListForPerson.size() < 1) { + FacesUtils.warn("请选择数据。"); + return; + } + ArrayList<Long> ids = new ArrayList<>(); + for (OpeApplyReserve oa : this.selectedListForPerson) { + ids.add(oa.getId()); + if (oa.getStatus() != ApplyStatus.EXPIRED) { + FacesUtils.warn("只能让过期单子恢复确认。"); + return; + } + } + opeApplyService.updateOpeApplyStatus(ApplyStatus.SUPPLIER_CONFIRM, null, ids); + FacesUtils.warn("操作成功。"); + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } } -- Gitblit v1.9.2