feat:标签打印功能

This commit is contained in:
yanshikui 2024-11-25 11:25:48 +08:00
parent 3ca40878da
commit b09ddaee31
3 changed files with 96 additions and 11 deletions

View File

@ -41,5 +41,9 @@
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.ktg</groupId>
<artifactId>ktg-mes</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -3,6 +3,12 @@ package com.ktg.print.controller;
import com.ktg.common.constant.UserConstants; import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.domain.AjaxResult; import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.utils.StringUtils; import com.ktg.common.utils.StringUtils;
import com.ktg.mes.dv.domain.DvMachinery;
import com.ktg.mes.dv.service.IDvMachineryService;
import com.ktg.mes.md.domain.MdItem;
import com.ktg.mes.md.service.IMdItemService;
import com.ktg.mes.wm.domain.WmBarcode;
import com.ktg.mes.wm.service.IWmBarcodeService;
import com.ktg.print.domain.PrintBarcodeModel; import com.ktg.print.domain.PrintBarcodeModel;
import com.ktg.print.domain.PrintPrinterConfig; import com.ktg.print.domain.PrintPrinterConfig;
import com.ktg.print.protocol.PrintMessageProto; import com.ktg.print.protocol.PrintMessageProto;
@ -11,25 +17,35 @@ import com.ktg.print.server.PrintServerDefaultHandler;
import com.ktg.print.service.IPrintPrinterConfigService; import com.ktg.print.service.IPrintPrinterConfigService;
import io.netty.channel.Channel; import io.netty.channel.Channel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.net.SocketAddress; import java.net.SocketAddress;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/** /**
* @author yanshikui * @author yanshikui
*/ */
@RestController @RestController
@RequestMapping("/barcodePrint") @RequestMapping("/print/barcodePrint")
public class PrintController { public class PrintController {
@Autowired @Autowired
private IPrintPrinterConfigService printPrinterConfigService; private IPrintPrinterConfigService printPrinterConfigService;
@Autowired
private IMdItemService iMdItemService;
@Autowired
private IWmBarcodeService wmBarcodeService;
@Autowired
private IDvMachineryService iDvMachineryService;
/** /**
* 条码打印公共接口 * 条码打印公共接口
*
* @param printBarcodeModel * @param printBarcodeModel
* @return * @return
*/ */
@ -38,7 +54,9 @@ public class PrintController {
String printCode = printBarcodeModel.getPrintCode(); String printCode = printBarcodeModel.getPrintCode();
String printTemplate = printBarcodeModel.getPrintTemplate(); String printTemplate = printBarcodeModel.getPrintTemplate();
Map<String, String> params = printBarcodeModel.getParams(); Map<String, String> params = printBarcodeModel.getParams();
PrintPrinterConfig printPrinterConfig = printPrinterConfigService.selectPrintPrinterConfigByPrinterId(Long.parseLong(printCode)); Long bussinessId = printBarcodeModel.getBussinessId();
String bussinessCode = printBarcodeModel.getBussinessCode();
PrintPrinterConfig printPrinterConfig = printPrinterConfigService.selectPrintPrinterConfigByPrinterCode(printCode);
String ip = printPrinterConfig.getPrinterIp(); String ip = printPrinterConfig.getPrinterIp();
String printPort = printPrinterConfig.getPrinterPort().toString(); String printPort = printPrinterConfig.getPrinterPort().toString();
String printName = printPrinterConfig.getPrinterName(); String printName = printPrinterConfig.getPrinterName();
@ -57,10 +75,38 @@ public class PrintController {
case UserConstants.BARCODE_TYPE_ITEM: case UserConstants.BARCODE_TYPE_ITEM:
//物料标签打印 //物料标签打印
//封装模板数据 //封装模板数据
String materialCode = params.get("materialCode"); MdItem item = null;
String materialName = params.get("materialName"); if (Optional.ofNullable(bussinessId).isPresent()) {
String specificationAndModel = params.get("specificationAndModel"); item = iMdItemService.selectMdItemById(bussinessId);
String param = params.get("param"); if (item == null) {
return AjaxResult.error("条码内容数据为空!" + "(" + bussinessId + ")");
}
} else if (StringUtils.isNotEmpty(bussinessCode)) {
MdItem itemParam = new MdItem();
itemParam.setItemCode(bussinessCode);
List<MdItem> itemList = iMdItemService.selectMdItemList(itemParam);
if (CollectionUtils.isEmpty(itemList)) {
return AjaxResult.error("条码内容数据为空!" + "(" + bussinessCode + ")");
}
item = itemList.get(0);
} else {
return AjaxResult.error("缺少业务参数!");
}
//二维码信息查询
WmBarcode bacode = new WmBarcode();
bacode.setBussinessId(item.getItemId());
bacode.setBussinessCode(item.getItemCode());
bacode.setBarcodeType(UserConstants.BARCODE_TYPE_ITEM);
List<WmBarcode> wmBarcodes = wmBarcodeService.selectWmBarcodeList(bacode);
if (CollectionUtils.isEmpty(wmBarcodes)) {
return AjaxResult.error("未查询到二维码信息!" + "(" + bussinessCode + ")");
}
WmBarcode wmBarcode = wmBarcodes.get(0);
String materialCode = item.getItemCode();//物料编码
String materialName = item.getItemName();//物料名称
String specificationAndModel = item.getSpecification();//物料规格类型
String param = wmBarcode.getBarcodeUrl();//物料二维码
dataType = PrintMessageProto.Printer.DataType.Material_Products; dataType = PrintMessageProto.Printer.DataType.Material_Products;
PrintMessageProto.Printer.MaterialProducts materialProducts = PrintMessageProto.Printer.MaterialProducts.newBuilder().setMaterialCode(materialCode).setMaterialName(materialName).setSpecificationAndModel(specificationAndModel).setParam(param).build(); PrintMessageProto.Printer.MaterialProducts materialProducts = PrintMessageProto.Printer.MaterialProducts.newBuilder().setMaterialCode(materialCode).setMaterialName(materialName).setSpecificationAndModel(specificationAndModel).setParam(param).build();
// 构造对应的消息对象 // 构造对应的消息对象
@ -90,10 +136,37 @@ public class PrintController {
case UserConstants.BARCODE_TYPE_MACHINERY: case UserConstants.BARCODE_TYPE_MACHINERY:
//设备标签打印 //设备标签打印
//封装模板数据 //封装模板数据
String equipmentCode = params.get("equipmentCode"); DvMachinery dvMachinery = null;
String equipmentName = params.get("equipmentName"); if (Optional.ofNullable(bussinessId).isPresent()) {
String specificationAndModel_1 = params.get("specificationAndModel"); dvMachinery = iDvMachineryService.selectDvMachineryByMachineryId(bussinessId);
String param1 = params.get("param"); if (dvMachinery == null) {
return AjaxResult.error("条码内容数据为空!" + "(" + bussinessId + ")");
}
} else if (StringUtils.isNotEmpty(bussinessCode)) {
DvMachinery mParam = new DvMachinery();
mParam.setMachineryCode(bussinessCode);
List<DvMachinery> mList = iDvMachineryService.selectDvMachineryList(mParam);
if (CollectionUtils.isEmpty(mList)) {
return AjaxResult.error("条码内容数据为空!" + "(" + bussinessCode + ")");
}
dvMachinery = mList.get(0);
} else {
return AjaxResult.error("缺少业务参数!");
}
//二维码信息查询
WmBarcode mcode = new WmBarcode();
mcode.setBussinessId(dvMachinery.getMachineryId());
mcode.setBussinessCode(dvMachinery.getMachineryCode());
mcode.setBarcodeType(UserConstants.BARCODE_TYPE_MACHINERY);
List<WmBarcode> mBarcodes = wmBarcodeService.selectWmBarcodeList(mcode);
if (CollectionUtils.isEmpty(mBarcodes)) {
return AjaxResult.error("未查询到二维码信息!" + "(" + bussinessCode + ")");
}
WmBarcode mBarcode = mBarcodes.get(0);
String equipmentCode = dvMachinery.getMachineryCode();
String equipmentName = dvMachinery.getMachineryName();
String specificationAndModel_1 = dvMachinery.getMachinerySpec();
String param1 = mBarcode.getBarcodeUrl();
dataType = PrintMessageProto.Printer.DataType.Equipment_; dataType = PrintMessageProto.Printer.DataType.Equipment_;
PrintMessageProto.Printer.Equipment equipment = PrintMessageProto.Printer.Equipment.newBuilder().setEquipmentCode(equipmentCode).setEquipmentName(equipmentName).setSpecificationAndModel(specificationAndModel_1).setParam(param1).build(); PrintMessageProto.Printer.Equipment equipment = PrintMessageProto.Printer.Equipment.newBuilder().setEquipmentCode(equipmentCode).setEquipmentName(equipmentName).setSpecificationAndModel(specificationAndModel_1).setParam(param1).build();
// 构造对应的消息对象 // 构造对应的消息对象
@ -111,6 +184,9 @@ public class PrintController {
// 构造对应的消息对象 // 构造对应的消息对象
msg = PrintMessageProto.Printer.newBuilder().setWorkstation(workstation).setDataType(dataType).setPrintInfo(printInfo).build(); msg = PrintMessageProto.Printer.newBuilder().setWorkstation(workstation).setDataType(dataType).setPrintInfo(printInfo).build();
break; break;
case UserConstants.BARCODE_TYPE_PROCARD:
//流转卡标签打印
case UserConstants.BARCODE_TYPE_WAREHOUSE: case UserConstants.BARCODE_TYPE_WAREHOUSE:
// 仓库标签打印 // 仓库标签打印
//封装模板数据 //封装模板数据

View File

@ -4,9 +4,14 @@ import lombok.Data;
import java.util.Map; import java.util.Map;
/**
* @author yanshikui
*/
@Data @Data
public class PrintBarcodeModel { public class PrintBarcodeModel {
private Map<String, String> params; private Map<String, String> params;
private String printCode; private String printCode;
private String printTemplate; private String printTemplate;
private Long bussinessId;
private String bussinessCode;
} }