package com.nanometer.smartlab.controller;
|
|
import cn.hutool.extra.qrcode.QrCodeUtil;
|
import cn.hutool.extra.qrcode.QrConfig;
|
import com.nanometer.smartlab.dao.OpeApplyDao;
|
import com.nanometer.smartlab.dao.OpeReagentCodeDao;
|
import com.nanometer.smartlab.entity.*;
|
import com.nanometer.smartlab.entity.enumtype.ApplyStatus;
|
import com.nanometer.smartlab.exception.BusinessException;
|
import com.nanometer.smartlab.service.*;
|
import com.nanometer.smartlab.util.Constants;
|
import com.nanometer.smartlab.util.FacesUtils;
|
import com.nanometer.smartlab.util.StringToolUtils;
|
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.context.annotation.Scope;
|
import org.springframework.stereotype.Controller;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.sql.Timestamp;
|
import java.util.*;
|
|
/**
|
* 标签打印
|
*/
|
@Controller
|
@Scope("session")
|
public class BarcodeMngController extends BaseController {
|
|
private static Logger logger = Logger.getLogger(BarcodeMngController.class);
|
|
|
@Resource
|
private BaseMetaService baseMetaService;
|
@Resource
|
private SysUserService sysUserService;
|
|
private LazyDataModel<OpeApply> dataModel;
|
private OpeOrder opeOrder;
|
private List<OpeApply> selectedViewList;
|
private String orderCode;
|
private String orderName;
|
private String applyCode;
|
private Integer orderStatus;
|
|
|
private List<OpeReagentCode> reagentCodeList;
|
|
@Resource
|
private OpeReagentCodeDao opeReagentCodeDao;
|
@Resource
|
private OpeApplyService opeApplyService;
|
|
private List<Map> viewReagentCodeList;
|
|
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('dialogPrintReagentCode').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('dialogPrintReagentCode').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('viewPrintReagentCodeList').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 LazyDataModel<OpeApply> getDataModel() {
|
if (this.dataModel == null) {
|
this.dataModel = new LazyDataModel<OpeApply>() {
|
@Override
|
public List<OpeApply> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
|
List<OpeApply> list = null;
|
try {
|
int count = opeApplyService.getOpeApplyCountWithOrder(applyCode,orderCode, orderName);
|
this.setRowCount(count);
|
if (count > 0) {
|
list = opeApplyService.getOpeApplyListWithOrder(applyCode,orderCode, orderName, first, pageSize);
|
}
|
} catch (Exception e) {
|
logger.error(e);
|
}
|
selectedViewList = null;
|
return list;
|
}
|
|
@Override
|
public OpeApply getRowData(String rowKey) {
|
Long id=Long.valueOf(rowKey);
|
Iterator<OpeApply> iterator = this.iterator();
|
if (iterator != null) {
|
OpeApply opeApply = null;
|
while (iterator.hasNext()) {
|
opeApply = iterator.next();
|
if (id.equals(opeApply.getId())) {
|
return opeApply;
|
}
|
}
|
}
|
return null;
|
}
|
};
|
}
|
return dataModel;
|
}
|
|
|
|
|
public OpeOrder getOpeOrder() {
|
return opeOrder;
|
}
|
|
public void setOpeOrder(OpeOrder opeOrder) {
|
this.opeOrder = opeOrder;
|
}
|
|
public String getOrderCode() {
|
return orderCode;
|
}
|
|
public void setOrderCode(String orderCode) {
|
this.orderCode = orderCode;
|
}
|
|
public String getOrderName() {
|
return orderName;
|
}
|
|
public void setOrderName(String orderName) {
|
this.orderName = orderName;
|
}
|
|
public String getApplyCode(){
|
return applyCode;
|
}
|
|
public void setApplyCode(String applyCode){
|
this.applyCode=applyCode;
|
}
|
|
public List<OpeApply> getSelectedViewList(){
|
return selectedViewList;
|
}
|
|
public void setSelectedViewList(List<OpeApply> selectedViewList){
|
this.selectedViewList=selectedViewList;
|
}
|
public List<OpeReagentCode> getReagentCodeList() {
|
return reagentCodeList;
|
}
|
|
public List<Map> getViewReagentCodeList() {
|
return viewReagentCodeList;
|
}
|
|
}
|