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/PersonalUseInfoController.java |  260 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 248 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
index 0b1b469..0547cd1 100644
--- a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
@@ -1,16 +1,24 @@
 package com.nanometer.smartlab.controller;
 
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 import javax.annotation.Resource;
 
+import com.nanometer.smartlab.entity.OpeUseFlow;
+import com.nanometer.smartlab.entity.SysLaboratory;
+import com.nanometer.smartlab.entity.dto.ApplyListDto;
+import com.nanometer.smartlab.entity.dto.PersonUseDetail;
+import com.nanometer.smartlab.entity.enumtype.ArrivalStatus;
+import com.nanometer.smartlab.service.SysLaboratoryService;
 import com.nanometer.smartlab.util.FacesUtils;
+import com.nanometer.smartlab.util.Utils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
+import org.primefaces.context.RequestContext;
 import org.primefaces.model.LazyDataModel;
 import org.primefaces.model.SortOrder;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Controller;
 
@@ -38,16 +46,28 @@
 
 	@Resource
 	private SysReagentService sysReagentService;
+	@Resource
+	private SysLaboratoryService sysLaboratoryService;
+	@Value("${institute.name}")
+	String instituteName;
 
 	/**
 	 * 数据源
 	 */
 	private LazyDataModel<OpeReagentStatus> dataModel;
-	private String reagentId;
+	private Long reagentId;
+    private String reagentName;
 	private String reagentCode;
 	private String applyPerson;
 	private Date startTime;
 	private Date endTime;
+	private String project;
+	private String department;
+	private String receiptNumber;
+	private LazyDataModel<OpeUseFlow> dataModel2;
+	private OpeUseFlow selectOne;
+	private List<PersonUseDetail> personUseDetail;
+	private Hashtable<String,Object> printTable;
 
 	private List<OpeReagentStatus> selectedList;
 	private List<SysReagent> reagentSelectList;
@@ -100,8 +120,28 @@
 	public void reagentReturn(){
 
 		try {
-			List<OpeReagentStatus> list=this.selectedList;
-			opeReagentStatusService.batchUpdateStatusByCode(list);
+			if (selectOne == null) {
+				FacesUtils.warn("请选择单号");
+				return;
+			}
+			//判断单子下的试剂是否全部 为 领用待入库-1,不是就不能取消领用
+			List<PersonUseDetail> applyList = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
+			boolean flag = applyList.stream().allMatch(pu ->
+						opeReagentStatusService.getOpeReagentStatusByReagentCode(pu.getReagentCode() ).getStatus()== ArrivalStatus.NOREGISTER.getKey());
+			if (!flag) {
+				FacesUtils.warn("试剂当前状态不可以取消领用");
+				return;
+			}
+
+			//没有批次号不可以取消领用
+			boolean flag1 = applyList.stream().allMatch(pu -> pu.getArticleNumber() != null);
+			if (!flag1) {
+				FacesUtils.warn("没有批次号不可以取消领用");
+				return;
+			}
+
+			//取消领用
+			opeReagentStatusService.batchUpdateStatusByCode(applyList);
 			FacesUtils.info("已取消试剂");
 		}catch (Exception e){
 			FacesUtils.info("请选择数据");
@@ -109,7 +149,94 @@
 
 
 	}
+	/**
+	* 生成领用单
+	*/
 
+	public void generateReceipt() {
+		if (this.selectOne == null) {
+			FacesUtils.warn("请选择数据");
+			return;
+		}
+
+		printTable = new Hashtable<>();
+		printTable.put("head", instituteName);
+		printTable.put("title", "领用单");
+		printTable.put("applyPerson", selectOne.getUserName());
+		printTable.put("department", selectOne.getDepartment());
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+		printTable.put("date", dateFormat.format(selectOne.getCreateTime()));
+		printTable.put("phone", StringUtils.isBlank(selectOne.getPhone())?"":selectOne.getPhone());
+		printTable.put("receiptNumber", selectOne.getReceiptNumber());
+		printTable.put("project", selectOne.getProjectName());
+
+		SysLaboratory sysLaboratory = sysLaboratoryService.getSysLaboratorySimpleInfo(selectOne.getHouseId());
+		printTable.put("lab", sysLaboratory.getName());
+		printTable.put("note",selectOne.getNote() == null?"":selectOne.getNote());
+		//整理数据
+		List<PersonUseDetail> applyInfo = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
+		assert applyInfo.size() > 0;
+		List<ApplyListDto> applyList = new ArrayList<>();
+		Map<String, Integer> map = new HashMap<>();
+		for (PersonUseDetail pud : applyInfo) {
+			if (map.containsKey(pud.getReagentId())) {
+				map.put(pud.getReagentId(), map.get(pud.getReagentId()) + 1);
+			}else{
+				map.put(pud.getReagentId(), 1);
+			}
+		}
+		int sum = 0;
+		for (Map.Entry<String,Integer> entry : map.entrySet()) {
+			ApplyListDto apply = new ApplyListDto();
+			for (PersonUseDetail pud : applyInfo) {
+				if (entry.getKey().equals(pud.getReagentId())) {
+					apply.setControlProducts(pud.getControlProducts());
+					apply.setMainMetering(pud.getPerInfo());
+					apply.setNum(entry.getValue().toString());
+					apply.setProductCode(pud.getProductSn());
+					apply.setProductName(pud.getReagentName());
+					apply.setReagentFormat(pud.getReagentFormat());
+					applyList.add(apply);
+					sum += entry.getValue();
+					break;
+				}
+			}
+		}
+
+		applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), ""));
+		printTable.put("applyList", applyList);
+		RequestContext.getCurrentInstance().execute("PF('printDialog').show()");
+	}
+
+	/**
+	* 查看详情
+	*/
+
+	public void detailInfo() {
+		if (this.selectOne == null) {
+			FacesUtils.warn("请选择数据");
+		}
+
+		personUseDetail = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
+
+	}
+
+	/**
+	 * @Description: 导出详情
+	 */
+	public void exportDetail() throws Exception {
+		try {
+			if (startTime == null || endTime == null){ FacesUtils.warn("请选择日期范围");return;}
+
+			List<Map> list = opeUseFlowService.selectExportDetail(reagentCode, getUserId(), startTime, endTime, receiptNumber, department, project, applyPerson, reagentName);
+			if (list == null || list.size() < 1) {FacesUtils.warn("没有数据导出");return;}
+			opeUseFlowService.export22Excel(list);
+		} catch (Exception e) {
+			e.printStackTrace();
+			FacesUtils.warn("导出失败");
+		}
+
+	}
 
 	@SuppressWarnings("serial")
 	public LazyDataModel<OpeReagentStatus> getDataModel() {
@@ -151,11 +278,51 @@
 		return dataModel;
 	}
 
