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/SupplierOrderMngController.java |  202 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 170 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/SupplierOrderMngController.java b/src/main/java/com/nanometer/smartlab/controller/SupplierOrderMngController.java
index f845f17..bc010cf 100644
--- a/src/main/java/com/nanometer/smartlab/controller/SupplierOrderMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/SupplierOrderMngController.java
@@ -1,30 +1,39 @@
 package com.nanometer.smartlab.controller;
 
+import cn.hutool.extra.qrcode.QrCodeUtil;
+import cn.hutool.extra.qrcode.QrConfig;
+import com.nanometer.smartlab.dao.OpeReagentCodeDao;
 import com.nanometer.smartlab.entity.*;
 import com.nanometer.smartlab.entity.enumtype.ApplyStatus;
 import com.nanometer.smartlab.service.*;
 import com.nanometer.smartlab.util.Constants;
 import com.nanometer.smartlab.util.ExcelUtil;
 import com.nanometer.smartlab.util.FacesUtils;
+import com.nanometer.smartlab.util.StringToolUtils;
 import org.apache.log4j.Logger;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.primefaces.context.RequestContext;
 import org.primefaces.model.LazyDataModel;
 import org.primefaces.model.SortOrder;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Controller;
-import org.primefaces.context.RequestContext;
+
 import javax.annotation.Resource;
 import javax.faces.context.FacesContext;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.List;
 
 /**
  * Created by nph on 18/04/30.
@@ -117,19 +126,19 @@
 		this.status = status;
 	}
 
-	public String getReagentId() {
+	public Long getReagentId() {
 		return reagentId;
 	}
 
-	public void setReagentId(String reagentId) {
+	public void setReagentId(Long reagentId) {
 		this.reagentId = reagentId;
 	}
 
-	public Map<String, Integer> getMap() {
+	public Map<Long, Integer> getMap() {
 		return map;
 	}
 
-	public void setMap(Map<String, Integer> map) {
+	public void setMap(Map<Long, Integer> map) {
 		this.map = map;
 	}
 
@@ -230,11 +239,19 @@
 
     private Integer status;
 
-    private String reagentId;
+    private Long reagentId;
 
-    private Map<String,Integer> map;//键是试剂id,值是申购数量
+    private Map<Long,Integer> map;//键是试剂id,值是申购数量
 
     private List<ApplyStatus> orderStatusSelectList;
+
+	private List<OpeReagentCode> reagentCodeList;
+
+	private List<Map> viewReagentCodeList;
+
+	@Resource
+	private OpeReagentCodeDao opeReagentCodeDao;
+
 
     public Timestamp getOrderEndTime() {
 		return orderEndTime;
@@ -247,8 +264,8 @@
 	public void initOpeOrder()
     {
     		SysUser user = sysUserService.getSysUser(getUserId());
-    		String roleId = user.getRoleId();
-    		if(!roleId.equalsIgnoreCase("15fc90a1f7bf43bda01313904b543195") && !roleId.equalsIgnoreCase("b2f15b6f57984f1ca36cdb82812d559b"))
+    		Long roleId = user.getRoleId();
+    		if(roleId!=1l && roleId!=4l)
     		{
     			allOpeOrder = new ArrayList<OpeOrder>();
     			return;
@@ -290,7 +307,7 @@
 										Double a=0.00;
 										BigDecimal total=BigDecimal.valueOf(a);
 										for (int j=0;j<ids.size();j++) {
-											OpeApply app=opeApplyService.getOpeApply(ids.get(j).toString());
+											OpeApply app=opeApplyService.getOpeApply(Long.valueOf(ids.get(j).toString()));
 											if(app.getStockFlag()!=0){//判断申购试剂是否缺货
 												if(app.getApplyPrice()!=null){//判断试剂是否有实际售价
 													BigDecimal b=app.getApplyPrice().multiply(BigDecimal.valueOf(app.getNum()));
@@ -331,7 +348,7 @@
 							Double a=0.00;
 							BigDecimal total=BigDecimal.valueOf(a);
 							for (int j=0;j<ids.size();j++) {
-								OpeApply app=opeApplyService.getOpeApply(ids.get(j).toString());
+								OpeApply app=opeApplyService.getOpeApply(Long.valueOf(ids.get(j).toString()));
 								if(app.getStockFlag()!=0){//判断申购试剂是否缺货
 									if(app.getApplyPrice()!=null){//判断试剂是否有实际售价
 										BigDecimal b=app.getApplyPrice().multiply(BigDecimal.valueOf(app.getNum()));
@@ -358,7 +375,7 @@
 			if(allOpeOrder != null && allOpeOrder.size() > 0)
 			{
 				int count = allOpeOrder.size();
-				List<String> opeApplyIds = new ArrayList<String>();
+				List<Long> opeApplyIds = new ArrayList<Long>();
 				for(int i=0;i<count;i++)
 				{
 					SupplierOrder order = new SupplierOrder();
@@ -449,9 +466,9 @@
 				dataRow.createCell(1).setCellValue(String.valueOf(dataList.get(i).getCreateTime()));
                 dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getProductSn()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductSn()));
 				dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getName()== null ? "": String.valueOf(dataList.get(i).getReagent().getName()));
-                dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getControlProducts()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getControlProducts())));
-                dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentFormat())));
-                dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentUnit()));
+                dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getControlProducts()== null ? "": String.valueOf(dataList.get(i).getReagent().getControlProducts()));
+                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());
                 total = dataList.get(i).getNum();//getReagentNum(dataList.get(i).getReagent().getId());
                 dataRow.createCell(7).setCellValue(String.valueOf(total));
                 dataRow.createCell(8).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice()));
@@ -459,10 +476,10 @@
                 dataRow.createCell(10).setCellValue(dataList.get(i).getApplyPrice()==null ? String.valueOf(dataList.get(i).getReagent().getPrice()):String.valueOf(dataList.get(i).getApplyPrice()));
                 dataRow.createCell(11).setCellValue(dataList.get(i).getApplyPrice()==null?String.valueOf(dataList.get(i).getReagent().getPrice().multiply(new BigDecimal(total))):String.valueOf(dataList.get(i).getApplyPrice().multiply(new BigDecimal(total))));
                 dataRow.createCell(12).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas()));
-                dataRow.createCell(13).setCellValue(dataList.get(i).getReagent().getReagentCharacter()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentCharacter())));
+                dataRow.createCell(13).setCellValue(dataList.get(i).getReagent().getReagentCharacter()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentCharacter()));
                 dataRow.createCell(14).setCellValue(dataList.get(i).getReagent().getProductHomeName()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductHomeName()));
                 dataRow.createCell(15).setCellValue(dataList.get(i).getReagent().getSupplierName()== null ? "":String.valueOf(dataList.get(i).getReagent().getSupplierName()));
-                dataRow.createCell(16).setCellValue(dataList.get(i).getReagent().getReagentType()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentType())));
+                dataRow.createCell(16).setCellValue(dataList.get(i).getReagent().getReagentType()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentType()));
                 dataRow.createCell(17).setCellValue(String.valueOf(dataList.get(i).getProjectOwner()));
                 dataRow.createCell(18).setCellValue(String.valueOf(dataList.get(i).getProjectId()));
                 dataRow.createCell(19).setCellValue(String.valueOf(dataList.get(i).getProjectName()));
@@ -494,6 +511,115 @@
 		}
 		this.viewOpeApply=this.opeApplyService.getOpeApply(this.selectedViewList.get(0).getId());
 		RequestContext.getCurrentInstance().execute("PF('dialogStock').show()");
+	}
+
+	public void onPrintBarcodeClick(){
+		if (this.selectedViewList == null
+				|| this.selectedViewList.size() == 0) {
+			FacesUtils.warn("请选择数据。");
+			return;
+		}
+		if (this.selectedViewList.size() > 1) {
+			FacesUtils.warn("只能选择一个数据进行打印。");
+			return;
+		}
+		List<OpeReagentCode> reagentCodes=this.opeReagentCodeDao.getReagentCodeByApplyId(this.selectedViewList.get(0).getId());
+		if(reagentCodes.size()==0){
+			FacesUtils.warn("未生成标签编码");
+			return;
+		}
+		//生成标签
+		for(OpeReagentCode opeReagentCode:reagentCodes){
+			List<String> rCodes=new ArrayList<>();
+			int startCode=opeReagentCode.getStartCode();
+			int endCode=opeReagentCode.getEndCode();
+			for(int i=startCode;i<=endCode;i++){
+				String lastCode= StringToolUtils.addZeroForNum(String.valueOf(i),4);
+				String rcode=String.format("%s%s",opeReagentCode.getCodePrex(),lastCode);
+				rCodes.add(rcode);
+			}
+			opeReagentCode.setReagentCodes(rCodes);
+			//获取试剂信息
+			opeReagentCode.setReagent(opeApplyService.getReagentByApplyId(opeReagentCode.getApplyId()));
+		}
+		this.reagentCodeList=reagentCodes;
+		RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').show()");
+	}
+	public void onPrintSingleBarcodeClick(String reagentCode){
+		List<OpeReagentCode>tmpList=this.reagentCodeList;
+		List<String> rCodes=new ArrayList<>();
+		rCodes.add(reagentCode);
+		tmpList.get(0).setReagentCodes(rCodes);
+		this.reagentCodeList=tmpList;
+		RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').show()");
+	}
+
+	public void onViewBarcodeClick(){
+		if (this.selectedViewList == null
+				|| this.selectedViewList.size() == 0) {
+			FacesUtils.warn("请选择数据。");
+			return;
+		}
+		if (this.selectedViewList.size() > 1) {
+			FacesUtils.warn("只能选择一个数据进行打印。");
+			return;
+		}
+		List<OpeReagentCode> reagentCodes=this.opeReagentCodeDao.getReagentCodeByApplyId(this.selectedViewList.get(0).getId());
+		if(reagentCodes.size()==0){
+			FacesUtils.warn("未生成标签编码");
+			return;
+		}
+		List<Map> reagentCodeList=new ArrayList<>();
+
+		for(OpeReagentCode opeReagentCode:reagentCodes) {
+			//获取试剂信息
+			SysReagent reagent=opeApplyService.getReagentByApplyId(opeReagentCode.getApplyId());
+			//生成标签
+			List<String> rCodes=new ArrayList<>();
+			int startCode=opeReagentCode.getStartCode();
+			int endCode=opeReagentCode.getEndCode();
+			for (int i = startCode; i <= endCode; i++) {
+				Map reagentMap = new HashMap();
+				String lastCode = StringToolUtils.addZeroForNum(String.valueOf(i), 4);
+				String rcode = String.format("%s%s", opeReagentCode.getCodePrex(), lastCode);
+				rCodes.add(rcode);
+				reagentMap.put("applyId", opeReagentCode.getApplyId());
+				reagentMap.put("reagentCode", rcode);
+				reagentMap.put("name", reagent.getName());
+				reagentMap.put("cas", reagent.getCas());
+				reagentMap.put("reagentCharacter", reagent.getReagentCharacter());
+				reagentCodeList.add(reagentMap);
+			}
+			opeReagentCode.setReagentCodes(rCodes);
+			//获取试剂信息
+			opeReagentCode.setReagent(reagent);
+		}
+		this.viewReagentCodeList=reagentCodeList;
+		this.reagentCodeList=reagentCodes;
+		RequestContext.getCurrentInstance().execute("PF('viewReagentCodeList').show()");
+	}
+
+	public String getQrcode(String reagentCode){
+		QrConfig qrConfig=new QrConfig(50,50);
+		//设置边距,即二维码和边框的距离
+		qrConfig.setMargin(1);
+//		qrConfig.setForeColor(Color.WHITE.getRGB());
+//		qrConfig.setBackColor(Color.BLACK.getRGB());
+		byte[] image= QrCodeUtil.generatePng(reagentCode,qrConfig);
+		String base64Image= Base64.getEncoder().encodeToString(image);
+		return base64Image;
+
+	}
+
+	public void onCancelPrintBtnClick(){
+		this.reagentCodeList = new ArrayList<>();
+		RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').hide()");
+	}
+
+	public void onPrintClick(){
+		//打印条码
+		this.reagentCodeList = new ArrayList<>();
+		RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').hide()");
 	}
 
 	public void onOutOfStock(){
@@ -559,13 +685,14 @@
 		List<SysReagent> tempReagents = new ArrayList<SysReagent>();
 		List<OpeApply> opeApplyList1 = new ArrayList<>();
 		map=null;
-		Map<String, Integer> tempMap = new HashMap<String,Integer>();
+		Map<Long, Integer> tempMap = new HashMap<Long,Integer>();
 
 		for(SupplierOrder order :selectedList)
 		{
-			for(String applyId : order.getApplyIds())
+			for(Object applyId : order.getApplyIds())
 			{
-				OpeApply apply = opeApplyService.getOpeApply(applyId);
+
+				OpeApply apply = opeApplyService.getOpeApply(Long.valueOf((String) applyId));
 				if(apply.getApplyPrice()!=null){
 
 				}else {
@@ -768,7 +895,7 @@
 			//Map<String,List<OpeApply>> realDataMap = new HashMap<>();
 
 
-            Map<String, Integer> tempMap = new HashMap<String,Integer>();
+            Map<Long, Integer> tempMap = new HashMap<Long,Integer>();
             List<OpeApply> realDataList = new ArrayList<>();
             map=null;
             List<SysProject> projects = null;
@@ -785,10 +912,10 @@
 					List ids = Arrays.asList(order.getIds().split(","));
 					order.setApplyIds(ids);
 				}
-                for(String applyId : order.getApplyIds())
+                for(Long applyId : order.getApplyIds())
                 {
                 		opeApply = opeApplyService.getOpeApply(applyId);
-                		System.out.println("objective==========="+opeApply.getObjective());
+                		System.out.println("projectId==========="+opeApply.getProjectId());
                 		System.out.println(opeApply.getReagent().getName()+"           "+opeApply.getReagent().getControlProducts());
                     if( opeApply != null)
                     {
@@ -802,8 +929,8 @@
 							//opeApply.setOwnerDepartment(user1.getDepartment());
 							//System projectUser=
 							opeApply.setOwnerDepartment(sysUserService.getSysUserForSuppllier(opeApply.getApplyUserId()).getDepartment());
-							opeApply.setProjectId(opeApply.getObjective());
-							projects = sysProjectService.getSysProjectListByProjectId(opeApply.getObjective());
+							opeApply.setProjectId(opeApply.getProjectId());
+							projects = sysProjectService.getSysProjectListByProjectNo("opeApply.getProjectId()");
 							if(projects != null && !projects.isEmpty())
 							{
 								opeApply.setProjectOwner(projects.get(0).getUsername());
@@ -932,11 +1059,11 @@
     	    	List<SysReagent> tempReagents = new ArrayList<SysReagent>();
                 List<OpeApply> opeApplyList1 = new ArrayList<>();
 
-    	    Map<String, Integer> tempMap = new HashMap<String,Integer>();
+    	    Map<Long, Integer> tempMap = new HashMap<Long,Integer>();
 
 		for(SupplierOrder order :selectedList)
 		{
-			for(String applyId : order.getApplyIds())
+			for(Long applyId : order.getApplyIds())
 			{
 				OpeApply apply = opeApplyService.getOpeApply(applyId);
 				if(apply.getApplyPrice()!=null){
@@ -971,11 +1098,11 @@
     {
     	    	List<SysReagent> tempReagents = new ArrayList<SysReagent>();
 
-    	    Map<String, Integer> tempMap = new HashMap<String,Integer>();
+    	    Map<Long, Integer> tempMap = new HashMap<Long,Integer>();
 
 		for(SupplierOrder order :selectedList)
 		{
-			for(String applyId : order.getApplyIds())
+			for(Long applyId : order.getApplyIds())
 			{
 				OpeApply apply = opeApplyService.getOpeApply(applyId);
 				tempReagents.add(apply.getReagent());
@@ -1019,7 +1146,7 @@
     		this.menuController.goToPage(Constants.PAGE_CANCEL_ORDER_MNG, Constants.PAGE_SUPPLIER_ORDER_MNG);
     }
 
-    public Integer getReagentNum(String key)
+    public Integer getReagentNum(Long key)
     {
     		if(map == null)
     		{
@@ -1034,9 +1161,9 @@
 		for(SupplierOrder order :selectedList)
 		{
 			OpeOrder temp = opeOrderService.getOpeOrder(order.getId());
-			for(String id : order.getApplyIds())
+			for(Object id : order.getApplyIds())
 			{
-				opeApply = opeApplyService.getOpeApply(id);
+				opeApply = opeApplyService.getOpeApply(Long.valueOf((String)id));
 				if(opeApply != null)
 				{
 					opeApply.setStatus(ApplyStatus.SUPPLIER_CONFIRM);
@@ -1067,4 +1194,15 @@
     {
     		this.menuController.backToPage();
     }
+
+	public List<OpeReagentCode> getReagentCodeList() {
+		return reagentCodeList;
+	}
+
+	public List<Map> getViewReagentCodeList() {
+		return viewReagentCodeList;
+	}
+	public void setReagentCodeList(List<OpeReagentCode> reagentCodeList) {
+		this.reagentCodeList = reagentCodeList;
+	}
 }

--
Gitblit v1.9.2