package com.nanometer.smartlab.controller;
|
|
import com.nanometer.smartlab.entity.*;
|
import com.nanometer.smartlab.entity.enumtype.DangerousFlag;
|
import com.nanometer.smartlab.entity.enumtype.Type;
|
import com.nanometer.smartlab.service.*;
|
import com.nanometer.smartlab.util.Constants;
|
import com.nanometer.smartlab.util.FacesUtils;
|
import com.nanometer.smartlab.util.IDUtils;
|
import org.apache.commons.lang.StringUtils;
|
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.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.primefaces.context.RequestContext;
|
import org.primefaces.event.FileUploadEvent;
|
import org.primefaces.model.LazyDataModel;
|
import org.primefaces.model.SortOrder;
|
import org.primefaces.model.UploadedFile;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.stereotype.Controller;
|
|
import javax.annotation.Resource;
|
import javax.faces.context.FacesContext;
|
import javax.faces.event.ActionListener;
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* Created by johnny on 17/11/29.
|
*/
|
@Controller
|
@Scope("session")
|
public class ReagentMngController extends BaseController {
|
|
private static Logger logger = Logger.getLogger(ReagentMngController.class);
|
@Resource
|
private SysReagentService sysReagentService;
|
@Resource
|
private SysSupplierService sysSupplierService;
|
@Resource
|
private BaseMetaService baseMetaService;
|
|
@Resource
|
private OpeApplyService opeApplyService;
|
@Resource
|
private OpeOrderService opeOrderService;
|
@Resource
|
private OpeLaboratoryReserveService opeLaboratoryReserveService;
|
@Resource
|
private OpeWarehouseReserveService opeWarehouseReserveService;
|
@Resource
|
private OpeReagentStatusService opeReagentStatusService;
|
|
private LazyDataModel<SysReagent> dataModel;
|
private SysReagent sysReagent;
|
private List<SysReagent> selectedList;
|
private String name;
|
private String supplierId;
|
private String cas;
|
private List<SysSupplier> supplierSelectList;
|
private List<Type> typeList;
|
private String productSn;
|
|
public List<Type> getTypeList() {
|
if (this.typeList == null) {
|
this.typeList = Arrays.asList(Type.values());
|
}
|
return typeList;
|
}
|
|
public void setTypeList(List<Type> typeList) {
|
this.typeList = typeList;
|
}
|
|
private List<BaseMeta> products;
|
private List<BaseMeta> codeList;
|
private List<SysSupplier> sysSupplierList;
|
private List<DangerousFlag> dangerousFlagSelectList;
|
private Integer type;
|
|
public Integer getType() {
|
return type == null?0:type;
|
}
|
|
public void setType(Integer type) {
|
this.type = type;
|
}
|
|
private int action;
|
|
/*@PostConstruct
|
public void init(){
|
System.out.println("系统启动中。。。加载codeMap");
|
//List<SysReagent> list=sysReagentService.getSysReagentList();
|
*//* List<Code> codeList = codeService.selectAll();
|
for (Code code : codeList) {
|
codeMap.put(code.getKey(), code.getValue());
|
}*//*
|
}*/
|
|
public String getCas() {
|
return cas;
|
}
|
|
public void setCas(String cas) {
|
this.cas = cas;
|
}
|
|
public void initPage() {
|
this.initSupplierSelectList();
|
}
|
|
private void initSupplierSelectList() {
|
this.supplierSelectList = this.sysSupplierService.getSysSupplierList();
|
this.products = baseMetaService.getBaseMetaList("product_name");
|
|
}
|
|
|
|
public void query(){
|
List<SysReagent> list=this.sysReagentService.query();
|
Map<String,SysReagent> map=new HashMap<>();
|
List<SysReagent> list2 =new ArrayList<>();
|
Map<String,List<SysReagent>> result=new HashMap<>();
|
for (int i=0;i<list.size();i++) {
|
System.out.println("i=========="+i);
|
SysReagent re=list.get(i);
|
BaseMeta baseMeta=baseMetaService.getBaseMeta(re.getReagentUnit());
|
String value="";
|
if(baseMeta!=null){
|
value=baseMeta.getMetaValue().toUpperCase();
|
}
|
if(re.getCas()!=null && !re.getCas().equals("")){
|
String key=re.getCas()+re.getMainMetering()+value+re.getReagentFormat()+re.getProductHome();
|
System.out.println("value================="+map.get(key));
|
if(map.get(key)!=null){//有重复
|
list2.add(re);
|
if(result.get(key)!=null && result.get(key).size()>0){
|
List<SysReagent> res=result.get(key);
|
res.add(re);
|
result.put(key,res);
|
}else {
|
List<SysReagent> res=new ArrayList<>();
|
res.add(re);
|
res.add(map.get(key));
|
result.put(key,res);
|
}
|
|
}else {
|
map.put(key,re);
|
}
|
}
|
|
}
|
System.out.println("map================="+map.size());
|
System.out.println("list2================="+list2.size());
|
for(int i=0;i<list2.size();i++){
|
System.out.println(list2.get(i).getId()+"===="+
|
list2.get(i).getCas()+"===="+list2.get(i).getMainMetering()
|
+"===="+list2.get(i).getReagentUnit()+"===="+list2.get(i).getReagentFormat()+
|
"===="+list2.get(i).getProductHome());
|
|
}
|
System.out.println("end====================");
|
List<List<SysReagent>> data=new ArrayList<>();
|
for (String key : result.keySet()) {
|
data.add(result.get(key));
|
List<SysReagent> arr=result.get(key);
|
List<SysReagent> last=new ArrayList<>();
|
if(arr!=null && arr.size()>1){
|
SysReagent max=arr.get(0);
|
for(int i=1;i<arr.size();i++){
|
SysReagent temp=arr.get(i);
|
if(max.getPrice().compareTo(temp.getPrice())==-1){//max小于temp,最大值为temp
|
last.add(max);
|
max=temp;
|
|
}else {//max大于等于temp,最大值为max
|
last.add(temp);
|
}
|
}
|
for (int i=0;i<last.size();i++){
|
SysReagent sr=last.get(i);
|
opeApplyService.updateByReId(max.getId(),sr.getId());//(newReId,oldReId) 讲oldReId的数据改成newReId
|
opeLaboratoryReserveService.updateByReId(max.getId(),sr.getId());
|
opeOrderService.updateByReId(max.getId(),sr.getId());
|
opeReagentStatusService.updateByReId(max.getId(),sr.getId());
|
opeWarehouseReserveService.updateByReId(max.getId(),sr.getId());
|
|
}
|
sysReagentService.deleteSysReagent(last);
|
}
|
}
|
export(data);
|
System.out.println("结束");
|
}
|
|
public void export(List<List<SysReagent>> data){
|
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();
|
List<String> headerList = new ArrayList<>();
|
headerList.add("试剂名称");
|
headerList.add("cas");
|
headerList.add("规格");
|
headerList.add("包装");
|
headerList.add("供应商");
|
headerList.add("价格1");
|
headerList.add("价格2");
|
headerList.add("价格3");
|
headerList.add("价格4");
|
HSSFWorkbook hssfWorkbook =exportExcelNew(headerList, data);
|
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 exportExcelNew(List<String> headerList,List<List<SysReagent>> 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);
|
List<SysReagent> list=dataList.get(i);
|
SysReagent re=list.get(0);
|
dataRow.createCell(0).setCellValue(re.getName());
|
dataRow.createCell(1).setCellValue(re.getCas());
|
dataRow.createCell(2).setCellValue(re.getFormatName());
|
dataRow.createCell(3).setCellValue(re.getMainMetering()+re.getUnitName());
|
dataRow.createCell(4).setCellValue(re.getProductHomeName());
|
for(int j=0;j<list.size();j++){
|
dataRow.createCell(j+1+4).setCellValue(list.get(j).getPrice().toString());
|
}
|
}
|
return hssfWorkbook;
|
}
|
|
public static void main(String[] args){
|
Map<String,SysReagent> map=new HashMap<>();
|
SysReagent s1=new SysReagent();
|
s1.setCas("1");
|
s1.setMainMetering(new BigDecimal(1));
|
s1.setReagentUnit("0ae7ecb85f2940499680a0baa2cfc201");
|
s1.setProductHome("e9cda39ea42149158e5a36618ef0bde7");
|
s1.setReagentFormat("b2790196662c40529c28e616244c6d65");
|
SysReagent s2=new SysReagent();
|
s2.setCas("1");
|
s2.setMainMetering(new BigDecimal(1));
|
s2.setReagentUnit("0ae7ecb85f2940499680a0baa2cfc201");
|
s2.setProductHome("e9cda39ea42149158e5a36618ef0bde7");
|
s2.setReagentFormat("b2790196662c40529c28e616244c6d65");
|
String key=s1.getCas()+s1.getMainMetering()+s1.getReagentUnit()+s1.getReagentFormat()+s1.getProductHome();
|
map.put(key,s1);
|
String key2=s2.getCas()+s2.getMainMetering()+s2.getReagentUnit()+s2.getReagentFormat()+s2.getProductHome();
|
map.put(key2,s2);
|
System.out.println(map.size());
|
System.out.println(map.get(key));
|
System.out.println(map.get(key2));
|
}
|
|
public void onNewBtnClick() {
|
this.sysReagent = new SysReagent();
|
this.action = Constants.ACTION_ADD;
|
}
|
|
public List<BaseMeta> getReagentTypeBaseMeta(String keyword) {
|
final String key = keyword.toLowerCase();
|
List<BaseMeta> list=baseMetaService.getBaseMetaList("reagent_type");
|
|
return list.stream().filter(i-> (i.getMetaKey().toLowerCase().contains(key) || i.getMetaValue().toLowerCase().contains(key)))
|
.collect(Collectors.toList());
|
}
|
|
public List<BaseMeta> getReagentCharacterBaseMeta(String keyword){
|
final String key = keyword.toLowerCase();
|
List<BaseMeta> list=baseMetaService.getBaseMetaList("reagent_character");
|
|
return list.stream().filter(i-> (i.getMetaKey().toLowerCase().contains(key) || i.getMetaValue().toLowerCase().contains(key)))
|
.collect(Collectors.toList());
|
}
|
|
//自动获取厂商
|
public List<BaseMeta> getProductName(String keyword){
|
final String key = keyword.toLowerCase();
|
List<BaseMeta> list=baseMetaService.getBaseMetaList("product_name");
|
|
return list.stream().filter(i-> (i.getMetaKey().toLowerCase().contains(key) || i.getMetaValue().toLowerCase().contains(key)))
|
.collect(Collectors.toList());
|
}
|
|
//自动获取供应商
|
public List<SysSupplier> getSuppliers(String type){
|
List<SysSupplier> list=sysSupplierService.getSysSupplierList();
|
List<SysSupplier> results=new ArrayList<>();
|
for (SysSupplier sup:list) {
|
if(sup.getName().indexOf(type)>-1){
|
SysSupplier re=new SysSupplier();
|
re.setName(sup.getName());
|
re.setId(sup.getId());
|
results.add(re);
|
}
|
}
|
return results;
|
}
|
|
//自动获取规格
|
public List<BaseMeta> getReagentFormat(String keyword){
|
final String key = keyword.toLowerCase();
|
List<BaseMeta> list=baseMetaService.getBaseMetaList("reagent_format");
|
|
return list.stream().filter(i-> (i.getMetaKey().toLowerCase().contains(key) || i.getMetaValue().toLowerCase().contains(key)))
|
.collect(Collectors.toList());
|
}
|
|
//自动获取主计量单位
|
public List<BaseMeta> getReagentUnit(String keyword){
|
final String key = keyword.toLowerCase();
|
List<BaseMeta> list=baseMetaService.getBaseMetaList("reagent_unit");
|
|
return list.stream().filter(i-> (i.getMetaKey().toLowerCase().contains(key) || i.getMetaValue().toLowerCase().contains(key)))
|
.collect(Collectors.toList());
|
}
|
|
//自动获取管制品control_products
|
public List<BaseMeta> getControlProducts(String keyword){
|
final String key = keyword.toLowerCase();
|
List<BaseMeta> list=baseMetaService.getBaseMetaList("control_products");
|
|
return list.stream().filter(i-> (i.getMetaKey().toLowerCase().contains(key) || i.getMetaValue().toLowerCase().contains(key)))
|
.collect(Collectors.toList());
|
}
|
|
public void onEditBtnClick() {
|
if (this.selectedList == null
|
|| this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
if (this.selectedList.size() > 1) {
|
FacesUtils.warn("只能选择一个数据进行修改。");
|
return;
|
}
|
this.sysReagent = this.sysReagentService.getSysReagent(this.selectedList.get(0).getId());
|
this.action = Constants.ACTION_EDIT;
|
|
RequestContext.getCurrentInstance().execute("PF('dialog').show()");
|
}
|
|
public void onSaveBtnClick() {
|
//System.out.println(this.sysReagent.getReagentType());
|
try {
|
// 新建
|
if (this.action == Constants.ACTION_ADD) {
|
if (this.sysReagent == null) {
|
FacesUtils.warn("新建对象为空。");
|
return;
|
}
|
this.sysReagent.setType(1);
|
if(this.sysReagent.getControlProducts().equals("")){
|
this.sysReagent.setControlProducts(null);
|
}
|
this.sysReagentService.insertSysReagent(this.sysReagent);
|
|
FacesUtils.info("新建成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
|
// 修改
|
} else if (this.action == Constants.ACTION_EDIT) {
|
if (this.sysReagent == null) {
|
FacesUtils.warn("修改对象为空。");
|
return;
|
}
|
if(this.sysReagent.getControlProducts().equals("")){
|
this.sysReagent.setControlProducts(null);
|
}
|
this.sysReagentService.updateSysReagent(this.sysReagent);
|
|
FacesUtils.info("修改成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
|
}
|
} catch (Exception e) {
|
logger.error("操作失败。", e);
|
FacesUtils.warn("操作失败。");
|
}
|
}
|
|
public void onDeleteBtnClick() {
|
try {
|
if (this.selectedList == null
|
|| this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
|
this.sysReagentService.deleteSysReagent(this.selectedList);
|
|
FacesUtils.info("删除成功。");
|
} catch (Exception e) {
|
logger.error("操作失败。", e);
|
FacesUtils.warn("操作失败。");
|
}
|
}
|
|
//判断字典表里是否存在这组键值对
|
public String getId(String groupId,String metaValue){
|
String id="";
|
if(this.codeList.size()>0){
|
for (BaseMeta bm:this.codeList){
|
|
if(bm.getGroupId().equals(groupId)&&bm.getMetaValue().equals(metaValue)){
|
id=bm.getId();
|
}
|
}
|
}
|
return id;
|
}
|
//判断字典表里计量单位是否存在这组键值对,忽略大小写
|
public String getIdForUnit(String groupId,String metaValue){
|
String id="";
|
if(this.codeList.size()>0){
|
for (BaseMeta bm:this.codeList){
|
|
if(bm.getGroupId().equals(groupId)&&bm.getMetaValue().toUpperCase().equals(metaValue.toUpperCase())){
|
id=bm.getId();
|
}
|
}
|
}
|
return id;
|
}
|
|
|
//判断是否存在改供应商
|
public String getSysSupplierId(String name){
|
String id="";
|
for (SysSupplier sup:this.sysSupplierList) {
|
if(sup.getName().equals(name)){
|
id=sup.getId();
|
}
|
}
|
return id;
|
}
|
public void uploadFile2(FileUploadEvent event) {
|
System.out.println("=========耗材导入开始=====");
|
this.codeList=baseMetaService.getAllBaseMeta();
|
try{
|
UploadedFile file = event.getFile();
|
InputStream is=file.getInputstream();
|
boolean isExcel2003=true;
|
if (file.getFileName().matches("^.+\\.(?i)(xlsx)$")) {
|
isExcel2003 = false;
|
}
|
Workbook wb=null;
|
if(isExcel2003) {
|
wb = new HSSFWorkbook(is);
|
}else{
|
wb = new XSSFWorkbook(is);
|
}
|
Sheet sheet=wb.getSheetAt(0);
|
List<SysReagent> sysReagentsList = new ArrayList<>();
|
int totalRows = sheet.getPhysicalNumberOfRows();
|
|
Row row=null;
|
int totalCells=0;
|
String dangours = "";
|
totalCells=sheet.getRow(0).getLastCellNum();
|
if(totalCells>7){
|
FacesUtils.warn("导入表格格式不正确");
|
return;
|
}
|
for (int i = 1; i < totalRows; i++) {
|
SysReagent sysReagent = new SysReagent();
|
List<String> valuesList=new ArrayList<String>();
|
row=sheet.getRow(i);
|
|
// totalCells= row.getLastCellNum();
|
// if(totalCells>7){
|
// FacesUtils.warn("导入表格格式不正确");
|
// return;
|
// }
|
for (int t = 0; t < totalCells; t++) {
|
String cellInfo="";
|
String groupId = "";
|
if (row.getCell(t) != null) {
|
if (row.getCell(t).getCellTypeEnum().toString().equals("NUMERIC")) {
|
cellInfo = String.valueOf(row.getCell(t).getNumericCellValue());
|
} else {
|
cellInfo = row.getCell(t).getStringCellValue();
|
}
|
}
|
if(t == 1 ){
|
groupId = "product_name";
|
String id=getId(groupId,cellInfo);
|
if(id == "" && cellInfo!=null && cellInfo!="" ) {
|
BaseMeta baseMeta = new BaseMeta();
|
baseMeta.setId(IDUtils.uuid());
|
baseMeta.setGroupId(groupId);
|
baseMeta.setMetaValue(cellInfo);
|
baseMeta.setMetaKey(cellInfo);
|
baseMetaService.insertBaseMeta(baseMeta);
|
id = baseMeta.getId();
|
this.codeList.add(baseMeta);
|
}
|
valuesList.add(id);
|
}else if(t==3){
|
String numberStr = "";
|
String ChartStr = "";
|
char[] strArr = cellInfo.toCharArray();
|
int index=-1;
|
label:for(int k=0;k<strArr.length;k++){
|
if(strArr[k]<'0' || strArr[k]>'9'){
|
index=k;
|
break label;
|
}
|
}
|
numberStr=cellInfo.substring(0,index);
|
ChartStr=cellInfo.substring(index,cellInfo.length());
|
System.out.println("ChartStr========"+ChartStr);
|
/*for (char string : strArr) {
|
// 判断是否为字母
|
if ((string+"").matches("^[a-zA-Z\\u4e00-\\u9fa5]+$")||(string+"").equals("/")){
|
ChartStr += string;
|
}
|
// 判断是否为数字
|
if ((string+"").matches("[0-9]")){
|
numberStr += string;
|
}
|
|
}*/
|
valuesList.add(numberStr);
|
groupId = "reagent_unit";
|
String id=getIdForUnit(groupId,ChartStr);
|
if(id == "" && cellInfo!=null && cellInfo!="") {
|
BaseMeta baseMeta = new BaseMeta();
|
baseMeta.setId(IDUtils.uuid());
|
baseMeta.setGroupId(groupId);
|
baseMeta.setMetaValue(ChartStr.toUpperCase());
|
baseMeta.setMetaKey(ChartStr.toUpperCase());
|
baseMetaService.insertBaseMeta(baseMeta);
|
id = baseMeta.getId();
|
this.codeList.add(baseMeta);
|
}
|
valuesList.add(id);
|
}else if(t==5){
|
String id="";
|
if(!StringUtils.isBlank(cellInfo)){
|
SysSupplier sysSupplier=sysSupplierService.getSysSupplierByName(cellInfo);
|
if(sysSupplier==null){//新建供应商
|
FacesUtils.warn("未查询到供该应商信息-"+cellInfo);
|
return;
|
}
|
id=sysSupplier.getId();
|
}
|
valuesList.add(id);
|
}else if(t==6){
|
String id="";
|
if(!StringUtils.isBlank(cellInfo)){
|
groupId = "reagent_format";
|
id=getId(groupId,cellInfo);
|
if(StringUtils.isBlank(id)){
|
BaseMeta baseMeta = new BaseMeta();
|
baseMeta.setId(IDUtils.uuid());
|
baseMeta.setGroupId(groupId);
|
baseMeta.setMetaValue(cellInfo);
|
baseMeta.setMetaKey(cellInfo);
|
baseMetaService.insertBaseMeta(baseMeta);
|
id = baseMeta.getId();
|
this.codeList.add(baseMeta);
|
}
|
}
|
valuesList.add(id);
|
}else {
|
valuesList.add(cellInfo);
|
}
|
|
}
|
if (valuesList.size() != 8){
|
FacesUtils.warn("excel数据解析格式失败");
|
return;
|
}
|
System.out.println("value : "+valuesList);
|
sysReagent.setName(valuesList.get(0));//试剂名称
|
sysReagent.setProductHome(valuesList.get(1));//厂家
|
sysReagent.setProductSn(valuesList.get(2));//产品编号
|
sysReagent.setCas(valuesList.get(2));//产品编号
|
if(!valuesList.get(3).equals("")){
|
sysReagent.setMainMetering(new BigDecimal(valuesList.get(3)));//包装(数值)
|
}
|
sysReagent.setReagentUnit(valuesList.get(4));//包装(单位)
|
if(!valuesList.get(5).equals("")){
|
sysReagent.setPrice(BigDecimal.valueOf(Double.parseDouble(valuesList.get(5))));//含税单价
|
}
|
if(StringUtils.isNotBlank(valuesList.get(6))){
|
sysReagent.setSupplierId(valuesList.get(6));//供应商id
|
}
|
if(StringUtils.isNotBlank(valuesList.get(7))){
|
sysReagent.setReagentFormat(valuesList.get(7));//规格id
|
}
|
DangerousFlag d;
|
d = DangerousFlag.NORMAL;
|
sysReagent.setDangerousFlag(d);
|
sysReagent.setType(0);
|
sysReagentsList.add(sysReagent);
|
}
|
sysReagentService.insertSysReagentList2(sysReagentsList);
|
FacesUtils.info("导入成功。");
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
FacesUtils.info("导入失败,"+ex.getMessage());
|
}
|
}
|
//导入
|
public void uploadFile(FileUploadEvent event) {
|
this.codeList=baseMetaService.getAllBaseMeta();
|
this.sysSupplierList=sysSupplierService.getSysSupplierList();
|
try{
|
UploadedFile file = event.getFile();
|
InputStream is=file.getInputstream();
|
boolean isExcel2003=true;
|
if (file.getFileName().matches("^.+\\.(?i)(xlsx)$")) {
|
isExcel2003 = false;
|
}
|
Workbook wb=null;
|
if(isExcel2003) {
|
wb = new HSSFWorkbook(is);
|
}else{
|
wb = new XSSFWorkbook(is);
|
}
|
Sheet sheet=wb.getSheetAt(0);
|
List<SysReagent> sysReagentsList = new ArrayList<>();
|
int totalRows = sheet.getPhysicalNumberOfRows();
|
|
Row row=null;
|
int totalCells=0;
|
String dangours = "";
|
for (int i = 1; i < totalRows; i++) {
|
SysReagent sysReagent = new SysReagent();
|
List<String> valuesList=new ArrayList<String>();
|
row=sheet.getRow(i);
|
|
totalCells= row.getPhysicalNumberOfCells();
|
//System.out.println("====="+totalCells);
|
|
// 目前导入文件11列,不满足条件的情况跳过
|
/*if (totalCells != 12) {
|
throw new Exception("导入文件格式不正确");
|
}*/
|
|
for (int t = 0; t <= totalCells; t++) {
|
//System.out.println(row.getCell(t));
|
String cellInfo="";
|
String groupId = "";
|
|
if (row.getCell(t) != null) {
|
|
if (row.getCell(t).getCellTypeEnum().toString().equals("NUMERIC")) {
|
cellInfo = String.valueOf(row.getCell(t).getNumericCellValue());
|
} else {
|
cellInfo = row.getCell(t).getStringCellValue();
|
}
|
}
|
if(t == 2 || t == 3 || t == 7 || t == 10 || t == 9){
|
if( t == 2){
|
groupId = "control_products";
|
}else if(t == 3){
|
groupId = "reagent_format";
|
}else if (t==7){
|
groupId = "reagent_character";
|
dangours = cellInfo;
|
}else if(t == 10){
|
groupId = "reagent_type";
|
}else if(t == 9){
|
groupId = "product_name";
|
}
|
//String id = sysSupplierService.getSysSupplierId(cellInfo,groupId);
|
String id=getId(groupId,cellInfo);
|
if(id == "" && cellInfo!=null && cellInfo!="" ) {
|
BaseMeta baseMeta = new BaseMeta();
|
baseMeta.setId(IDUtils.uuid());
|
baseMeta.setGroupId(groupId);
|
baseMeta.setMetaValue(cellInfo);
|
baseMeta.setMetaKey(cellInfo);
|
baseMetaService.insertBaseMeta(baseMeta);
|
id = baseMeta.getId();
|
this.codeList.add(baseMeta);
|
}
|
valuesList.add(id);
|
}else if(t == 4){
|
String numberStr = "";
|
String ChartStr = "";
|
char[] strArr = cellInfo.toCharArray();
|
for (char string : strArr) {
|
// 判断是否为字母
|
if ((string+"").matches("^[a-zA-Z\\u4e00-\\u9fa5]|[μ]+$")||(string+"").equals("/")){
|
ChartStr += string;
|
}
|
|
}
|
numberStr = cellInfo.replace(ChartStr, "");
|
|
valuesList.add(numberStr);
|
groupId = "reagent_unit";
|
//String id = sysSupplierService.getSysSupplierId(ChartStr,groupId);
|
String id=getIdForUnit(groupId,ChartStr.toUpperCase());
|
if(id == "" && cellInfo!=null && cellInfo!="") {
|
BaseMeta baseMeta = new BaseMeta();
|
baseMeta.setId(IDUtils.uuid());
|
baseMeta.setGroupId(groupId);
|
baseMeta.setMetaValue(ChartStr.toUpperCase());
|
baseMeta.setMetaKey(ChartStr.toUpperCase());
|
baseMetaService.insertBaseMeta(baseMeta);
|
id = baseMeta.getId();
|
this.codeList.add(baseMeta);
|
}
|
//System.out.println(getId(groupId,cellInfo));
|
valuesList.add(id);
|
}else if(t == 11){
|
String id=getSysSupplierId(cellInfo);
|
if(id == "" && cellInfo!=null && cellInfo!="") {
|
SysSupplier sup=new SysSupplier();
|
sup.setId(IDUtils.uuid());
|
sup.setName(cellInfo);
|
sup.setPersonName("");
|
sup.setPhone("");
|
sup.setMemo("");
|
sysSupplierService.insertSysSupplier(sup);
|
id=sup.getId();
|
this.sysSupplierList.add(sup);
|
this.supplierSelectList.add(sup);
|
}
|
valuesList.add(id);
|
}/*else if(t == 9){
|
valuesList.add(sysSupplierService.getSysSupplierIdByname(cellInfo));
|
}*/else{
|
if(cellInfo!=null)
|
valuesList.add(cellInfo);
|
}
|
}
|
/* if (valuesList.size() != 13){
|
break;
|
}*/
|
|
sysReagent.setProductSn(valuesList.get(0));//产品编号
|
sysReagent.setName(valuesList.get(1));//试剂名称
|
sysReagent.setControlProducts(valuesList.get(2));//管制品
|
sysReagent.setReagentFormat(valuesList.get(3));//规格型号
|
if(!valuesList.get(4).equals("")){
|
sysReagent.setMainMetering(new BigDecimal(valuesList.get(4)));//包装(数值)
|
}
|
sysReagent.setReagentUnit(valuesList.get(5));//包装(单位)
|
if(!valuesList.get(6).equals("")){
|
sysReagent.setPrice(BigDecimal.valueOf(Double.parseDouble(valuesList.get(6))));//含税单价
|
}
|
sysReagent.setCas(valuesList.get(7));//CAS号
|
sysReagent.setReagentCharacter(valuesList.get(8));//危险性质
|
if(!valuesList.get(9).equals("")){
|
sysReagent.setPerBox((int)Double.parseDouble(valuesList.get(9)));//每箱数量
|
}
|
sysReagent.setProductHome(valuesList.get(10));//厂家
|
sysReagent.setReagentType(valuesList.get(11));//试剂类型
|
sysReagent.setSupplierId(valuesList.get(12));//供应商
|
DangerousFlag d;
|
if(dangours.equals("普货")){
|
d = DangerousFlag.NORMAL;
|
}else{
|
d = DangerousFlag.DANGEROUS;
|
}
|
sysReagent.setDangerousFlag(d);
|
sysReagent.setType(1);
|
sysReagentsList.add(sysReagent);
|
}
|
sysReagentService.insertSysReagentList(sysReagentsList);
|
FacesUtils.info("导入成功。");
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
FacesUtils.info("导入失败。");
|
}
|
}
|
|
|
public LazyDataModel<SysReagent> getDataModel() {
|
if (this.dataModel == null) {
|
this.dataModel = new LazyDataModel<SysReagent>() {
|
@Override
|
public List<SysReagent> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
|
List<SysReagent> list = null;
|
try {
|
int count = sysReagentService.getSysReagentTotalCountNew(name, cas, supplierId,getType(),productSn);
|
this.setRowCount(count);
|
if (count > 0) {
|
list = sysReagentService.getSysReagentListNew(name, cas, supplierId,getType(), first, pageSize,productSn);
|
}
|
selectedList = new ArrayList<> ();
|
} catch (Exception e) {
|
logger.error(e);
|
}
|
return list;
|
}
|
|
@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 sysReagentService.getSysReagent(rowKey);
|
}
|
};
|
}
|
|
return dataModel;
|
}
|
|
public void export2Excel() {
|
|
List<Map> list = sysReagentService.selectAll(name, cas, supplierId,getType(), productSn);
|
try{
|
boolean isexport = sysReagentService.export2Excel(list,getType());
|
if (isexport){
|
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
FacesUtils.warn("导出失败");
|
}
|
}
|
|
public SysReagent getSysReagent() {
|
return sysReagent;
|
}
|
|
public void setSysReagent(SysReagent sysReagent) {
|
this.sysReagent = sysReagent;
|
}
|
|
public List<SysReagent> getSelectedList() {
|
return selectedList;
|
}
|
|
public void setSelectedList(List<SysReagent> selectedList) {
|
this.selectedList = selectedList;
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public void setName(String name) {
|
this.name = name;
|
}
|
|
public String getSupplierId() {
|
return supplierId;
|
}
|
|
public void setSupplierId(String supplierId) {
|
this.supplierId = supplierId;
|
}
|
|
public List<SysSupplier> getSupplierSelectList() {
|
if (this.supplierSelectList == null) {
|
this.initSupplierSelectList();
|
}
|
return supplierSelectList;
|
}
|
|
|
|
public List<BaseMeta> getProducts() {
|
if(this.products == null)
|
{
|
this.initSupplierSelectList();
|
}
|
return products;
|
}
|
|
public void setProducts(List<BaseMeta> products) {
|
this.products = products;
|
}
|
|
public int getAction() {
|
return action;
|
}
|
|
public List<DangerousFlag> getDangerousFlagSelectList() {
|
if (this.dangerousFlagSelectList == null) {
|
this.dangerousFlagSelectList = Arrays.asList(DangerousFlag.values());
|
}
|
|
return dangerousFlagSelectList;
|
}
|
|
public void setDangerousFlagSelectList(List<DangerousFlag> dangerousFlagSelectList) {
|
this.dangerousFlagSelectList = dangerousFlagSelectList;
|
}
|
|
public String getProductSn() {
|
return productSn;
|
}
|
|
public void setProductSn(String productSn) {
|
this.productSn = productSn;
|
}
|
|
public void openUpdateSafetyNumDialog() {
|
if (this.selectedList == null
|
|| this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
if (this.selectedList.size() > 1) {
|
FacesUtils.warn("只能选择一个数据进行修改。");
|
return;
|
}
|
this.sysReagent = this.sysReagentService.getSysReagent(this.selectedList.get(0).getId());
|
if (this.sysReagent.getType() != 1) {
|
FacesUtils.warn("只能选择试剂设置安全库存。");
|
return;
|
}
|
RequestContext.getCurrentInstance().execute("PF('dialog-setSafetynum').show()");
|
}
|
|
public void updateSafetyNum(){
|
if (this.sysReagent.getSafetynum() == null) {
|
FacesUtils.warn("请输入安全库存。");
|
return;
|
}
|
sysReagentService.updateSafetyNum(this.sysReagent);
|
FacesUtils.warn("修改成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog-setSafetynum').hide()");
|
|
}
|
}
|