-	public String getReagentId() {
+	public LazyDataModel<OpeUseFlow> getDataModel2() {
+		if (this.dataModel2 == null) {
+			this.dataModel2 = new LazyDataModel<OpeUseFlow>() {
+				@Override
+				public List<OpeUseFlow> load(int first, int pageSize, String sortField, SortOrder sortOrder,
+												   Map<String, Object> filters) {
+					List<OpeUseFlow> list = null;
+					try {
+						int count = opeUseFlowService.getPersonalUseInfoCount(reagentCode, getUserId(),startTime,endTime,receiptNumber,department,project,applyPerson,reagentName);
+						this.setRowCount(count);
+						if (count > 0) {
+							list = opeUseFlowService.getPersonalUseInfoList
+									(reagentCode,  getUserId(),startTime,endTime ,receiptNumber,department,project,applyPerson,reagentName,first,pageSize);
+						}
+						selectOne = null;
+					} catch (Exception e) {
+						logger.error(e);
+					}
+					return list;
+				}
+
+				@Override
+				public OpeUseFlow getRowData(String rowKey) {
+//					Iterator<OpeUseFlow> iterator = this.iterator();
+//					if (iterator != null) {
+//						OpeUseFlow su = null;
+//						while (iterator.hasNext()) {
+//							su = iterator.next();
+//							if (rowKey.equals(su.getReceiptNumber())) {
+//								return su;
+//							}
+//						}
+//					}
+					return opeUseFlowService.selectByReceiptNumber(rowKey,getUserId());
+				}
+			};
+		}
+		return dataModel2;
+	}
+
+	public Long getReagentId() {
 		return reagentId;
 	}
 
-	public void setReagentId(String reagentId) {
+	public void setReagentId(Long reagentId) {
 		this.reagentId = reagentId;
 	}
 
@@ -176,19 +343,88 @@
 	}
 
 	public Date getStartTime() {
-		return startTime;
+		if (null == startTime){
+			Date now = new Date();
+			Calendar cal = Calendar.getInstance();
+			cal.setTime(now);
+			cal.add(Calendar.DATE, -7);
+			return cal.getTime();
+		}else {
+			return startTime;
+		}
 	}
 
 	public void setStartTime(Date startTime) {
 		this.startTime = startTime;
 	}
 
-
 	public Date getEndTime() {
-		return endTime;
+		if (null == endTime){
+			return new Date();
+		}else {
+			return endTime;
+		}
 	}
 
 	public void setEndTime(Date endTime) {
 		this.endTime = endTime;
 	}
+
+	public String getProject() {
+		return project;
+	}
+
+	public void setProject(String project) {
+		this.project = project;
+	}
+
+	public String getDepartment() {
+		return department;
+	}
+
+	public void setDepartment(String department) {
+		this.department = department;
+	}
+
+	public String getReceiptNumber() {
+		return receiptNumber;
+	}
+
+	public void setReceiptNumber(String receiptNumber) {
+		this.receiptNumber = receiptNumber;
+	}
+
+
+	public OpeUseFlow getSelectOne() {
+		return selectOne;
+	}
+
+	public void setSelectOne(OpeUseFlow selectOne) {
+		this.selectOne = selectOne;
+	}
+
+
+	public List<PersonUseDetail> getPersonUseDetail() {
+		return personUseDetail;
+	}
+
+	public void setPersonUseDetail(List<PersonUseDetail> personUseDetail) {
+		this.personUseDetail = personUseDetail;
+	}
+
+	public Hashtable getPrintTable() {
+		return printTable;
+	}
+
+	public void setPrintTable(Hashtable printTable) {
+		this.printTable = printTable;
+	}
+
+    public String getReagentName() {
+        return reagentName;
+    }
+
+    public void setReagentName(String reagentName) {
+        this.reagentName = reagentName;
+    }
 }

--
Gitblit v1.9.2