Browse Source

打印功能尝试

lwx_dev
erdanergou 3 years ago
parent
commit
d9081c1bd3
  1. 6
      .idea/jsLibraryMappings.xml
  2. 16
      pom.xml
  3. 10
      src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENS.java
  4. 341
      src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSEnumrations.java
  5. 231
      src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSStatus.java
  6. 21
      src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDM.java
  7. 426
      src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMEnumrations.java
  8. 214
      src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaLayoutRange.java
  9. 125
      src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaTypeRange.java
  10. 151
      src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMSelectData.java
  11. 150
      src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMString.java
  12. 301
      src/main/java/com/dreamchaser/depository_manage/EPSON/Other/MessageString.java
  13. 125
      src/main/java/com/dreamchaser/depository_manage/EPSON/Other/Print.java
  14. 57
      src/main/java/com/dreamchaser/depository_manage/EPSON/Other/PrintBarCode.java
  15. 57
      src/main/java/com/dreamchaser/depository_manage/EPSON/Other/SelectPrinterInfo.java
  16. 35
      src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/ENSException.java
  17. 25
      src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/EPDMException.java
  18. 22
      src/main/java/com/dreamchaser/depository_manage/config/EPSON/ENS/Global_MEDIA_ENS.java
  19. 77
      src/main/java/com/dreamchaser/depository_manage/config/EPSON/EPDM/Global_MEDIA_EPDM.java
  20. 2
      src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java
  21. 102
      src/main/java/com/dreamchaser/depository_manage/controller/EPSON/AddMediaLayoutDlg.java
  22. 80
      src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintDlg.java
  23. 279
      src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintSettingsDlg.java
  24. 80
      src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrinterIndexDlg.java
  25. 99
      src/main/java/com/dreamchaser/depository_manage/controller/EPSON/SetRollPaperDlg.java
  26. 20
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  27. 149
      src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/EPDMMediaLayoutInf.java
  28. 12
      src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT.java
  29. 18
      src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java
  30. 12
      src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_POSITION.java
  31. 12
      src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_TYPE.java
  32. 12
      src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/PRINT_QUALITY.java
  33. 10
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  34. 36
      src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapper.java
  35. 253
      src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapperImpl.java
  36. 35
      src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapper.java
  37. 622
      src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapperImpl.java
  38. 3
      src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java
  39. 15681
      src/main/resources/static/css/JcPrinter/chalk_index.css
  40. BIN
      src/main/resources/static/css/JcPrinter/fonts/element-icons.ttf
  41. BIN
      src/main/resources/static/css/JcPrinter/fonts/element-icons.woff
  42. 217
      src/main/resources/static/css/JcPrinter/style.css
  43. 14
      src/main/resources/static/js/JcPrinter/drawParameter/DrawLableBarCode.js
  44. 12
      src/main/resources/static/js/JcPrinter/drawParameter/DrawLableGraph.js
  45. 10
      src/main/resources/static/js/JcPrinter/drawParameter/DrawLableImage.js
  46. 9
      src/main/resources/static/js/JcPrinter/drawParameter/DrawLableLine.js
  47. 9
      src/main/resources/static/js/JcPrinter/drawParameter/DrawLableQrCode.js
  48. 17
      src/main/resources/static/js/JcPrinter/drawParameter/DrawLableText.js
  49. 8
      src/main/resources/static/js/JcPrinter/drawParameter/InitDrawingBoard.js
  50. 3
      src/main/resources/static/js/JcPrinter/drawParameter/generateImagePreviewImage.js
  51. 4
      src/main/resources/static/js/JcPrinter/drawParameter/initSdk.js
  52. 3
      src/main/resources/static/js/JcPrinter/drawParameter/picturePrint.js
  53. 1
      src/main/resources/static/js/JcPrinter/element-ui_lib_index.js
  54. 518
      src/main/resources/static/js/JcPrinter/index_Demo.js
  55. 662
      src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js
  56. 10993
      src/main/resources/static/js/JcPrinter/jquery.js
  57. 2
      src/main/resources/static/js/JcPrinter/layer/layer.js
  58. 2
      src/main/resources/static/js/JcPrinter/layer/mobile/layer.js
  59. 1
      src/main/resources/static/js/JcPrinter/layer/mobile/need/layer.css
  60. BIN
      src/main/resources/static/js/JcPrinter/layer/theme/default/icon-ext.png
  61. BIN
      src/main/resources/static/js/JcPrinter/layer/theme/default/icon.png
  62. 1
      src/main/resources/static/js/JcPrinter/layer/theme/default/layer.css
  63. BIN
      src/main/resources/static/js/JcPrinter/layer/theme/default/loading-0.gif
  64. BIN
      src/main/resources/static/js/JcPrinter/layer/theme/default/loading-1.gif
  65. BIN
      src/main/resources/static/js/JcPrinter/layer/theme/default/loading-2.gif
  66. 93
      src/main/resources/templates/pages/EPSON/PrintSetting.html
  67. 103
      src/main/resources/templates/pages/EPSON/PrinterIndex.html
  68. 220
      src/main/resources/templates/pages/JcPrinter/PrinterIndex.html
  69. 70
      src/main/resources/templates/pages/material/material-view.html
  70. 7
      src/main/resources/templates/pages/warehouse/manager.html
  71. 31
      src/test/java/com/dreamchaser/depository_manage/TestForOther.java

6
.idea/jsLibraryMappings.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<file url="file://$PROJECT_DIR$" libraries="{index}" />
</component>
</project>

16
pom.xml

@ -214,6 +214,22 @@
<version>2.8.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
<!--用于执行 WMI 查询的 Java API,为了获取端口-->
<dependency>
<groupId>com.profesorfalken</groupId>
<artifactId>WMI4Java</artifactId>
<version>1.6.3</version>
</dependency>
</dependencies>
<repositories>

10
src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENS.java

@ -0,0 +1,10 @@
package com.dreamchaser.depository_manage.EPSON.ENS;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
public class ENS {
protected Pointer _ptrToStruct = new Memory(10);
private boolean _disposed = false;
}

341
src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSEnumrations.java

@ -0,0 +1,341 @@
package com.dreamchaser.depository_manage.EPSON.ENS;
import sun.management.snmp.jvmmib.EnumJvmMemPoolThreshdSupport;
/**
* 用于ENS相关的枚举类
*/
public class ENSEnumrations {
/**
* 用于ENS错误码的枚举
*/
public enum ENSErrorCode
{
ERR_BASE (0),
ERR_PARAMETER (ERR_BASE.getI()- 1), //Values of necessary arguments have not been set.
ERR_INITIALIZE (ERR_BASE.getI()- 2), //Failure in initialization of bi-directional communication module.
//Or API has not been initialized.
ERR_NOTSUPPORT (ERR_BASE.getI()- 3), //Error before the start of communication (i.e. a port specification error etc.).
//Or other error occurred in bi-directional communication module.
ERR_PRINTER (ERR_BASE.getI()- 4), //Printer has not been registered
ERR_NOTFOUND (ERR_BASE.getI()- 5), //Communication cannot be opened.
//Communication trouble. Or there is no device information which can be acquired.
ERR_BUFFERSIZE (ERR_BASE.getI()- 6), //Specified buffer size value is too small.
ERR_TEMPORARY (ERR_BASE.getI()- 7), //Temporary storage memory used in API cannot be secured.
ERR_COMMUNICATION (ERR_BASE.getI()- 8), //Communication error occurred inside system of bi-directional communication module.
ERR_INVALIDDATA (ERR_BASE.getI()- 9), //Data acquired by API contains invalid code, so data is not reliable.
ERR_CHANNEL (ERR_BASE.getI()- 10), //No usable communication channel for packet transmission/reception.
ERR_HANDLE (ERR_BASE.getI()- 11), //Handle of specified bi-directional communication module is invalid.
ERR_BUSY (ERR_BASE.getI()- 12), //Port could not be opened while printer is printing (communicating).
ERR_LOADDLL (ERR_BASE.getI()- 13), //Failure in loading bi-directional communication module.
ERR_DEVICEID (ERR_BASE.getI()- 14), //Specified DeviceID information is invalid.
ERR_PRNHANDLE (ERR_BASE.getI()- 15), //Specified printer handle is invalid.
ERR_PORT (ERR_BASE.getI()- 16), //Unsupported printer path name was specified.
ERR_TIMEOUT (ERR_BASE.getI()- 17), //Receive processing stopped due to a time out.
ERR_JOB1 (ERR_BASE.getI()- 18), //Job management error No. 1.
ERR_JOB2 (ERR_BASE.getI()- 19), //Job management error No. 2.
ERR_JOB3 (ERR_BASE.getI()- 20), //Job management error No. 3.
ERR_INVALIDHANDLE ( ERR_BASE.getI()- 21),//Specified discovery handle is invalid.
ERR_USERCANCEL (ERR_BASE.getI()- 22), //Discovery was canceled by user.
ERR_THREADSTART (ERR_BASE.getI()- 23), //Failed in starting thread.
ERR_TRAPRESOURCE ( ERR_BASE.getI()- 24), //Insufficient trap resource.
ERR_SERVICE ( ERR_BASE.getI()- 25), //Core service error.
ERR_JOBNOTSUPPORT ( ERR_BASE.getI()- 26),//Job management function is not supported.
ERR_TRAPNOTSUPPORT ( ERR_BASE.getI()- 27), //Trap function is not supported.
ERR_SETTRAP ( ERR_BASE.getI()- 28), //Trap setting failure.
ERR_NOTRAPDATA ( ERR_BASE.getI()- 29), //No Trap notification data.
ERR_GSTNOTSUPPORT ( ERR_BASE.getI()- 30),//Unsupported general status.
ERR_OTHER ( - 31); //Other error;
private int i;
ENSErrorCode(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
* @return
*/
public static ENSErrorCode getENSErrorCode(int i){
switch (i) {
case 0:
return ERR_PARAMETER;
case -1:
return ERR_PARAMETER;
case -2:
return ERR_INITIALIZE;
case -3:
return ERR_NOTSUPPORT;
case -4:
return ERR_PRINTER;
case -5:
return ERR_NOTFOUND;
case -6:
return ERR_BUFFERSIZE;
case -7:
return ERR_TEMPORARY;
case -8:
return ERR_COMMUNICATION;
case -9:
return ERR_INVALIDDATA;
case -10:
return ERR_CHANNEL;
case -11:
return ERR_HANDLE;
case -12:
return ERR_BUSY;
case -13:
return ERR_LOADDLL;
case -14:
return ERR_DEVICEID;
case -15:
return ERR_PRNHANDLE;
case -16:
return ERR_PORT;
case -17:
return ERR_TIMEOUT;
case -18:
return ERR_JOB1;
case -19:
return ERR_JOB2;
case -20:
return ERR_JOB3;
case -21:
return ERR_INVALIDHANDLE;
case -22:
return ERR_USERCANCEL;
case -23:
return ERR_THREADSTART;
case -24:
return ERR_TRAPRESOURCE;
case -25:
return ERR_SERVICE;
case -26:
return ERR_JOBNOTSUPPORT;
case -27:
return ERR_TRAPNOTSUPPORT;
case -28:
return ERR_SETTRAP;
case -29:
return ERR_NOTRAPDATA;
case -30:
return ERR_GSTNOTSUPPORT;
case -31:
return ERR_OTHER;
default:
return null;
}
}
}
/**
* 用于ENS类型的枚举
*/
public enum ENSType //Printer path type
{
TYPE_PORT (0), //Port
TYPE_PRINTER (1), //Printer registration name
TYPE_IPX (2); //IPX
private int i;
ENSType(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
/**
* 用于ENS路径类型的枚举
*/
public enum ENSPathType
{
TYPE_EJL (0), //Printer compatible with EJL commands (Page printer)
TYPE_REMOTE (1), //Printer compatible with remote commands (INK/SIDM printer)
TYPE_UNKNOWN (100); //Type cannot be determined.
private int i;
ENSPathType(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
* @param i
* @return
*/
public static ENSPathType getENSPathType(int i){
switch (i){
case 0:
return TYPE_EJL;
case 1:
return TYPE_REMOTE;
case 100:
return TYPE_UNKNOWN;
default:
return null;
}
}
}
//------------------------------------
//Definitions Printer StateCode for TM-C3400/TM-C3500/TM-C7500 (printer type).
//Please add StatusCode which are not being defined.
//Some value that is not being defined in enum by specification change of SDK may be returned.
//Refer SDK specifications for the latest definition.
//------------------------------------
public enum StatusCode
{
ST_Error (0x00 ),
ST_TestPrint (0x01 ),
ST_Busy (0x02 ),
ST_Wait (0x03 ),
ST_Idle (0x04 ),
ST_NotPrint (0x05 ),
ST_Inkdrying (0x06 ),
ST_Cleaning (0x07 );
private int i;
StatusCode(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
* @param i
* @return
*/
public static StatusCode getStatusCode(int i){
switch (i){
case 0x00:
return ST_Error;
case 0x01:
return ST_TestPrint;
case 0x02:
return ST_Busy;
case 0x03:
return ST_Wait;
case 0x04:
return ST_Idle;
case 0x05:
return ST_NotPrint;
case 0x06:
return ST_Inkdrying;
case 0x07:
return ST_Cleaning;
default:
return null;
}
}
}
//------------------------------------
//Definitions Printer ErrorCode for TM-C3400/TM-C3500/TM-C7500 (printer type).
//Please add ErrorCode which are not being defined.
//Some value that is not being defined in enum by specification change of SDK may be returned.
//Refer SDK specifications for the latest definition.
//------------------------------------
public enum ErrorCode
{
ERR_FatalError (0x00 ),
ERR_CoverOpen (0x02 ),
ERR_PaperJam (0x04 ),
ERR_Inkout (0x05 ),
ERR_Paperout (0x06 );
private int i;
ErrorCode(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
* @param i
* @return
*/
public static ErrorCode getErrorCode(int i){
switch (i){
case 0x00:
return ERR_FatalError;
case 0x02:
return ERR_CoverOpen;
case 0x04:
return ERR_PaperJam;
case 0x05:
return ERR_Inkout;
case 0x06:
return ERR_Paperout;
default:
return null;
}
}
}
//------------------------------------
//Definitions Printer WarningCode for TM-C3400/TM-C3500/TM-C7500 (printer type).
//Please add WarningCode which are not being defined.
//Some value that is not being defined in enum by specification change of SDK may be returned.
//Refer SDK specifications for the latest definition.
//------------------------------------
public enum WarningCode
{
WAR_InkLow_B (0x010 ),
WAR_InkLow_C (0x011 ),
WAR_InkLow_M (0x012 ),
WAR_InkLow_Y (0x013 );
private int i;
WarningCode(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
* @param i
* @return
*/
public static WarningCode getWarningCode(int i){
switch (i){
case 0x010:
return WAR_InkLow_B;
case 0x011:
return WAR_InkLow_C;
case 0x012:
return WAR_InkLow_M;
case 0x013:
return WAR_InkLow_Y;
default:
return null;
}
}
}
}

231
src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSStatus.java

@ -0,0 +1,231 @@
package com.dreamchaser.depository_manage.EPSON.ENS;
import com.dreamchaser.depository_manage.config.EPSON.ENS.Global_MEDIA_ENS;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.sun.jna.Memory;
import com.sun.jna.Structure;
public class ENSStatus extends ENS{
public class STATUSVERSION extends Structure
{
public short MajorVersion;
public short MinerVersion;
}
public class PAPERPATHINFO extends Structure
{
public byte Type;
public byte Path;
}
public class CHARASTATUSINFO01 extends Structure
{
public byte Version;
public int StartDate;
public int TotalPrintedLine;
public short TotalTime;
public short CSFBin1PaperSize;
public short CSFBin2PaperSize;
public short CSFBin3PaperSize;
public short SeriesPaperWidth;
}
public class CHARASTATUSINFO02 extends Structure
{
public byte Version;
public int StartDate;
public int TotalPrintedLine;
public short TotalTime;
public int ChangeRibonLine;
}
public class CHARASTATUSINFO03 extends Structure
{
public byte Version;
public short CSFBin1PaperSize;
public byte CSFBin1PaperType;
public byte CSFBin1PaperRest;
public short CSFBin2PaperSize;
public byte CSFBin2PaperType;
public byte CSFBin2PaperRest;
public byte SIMMVolume;
}
public class TRAYFIELDINFO extends Structure
{
public byte FieldType;
public byte Position;
}
public class PAPERTRAYINFO extends Structure
{
public byte TrayType;
public byte TrayVolume;
public TRAYFIELDINFO TrayField;
}
public class JOBNAMEINFO extends Structure
{
public int JobID;
public char[] Jobname = new char[64];
}
public class CARTRIDGEANDINKINFO extends Structure
{
public byte CartridgeType;
public int ColorType;
public byte InkRest;
public byte InkDimension;
}
public class HEATERTEMPERATUREINFO extends Structure
{
public byte TemperatureUnit;
public byte TemperatureSetForPreHeater;
public byte PreHeaterTemperature;
public byte PreHeaterInfo;
public byte TemperatureSetForPlatenHeater;
public byte PlatenHeaterTemperature;
public byte PlatenHeaterInfo;
public byte TemperatureSetForAfterHeater;
public byte AfterHeaterTemperature;
public byte AfterHeaterInfo;
}
public class ROMCODEINFO extends Structure
{
public byte Size;
public byte[] Data = new byte[255];
}
public static class INKSIDMSTATUS_02 extends Structure
{
public int StatusSize;
public STATUSVERSION Version;
public byte StatusCode;
public byte ErrorCode;
public byte SelfPrintCode;
public int[] WarmingCode = new int[2];
public byte[] RestCSFPaper = new byte[4];
public byte[] ReserveRestCSFPaper = new byte[4];
public PAPERPATHINFO PaperPath;
public short PaperSizeError;
public byte PaperTypeError;
public PAPERPATHINFO PaperPathError;
public CHARASTATUSINFO01 CharaStatus01;
public CHARASTATUSINFO02 CharaStatus02;
public CHARASTATUSINFO03 CharaStatus03;
public short CopyPrintNumber;
public byte InkColorNumber;
public byte MicroWeaveInfo;
public short CleaningTime;
public byte[] PaperSelectStatus = new byte[11];
public byte[] ReservePaperSelectStatus = new byte[5];
public CARTRIDGEANDINKINFO[] CartridgeInk = new CARTRIDGEANDINKINFO[16];
public PAPERTRAYINFO[] PaperTray = new PAPERTRAYINFO[8];
public byte PrintTec;
public int ReplaceCartridge;
public short RomCode;
public byte[] InkRemainInfo = new byte[3];
public byte[] ReserveInkRemainInfo = new byte[5];
public byte CancelCode;
public byte CutterInfo;
public byte PaperJamInfo;
public byte RouteChangeLeverInfo;
public JOBNAMEINFO JobNameInfo;
public int ColorimetricCalibrationIDSize;
public byte[] ColorimetricCalibrationID = new byte[260];
public byte PaperRestUnit;
public int PaperRestValue;
public short PaperWidth;
public byte PaperInfoType;
public byte PaperInfoValue;
public byte InkSelect;
public HEATERTEMPERATUREINFO HeaterTemperature;
public byte AvailableWarningCode2;
public byte[] WarningCode2 = new byte[16];
public byte PrinterMachineInfo2SetFlag;
public byte[] PrinterMachineInfo2 = new byte[4];
public byte FatalErrorCodeSetFlag;
public byte FatalErrorCode;
public byte ReprintInfo;
public byte StatusReplyType;
public byte[] SerialNo = new byte[10];
public byte[] InkMaintenanceLimit = new byte[16];
public ROMCODEINFO RomCode2;
public byte[] Reserved = new byte[194];
};
private boolean _disposed = false;
public INKSIDMSTATUS_02 _struct;
public byte StatusCode;
public byte getStatusCode() {
return _struct.StatusCode;
}
public byte ErrorCode;
public byte getErrorCode() {
return _struct.ErrorCode;
}
public byte[] WarningCode;
public byte[] getWarningCode() {
return _struct.WarningCode2;
}
public ENSStatus()
{
int Size = Integer.SIZE / 8 * 6 + 556 + Short.SIZE / 8 * 5;
_ptrToStruct = new Memory(Size);
_struct = new INKSIDMSTATUS_02();
_struct.StatusSize = Size;
_struct.Version = new STATUSVERSION();
_struct.StatusCode = 0;
_struct.ErrorCode = 0;
_struct.SelfPrintCode = 0;
_struct.PaperPath = new PAPERPATHINFO();
_struct.PaperSizeError = 0;
_struct.PaperTypeError = 0;
_struct.PaperPathError = new PAPERPATHINFO();
_struct.CharaStatus01 = new CHARASTATUSINFO01();
_struct.CharaStatus02 = new CHARASTATUSINFO02();
_struct.CharaStatus03 = new CHARASTATUSINFO03();
_struct.CopyPrintNumber = 0;
_struct.InkColorNumber = 0;
_struct.MicroWeaveInfo = 0;
_struct.CleaningTime = 0;
_struct.PrintTec = 0;
_struct.ReplaceCartridge = 0;
_struct.RomCode = 0;
_struct.CancelCode = 0;
_struct.CutterInfo = 0;
_struct.PaperJamInfo = 0;
_struct.RouteChangeLeverInfo = 0;
_struct.JobNameInfo = new JOBNAMEINFO();
_struct.ColorimetricCalibrationIDSize = 0;
_struct.PaperRestUnit = 0;
_struct.PaperRestValue = 0;
_struct.PaperWidth = 0;
_struct.PaperInfoType = 0;
_struct.PaperInfoValue = 0;
_struct.InkSelect = 0;
_struct.HeaterTemperature = new HEATERTEMPERATUREINFO();
_struct.AvailableWarningCode2 = 0;
_struct.PrinterMachineInfo2SetFlag = 0;
_struct.FatalErrorCodeSetFlag = 0;
_struct.FatalErrorCode = 0;
Global_MEDIA_ENS.integerINKSIDMSTATUS_02Map.put(_ptrToStruct.getInt(0),_struct);
}
}

21
src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDM.java

@ -0,0 +1,21 @@
package com.dreamchaser.depository_manage.EPSON.EPDM;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
public abstract class EPDM {
protected Pointer _ptrToStruct = new Memory(24);
private boolean _disposed = false;
public Pointer StructurePointer;
public Pointer getStructurePointer() {
StructureToPtr();
return _ptrToStruct;
}
public abstract void PtrToStructure();
public abstract void StructureToPtr();
}

426
src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMEnumrations.java

@ -0,0 +1,426 @@
package com.dreamchaser.depository_manage.EPSON.EPDM;
/**
* 用于EPDM相关的枚举类
*/
public class EPDMEnumrations {
/**
* 用于EPDM的错误码
*/
public enum EPDMErrorCode {
EPDM_ERR_NORMAL(0), // The function succeeds.
EPDM_ERR_CMD(-1), // The command is not supported.
EPDM_ERR_PARAM(-2), // The parameter error
EPDM_ERR_NOTSUPPORT(-3), // The specified Printer Driver is not supported.
EPDM_ERR_DLLNOTFOUND(-4), // Not found the printer specific DLL
EPDM_ERR_NOMEM(-5), // Shortage of memory.
EPDM_ERR_OPENPRT(-6), // Open fails
EPDM_ERR_FAIL(-7), // Any error is occurred.
EPDM_ERR_VERSION(-8), // Not Supprot this DLL version.
EPDM_ERR_NOTVALID(-9), // The function can not reply valid value.
EPDM_ERR_COMMUNICATION(-10), // A communication error.
EPDM_ERR_FATAL(-11), // Fatal error.
EPDM_ERR_NOTFOUND(-12), // Not found the input data.
EPDM_ERR_FILEFORMAT(-13), // Import file format error.
EPDM_ERR_READFILE(-14), // The export file is not read.
EPDM_ERR_WRITEFILE(-15), // The export file is not write.
EPDM_ERR_OVERWRITE(-16), // The export file name is exist(Do not overwrite).
EPDM_ERR_LONGERNAME(-17), // The Add Name is longer.
EPDM_ERR_MAXDATA(-18), // The Add Data is max.
EPDM_ERR_FWVERSION(-19); // The F/W version is old.
private int i;
EPDMErrorCode(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
*
* @param s 输入
* @return
*/
public static EPDMErrorCode getEPDMErrorCode(int s) {
switch (s) {
case 0:
return EPDM_ERR_NORMAL;
case -1:
return EPDM_ERR_CMD;
case -2:
return EPDM_ERR_PARAM;
case -3:
return EPDM_ERR_NOTSUPPORT;
case -4:
return EPDM_ERR_DLLNOTFOUND;
case -5:
return EPDM_ERR_NOMEM;
case -6:
return EPDM_ERR_OPENPRT;
case -7:
return EPDM_ERR_FAIL;
case -8:
return EPDM_ERR_VERSION;
case -9:
return EPDM_ERR_NOTVALID;
case -10:
return EPDM_ERR_COMMUNICATION;
case -11:
return EPDM_ERR_FATAL;
case -12:
return EPDM_ERR_NOTFOUND;
case -13:
return EPDM_ERR_FILEFORMAT;
case -14:
return EPDM_ERR_READFILE;
case -15:
return EPDM_ERR_WRITEFILE;
case -16:
return EPDM_ERR_OVERWRITE;
case -17:
return EPDM_ERR_LONGERNAME;
case -18:
return EPDM_ERR_MAXDATA;
case -19:
return EPDM_ERR_FWVERSION;
default:
return null;
}
}
}
/**
* 用于打开打印机类型的枚举
*/
public enum OpenType {
EPDM_OPENTYPE_CUR(0), // Open with the printer driver's current default DEVMODE data structure.
EPDM_OPENTYPE_ORG(1), // Open with the DEVMODE data structure in factory reset.
EPDM_OPENTYPE_IN(2); // Open with the DEVMODE data structure specified by the lpDM parameter.
private int i;
OpenType(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
*
* @param i 输入
* @return
*/
public static OpenType getEPDMOpenType(int i) {
switch (i) {
case 0:
return EPDM_OPENTYPE_CUR;
case 1:
return EPDM_OPENTYPE_ORG;
case 2:
return EPDM_OPENTYPE_IN;
default:
return null;
}
}
}
/**
* 用于控制类型的枚举
*/
public enum Command {
EPDM_CMD_MEDIA(60), // Media type
EPDM_CMD_STRING(213), // String.
EPDM_CMD_FAVORITE(500), // My favorite :Comment=STR
EPDM_CMD_FAVORITEW(501), // My favorite :Comment=WSTR
EPDM_CMD_MEDIALAYOUT(502), // Media layout :Comment=STR
EPDM_CMD_MEDIALAYOUTW(503), // Media layout :Comment=WSTR
EPDM_CMD_QUALITY(504), // Print qulity
EPDM_CMD_AUTOCUT(505), // Media cut mode
EPDM_CMD_AUTOCUTNUM(506), // Count of media cut
EPDM_CMD_MEDIAPOSITION(507), // Search media position
EPDM_CMD_DRIVERSETTINGS(600), // Driver settings :Comment=STR
EPDM_CMD_DRIVERSETTINGSW(601), // Driver settings :Comment=WSTR
EPDM_CMD_PRINTERSETTINGS(602), // Printer settings :Comment=STR
EPDM_CMD_PRINTERSETTINGSW(603), // Printer settings :Comment=WSTR
EPDM_CMD_STRINGW(1024); // UNICODE String.
private int i;
Command(int i) {
this.i = i;
}
public int getI() {
return i;
}
/**
* 用于获取对应的枚举值
*
* @param i 输入
* @return
*/
public static Command getCommand(int i) {
switch (i) {
case 60:
return EPDM_CMD_MEDIA;
case 213:
return EPDM_CMD_STRING;
case 500:
return EPDM_CMD_FAVORITE;
case 501:
return EPDM_CMD_FAVORITEW;
case 502:
return EPDM_CMD_MEDIALAYOUT;
case 503:
return EPDM_CMD_MEDIALAYOUTW;
case 504:
return EPDM_CMD_QUALITY;
case 505:
return EPDM_CMD_AUTOCUT;
case 506:
return EPDM_CMD_AUTOCUTNUM;
case 507:
return EPDM_CMD_MEDIAPOSITION;
case 600:
return EPDM_CMD_DRIVERSETTINGS;
case 601:
return EPDM_CMD_DRIVERSETTINGSW;
case 602:
return EPDM_CMD_PRINTERSETTINGS;
case 603:
return EPDM_CMD_PRINTERSETTINGSW;
case 1024:
return EPDM_CMD_STRINGW;
default:
return null;
}
}
}
/**
* 用于结构类型的枚举
*/
public enum StructVersion {
EPDM_STVER_STRING_1(1), // Structure Version define for [EPDM_STRING_1]
EPDM_STVER_STRINGW_1(1), // Structure Version define for [EPDM_STRINGW_1]
EPDM_STVER_FAVORITEINF(1), // Structure Version define for [EPDM_FAVORITEINF]
EPDM_STVER_FAVORITEINFW(1), // Structure Version define for [EPDM_FAVORITEINFW]
EPDM_STVER_FAVORITERANGE(1), // Structure Version define for [EPDM_FAVORITERANGE]
EPDM_STVER_MEDIALAYOUTINF(1), // Structure Version define for [EPDM_MEDIALAYOUTINF]
EPDM_STVER_MEDIALAYOUTINF_2(2), // Structure Version define for [EPDM_MEDIALAYOUTINF_2]
EPDM_STVER_MEDIATYPERANGE(1), // Structure Version define for [EPDM_MEDIATYPERANGE]
EPDM_STVER_MEDIATYPERANGE_2(2), // Structure Version define for [EPDM_MEDIATYPERANGE_2]
EPDM_STVER_MEDIALAYOUTRANGE(1), // Structure Version define for [EPDM_MEDIALAYOUTRANGE]
EPDM_STVER_MEDIALAYOUTRANGE_2(2), // Structure Version define for [EPDM_MEDIALAYOUTRANGE_2]
EPDM_STVER_MEDIALAYOUTADD(1), // Structure Version define for [EPDM_MEDIALAYOUTADD]
EPDM_STVER_MEDIALAYOUTADD_2(2), // Structure Version define for [EPDM_MEDIALAYOUTADD_2]
EPDM_STVER_MEDIALAYOUTADDW(1), // Structure Version define for [EPDM_MEDIALAYOUTADDW]
EPDM_STVER_MEDIALAYOUTADDW_2(2), // Structure Version define for [EPDM_MEDIALAYOUTADDW_2]
EPDM_STVER_PRINTERSETTINGS(1), // Structure Version define for [EPDM_PRINTERSETTINGS]
EPDM_STVER_EXPORTDATA(1), // Structure Version define for [EPDM_EXPORTDATA]
EPDM_STVER_EXPORTDATAW(1), // Structure Version define for [EPDM_EXPORTDATAW]
EPDM_STVER_FAVORITEADD(1), // Structure Version define for [EPDM_FAVORITEADD]
EPDM_STVER_FAVORITEADDW(1), // Structure Version define for [EPDM_FAVORITEADDW]
EPDM_STVER_EXPORT_DRIVERSETTINGS(1), // Structure Version define for [EPDM_EXPORT_DRIVERSETTINGS]
EPDM_STVER_EXPORT_DRIVERSETTINGSW(1), // Structure Version define for [EPDM_EXPORT_DRIVERSETTINGSW]
EPDM_STVER_EXPORT_PRINTERSETTINGS(1), // Structure Version define for [EPDM_EXPORT_PRINTERSETTINGS]
EPDM_STVER_EXPORT_PRINTERSETTINGSW(1); // Structure Version define for [EPDM_EXPORT_PRINTERSETTINGSW]
private int i;
StructVersion(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
/**
* 用于名称的枚举
*/
public enum StringID
{
EPDM_STRING_MEDIA (3), // Media Name.
EPDM_STRING_FAVORITE (15), // Favorite Name
EPDM_STRING_MEDIALAYOUT (16), // Media Layout Name
EPDM_STRING_MEDIATYPE (17), // Media Type Name
EPDM_STRING_AUTOCUT (18), // Autocut Action Type Name
EPDM_STRING_MEDIAPOSITION (19); // Media Position Kind Name
private int i;
StringID(int i) {
this.i = i;
}
public int getI() {
return i;
}
public static StringID getStringID(int s) {
switch (s) {
case 3:
return EPDM_STRING_MEDIA;
case 15:
return EPDM_STRING_FAVORITE;
case 16:
return EPDM_STRING_MEDIALAYOUT;
case 17:
return EPDM_STRING_MEDIATYPE;
case 18:
return EPDM_STRING_AUTOCUT;
case 19:
return EPDM_STRING_MEDIAPOSITION;
default:
return null;
}
}
}
/**
* 用于媒体类型的枚举
*/
public enum MediaTypeID
{
EPDM_MEDIATYPE_DIECUT ((short) 0), // Die-cut Label(Gap)
EPDM_MEDIATYPE_BMDIECUT ((short)1), // Die-cut Label(BM)
EPDM_MEDIATYPE_BMDIECUTGAP ((short)2), // Black Mark Die-cut Label(Gap)
EPDM_MEDIATYPE_ALLLABEL ((short)3), // Full-page Label
EPDM_MEDIATYPE_BMALLLABEL ((short)4), // Black Mark Full-page Label
EPDM_MEDIATYPE_RECEIPT ((short)5), // Continuous Paper
EPDM_MEDIATYPE_BMRECEIPT ((short)6), // Black Mark Continuous Paper
EPDM_MEDIATYPE_TPDIECUT ((short)7), // Transparent Die-cut Label
EPDM_MEDIATYPE_TPALLLABEL ((short)8); // Transparent Full-page Label
private short i;
MediaTypeID(short i) {
this.i = i;
}
public short getI() {
return i;
}
public static MediaTypeID getMediaTypeID(short s) {
switch (s) {
case 0:
return EPDM_MEDIATYPE_DIECUT;
case 1:
return EPDM_MEDIATYPE_BMDIECUT;
case 2:
return EPDM_MEDIATYPE_BMDIECUTGAP;
case 3:
return EPDM_MEDIATYPE_ALLLABEL;
case 4:
return EPDM_MEDIATYPE_BMALLLABEL;
case 5:
return EPDM_MEDIATYPE_RECEIPT;
case 6:
return EPDM_MEDIATYPE_BMRECEIPT;
case 7:
return EPDM_MEDIATYPE_TPDIECUT;
case 8:
return EPDM_MEDIATYPE_TPALLLABEL;
default:
return null;
}
}
}
/**
* 用于打印质量的枚举
*/
public enum PrintQualityID
{
EPDM_QUALITY_360X180 (0), // Quality level (360dpi * 180dpi)
EPDM_QUALITY_360X360 (1), // Quality level (360dpi * 360dpi)
EPDM_QUALITY_720X360 (2); // Quality level (720dpi * 360dpi)
private int i;
PrintQualityID(int i) {
this.i = i;
}
public int getI() {
return i;
}
public static PrintQualityID getPrintQualityID(int s) {
switch (s) {
case 0:
return EPDM_QUALITY_360X180;
case 1:
return EPDM_QUALITY_360X360;
case 2:
return EPDM_QUALITY_720X360;
default:
return null;
}
}
}
/**
* 用于打印机状态的枚举
*/
public enum OverWriteID
{
EPDM_OVERWRITE_OFF (0), // Disable over write
EPDM_OVERWRITE_ON (1); // Enable over write
private int i;
OverWriteID(int i) {
this.i = i;
}
public int getI() {
return i;
}
public static OverWriteID getOverWriteID(int s) {
switch (s) {
case 0:
return EPDM_OVERWRITE_OFF;
case 1:
return EPDM_OVERWRITE_ON;
default:
return null;
}
}
}
}

214
src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaLayoutRange.java

@ -0,0 +1,214 @@
package com.dreamchaser.depository_manage.EPSON.EPDM;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.dreamchaser.depository_manage.exception.MyException;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class EPDMMediaLayoutRange extends EPDM{
public class EPDM_MEDIALAYOUTRANGE extends Structure
{
public int dwVersion;
public int dwSize;
public short iIDCount;
public short iMediaTypeCount;
public Pointer lpMediaLayoutID;
public Pointer lpMediaTypeRange;
public short iMaxString;
public short iMaxCount;
@Override
protected List<String> getFieldOrder() {
return new ArrayList<>(Arrays.asList("dwVersion", "dwSize", "iIDCount", "iMediaTypeCount", "lpMediaLayoutID", "lpMediaTypeRange", "iMaxString", "iMaxCount"));
}
public EPDM_MEDIALAYOUTRANGE() {
}
public EPDM_MEDIALAYOUTRANGE(Pointer p) {
super(p);
}
};
private boolean _disposed = false;
private EPDM_MEDIALAYOUTRANGE _struct;
public EPDMEnumrations.StructVersion Version;
public short IDCount;
public short getIDCount() {
return _struct.iIDCount;
}
public short[] MediaLayoutID;
public short[] getMediaLayoutID() {
try
{
short[] arr = new short[_struct.iIDCount];
for (int i = 0; i < _struct.iIDCount; i++)
{
Pointer current = new Memory(_struct.lpMediaLayoutID.getLong(0) + (2 * i));
arr[i] = Global_MEDIA_EPDM.epdm_mediaLayoutRange_short.get(current.getInt(0));
}
return arr;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] MediaTypeRange;
public EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] getMediaTypeRange() {
try
{
EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] arr = new EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[_struct.iMediaTypeCount];
int struct_size = 22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8;
for (int i = 0; i < _struct.iMediaTypeCount; i++)
{
Pointer current = new Memory(_struct.lpMediaTypeRange.getInt(0) + (struct_size) * i);
arr[i] = Global_MEDIA_EPDM.epdm_mediatyperangeMap.get(current.getInt(0));
}
return arr;
}
catch (Exception e)
{
// Error handling.
System.out.println(e.getMessage());
}
return MediaTypeRange;
}
public EPDMMediaLayoutRange() {
int struct_size = 24;
_ptrToStruct = new Memory(struct_size);
_struct = new EPDM_MEDIALAYOUTRANGE(_ptrToStruct);
_struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIALAYOUTRANGE.getI();
_struct.dwSize = struct_size;
_struct.iIDCount = 0;
_struct.iMediaTypeCount = 0;
_struct.lpMediaLayoutID = new Memory(10);
_struct.lpMediaTypeRange = new Memory(10);
_struct.iMaxString = 0;
_struct.iMaxCount = 0;
StructureToPtr();
PtrToStructure();
}
@Override
public void PtrToStructure() {
_struct.read();
_struct = Global_MEDIA_EPDM.epdm_medialayoutrangeMap.get(_ptrToStruct.getInt(0));
}
@Override
public void StructureToPtr() {
_struct.write();
Global_MEDIA_EPDM.epdm_medialayoutrangeMap.put(_ptrToStruct.getInt(0),_struct);
}
public void Alloc()
{
try
{
// iIDCount、iMediaTypeCount = 0 is EPDM_ERR_FAIL.
if (_struct.iIDCount == 0 || _struct.iMediaTypeCount == 0)
{
throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL);
}
// Free the memory.
Native.free(Pointer.nativeValue(_struct.lpMediaLayoutID));
Native.free(Pointer.nativeValue(_struct.lpMediaTypeRange));
_struct.lpMediaLayoutID = new Memory(_struct.iIDCount * Short.SIZE / 8);
int sizeOfEPDM_MEDIATYPERANGE = (22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8);
_struct.lpMediaTypeRange = new Memory(_struct.iMediaTypeCount *sizeOfEPDM_MEDIATYPERANGE ).getPointer(0);
EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] epdmMediaTypeRange = new EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[_struct.iMediaTypeCount];
for (int i = 0; i < _struct.iMediaTypeCount; i++)
{
Pointer current = new Memory(_ptrToStruct.getLong(0) + (sizeOfEPDM_MEDIATYPERANGE * i));
epdmMediaTypeRange[i] = Global_MEDIA_EPDM.epdm_mediatyperangeMap.get(current.getInt(0));
epdmMediaTypeRange[i].dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIATYPERANGE.getI();
epdmMediaTypeRange[i].dwSize = (22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8);
Pointer current2 = new Memory(_struct.lpMediaTypeRange.getLong(0) + (sizeOfEPDM_MEDIATYPERANGE * i));
Global_MEDIA_EPDM.epdm_mediatyperangeMap.put(current2.getInt(0),epdmMediaTypeRange[i]);
}
}
catch (Exception e)
{
// Error handling.
System.out.println(e.getMessage());
}
}
public int GetMediaTypeIndex(EPDMEnumrations.MediaTypeID mediaTypeID)
{
try
{
int i = -1;
if (_struct.iMediaTypeCount <= 0)
{
return i;
}
for (i = 0; i < _struct.iMediaTypeCount; i++)
{
short typeID = MediaTypeRange[i].iTypeID;
if (typeID == mediaTypeID.getI())
{
break;
}
}
return i;
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}

125
src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaTypeRange.java

@ -0,0 +1,125 @@
package com.dreamchaser.depository_manage.EPSON.EPDM;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.xml.bind.v2.runtime.MarshallerImpl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class EPDMMediaTypeRange extends EPDM {
@Override
public void PtrToStructure() {
_struct.read();
_struct = Global_MEDIA_EPDM.epdm_mediatyperangeMap.get(_ptrToStruct.getInt(0));
}
@Override
public void StructureToPtr() {
_struct.write();
Global_MEDIA_EPDM.epdm_mediatyperangeMap.put(_ptrToStruct.getInt(0),_struct);
}
public class EPDM_MEDIATYPERANGE extends Structure
{
public int dwVersion;
public int dwSize;
public short iMaxPaperWid;
public short iMaxPaperHig;
public short iMaxLabelWid;
public short iMaxLabelHig;
public short iMaxLabelGap;
public short iMaxBMGap;
public short iMaxPrintWid;
public short iMaxPrintHig;
public short iMaxPrintX;
public short iMaxPrintY;
public short iMinPaperWid;
public short iMinPaperHig;
public short iMinLabelWid;
public short iMinLabelHig;
public short iMinLabelGap;
public short iMinBMGap;
public short iMinPrintWid;
public short iMinPrintHig;
public short iMinPrintX;
public short iMinPrintY;
public short iTypeID;
public short iRsv;
@Override
protected List<String> getFieldOrder() {
return new ArrayList<>(Arrays.asList("dwVersion", "dwSize", "iMaxPaperWid", "iMaxPaperHig", "iMaxLabelWid", "iMaxLabelHig",
"iMaxLabelGap", "iMaxBMGap","iMaxPrintWid","iMaxPrintHig","iMaxPrintX","iMaxPrintY","iMinPaperWid","iMinPaperHig",
"iMinLabelWid","iMinLabelHig","iMinLabelGap","iMinBMGap","iMinPrintWid","iMinPrintHig","iMinPrintX","iMinPrintY",
"iTypeID","iRsv"));
}
public EPDM_MEDIATYPERANGE() {
}
public EPDM_MEDIATYPERANGE(Pointer p) {
super(p);
}
};
private boolean _disposed = false;
public EPDM_MEDIATYPERANGE _struct;
public short MaxPaperWid;
public short getMaxPaperWid() {
return _struct.iMaxPaperWid;
}
public short MaxPaperHig;
public short getMaxPaperHig() {
return _struct.iMaxPaperHig;
}
public EPDMMediaTypeRange()
{
int struct_size = 22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8;
_ptrToStruct =new Memory(struct_size );
_struct = new EPDM_MEDIATYPERANGE(_ptrToStruct);
_struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIATYPERANGE.getI();
_struct.dwSize = struct_size;
_struct.iMaxPaperWid = 0;
_struct.iMaxPaperHig = 0;
_struct.iMaxLabelWid = 0;
_struct.iMaxLabelHig = 0;
_struct.iMaxLabelGap = 0;
_struct.iMaxBMGap = 0;
_struct.iMaxPrintWid = 0;
_struct.iMaxPrintHig = 0;
_struct.iMaxPrintX = 0;
_struct.iMaxPrintY = 0;
_struct.iMinPaperWid = 0;
_struct.iMinPaperHig = 0;
_struct.iMinLabelWid = 0;
_struct.iMinLabelHig = 0;
_struct.iMinLabelGap = 0;
_struct.iMinBMGap = 0;
_struct.iMinPrintWid = 0;
_struct.iMinPrintHig = 0;
_struct.iMinPrintX = 0;
_struct.iMinPrintY = 0;
_struct.iTypeID = EPDMEnumrations.MediaTypeID.EPDM_MEDIATYPE_DIECUT.getI();
_struct.iRsv = 0;
StructureToPtr();
PtrToStructure();
}
}

151
src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMSelectData.java

@ -0,0 +1,151 @@
package com.dreamchaser.depository_manage.EPSON.EPDM;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.dreamchaser.depository_manage.exception.MyException;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class EPDMSelectData extends EPDM{
@Override
public void PtrToStructure() {
_struct.read();
_struct = Global_MEDIA_EPDM.epdm_selectdataMap.get(_ptrToStruct.getInt(0));
}
@Override
public void StructureToPtr() {
_struct.write();
Global_MEDIA_EPDM.epdm_selectdataMap.put(_ptrToStruct.getInt(0),_struct);
}
public static class EPDM_SELECTDATA extends Structure
{
public short iCount;
public short iSize;
public Pointer lpData;
@Override
protected List<String> getFieldOrder() {
return new ArrayList<>(Arrays.asList("iCount", "iSize", "lpData"));
}
public EPDM_SELECTDATA(Pointer p) {
super(p);
}
public EPDM_SELECTDATA() {
}
};
private boolean _disposed = false;
private EPDM_SELECTDATA _struct;
public short Count;
public Long[] Data;
public short getCount() {
return _struct.iCount;
}
public Long[] getData() {
try
{
if (_struct.lpData == Pointer.NULL || _struct.iSize > Long.SIZE / 8)
{
return null;
}
Long[] arr = new Long[_struct.iCount];
for (int i = 0; i < _struct.iCount; i++)
{
Pointer current = new Memory(_struct.lpData.getLong(0) + (_struct.iSize * i));
arr[i] = GetSelectData(current);
}
return arr;
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
public EPDMSelectData()
{
_ptrToStruct = new Memory(Short.SIZE / 8 * 2);
_struct.iCount = 0;
_struct.iSize = 0;
_struct.lpData = new Memory(10);
StructureToPtr();
PtrToStructure();
}
private Long GetSelectData(Pointer p)
{
try
{
Long data = 0L;
switch (_struct.iSize)
{
case 8:
data = Global_MEDIA_EPDM.epdm_select_data_int64.get(p.getInt(0));
break;
case 4:
data = Long.valueOf(Global_MEDIA_EPDM.epdm_select_data_int32.get(p.getInt(0)));
break;
case 2:
default:
data = Long.valueOf(Global_MEDIA_EPDM.epdm_select_data_int16.get(p.getInt(0)));
break;
}
return data;
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
public void Alloc()
{
try
{
// iIDCount、iSize = 0 is EPDM_ERR_FAIL.
if (_struct.iCount == 0 || _struct.iSize == 0)
{
throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL);
}
// Free the memory.
Native.free(Pointer.nativeValue(_struct.lpData));
// Allocate the memory. - EPDMSelectData.lpData
_struct.lpData =new Memory(_struct.iCount * _struct.iSize);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}

150
src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMString.java

@ -0,0 +1,150 @@
package com.dreamchaser.depository_manage.EPSON.EPDM;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.dreamchaser.depository_manage.exception.MyException;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.media.jfxmedia.track.Track;
import jdk.nashorn.internal.objects.Global;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
public class EPDMString extends EPDM {
public class EPDM_STRING_1 extends Structure
{
public int dwVersion;
public int dwSize;
public int dwStrSize;
public int dwCommand;
public int dwID;
public Pointer lpString;
@Override
protected List<String> getFieldOrder() {
return new ArrayList<>(Arrays.asList("dwVersion", "dwSize", "dwStrSize", "dwCommand", "dwID", "lpString"));
}
public EPDM_STRING_1() {
}
public EPDM_STRING_1(Pointer p) {
super(p);
}
};
private boolean _disposed = false;
private EPDM_STRING_1 _struct;
public int Command;
public int getCommand() {
return _struct.dwCommand;
}
public void setCommand(int command) {
_struct.dwCommand = command;
}
public int ID;
public int getID() {
return _struct.dwID;
}
public void setID(int ID) {
_struct.dwID = ID;
}
public String string;
public String getString() {
byte[] StringData = new byte[_struct.dwStrSize];
// Deploy the memory to array.
int i = 0;
for (i = 0; i < _struct.dwStrSize; i++)
{
Pointer current = new Memory(_struct.lpString.getLong(0) + i);
// StringData[i]= current.getByte(0);
StringData[i] = Global_MEDIA_EPDM.epdm_epdmString_byte.get(current.getInt(0));
if (StringData[i] == 0)
{
break;
}
}
try {
return new String(StringData,"gbk");
} catch (UnsupportedEncodingException e) {
throw new MyException(e.getMessage());
}
}
public EPDMString()
{
int structSize = 5 * Integer.SIZE / 8;
_ptrToStruct = new Memory( structSize );
_struct = new EPDM_STRING_1(_ptrToStruct);
_struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_STRING_1.getI();
_struct.dwSize = structSize;
_struct.dwStrSize = 0;
_struct.dwCommand = 0;
_struct.dwID = 0;
_struct.lpString = new Memory(10);
StructureToPtr();
PtrToStructure();
}
@Override
public void PtrToStructure() {
_struct.read();
_struct = Global_MEDIA_EPDM.epdm_string_1Map.get(_ptrToStruct.getInt(0));
}
@Override
public void StructureToPtr() {
_struct.write();
Global_MEDIA_EPDM.epdm_string_1Map.put(_ptrToStruct.getInt(0),_struct);
}
public void Alloc()
{
try
{
// m_Struct.dwStrSize == 0 is EPDM_ERR_FAIL.
if (_struct.dwStrSize == 0)
{
throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL);
}
// Free the memory.
Native.free(Pointer.nativeValue(_struct.lpString));
// Allocate the memory. - EPDMString.lpString
_struct.lpString =new Memory((int)_struct.dwStrSize);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}

301
src/main/java/com/dreamchaser/depository_manage/EPSON/Other/MessageString.java

@ -0,0 +1,301 @@
package com.dreamchaser.depository_manage.EPSON.Other;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations.StatusCode;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.service.impl.EPSON.ENS.ENSWrapperImpl;
public class MessageString {
public static final int STATE_ENS_ERROR = 1;
public static final int STATE_MEDIA_LAYOUT_ERROR = 2;
public static final int STATE_MEDIA_POSITION_ERROR = 3;
public static final int STATE_PRINT_SETTING_ERROR = 4;
public static final int STATE_EPDI_DLL_NOT_FOUND = 5;
public static final int STATE_ENS_DLL_NOT_FOUND = 6;
public static final int STATE_DRIVER_NOT_FOUND = 7;
public static final int STATE_SYSTEM_PARAM_ERROR = 8;
public static final int STATE_DRAWIMAGE_ERROR = 9;
public static final String STR_ENS_ERROR = "Can't get the printer status.\n\nEpsonNet SDK error code : ";
public static final String STR_MEDIA_LAYOUT_ERROR = "Fail to add the media layout.\r\n\r\nEPDI error code : ";
public static final String STR_MEDIA_POSITION_ERROR = "Fail to change the media position detection setting.\r\n\r\nEPDI error code : ";
public static final String STR_PRINT_SETTING_ERROR = "Fail to change the print settings.\r\n\r\nEPDI error code : ";
public static final String STR_STATUS_BUSY = "Printer is busy.\r\nStop the printing...";
public static final String STR_STATUS_PRINTING = "Printer is printing now.\r\nStop the printing...";
public static final String STR_STATUS_CLEANING = "Printer is cleaning the print head.\r\nStop the printing...";
public static final String STR_STATUS_OTHER = "Printer is busy.\r\nStop the printing...";
public static final String STR_ERROR_PAPERJAM = "Paper jam error.\r\nStop the printing...";
public static final String STR_ERROR_PAPEROUT = "Paper out error.\r\nStop the printing...";
public static final String STR_ERROR_INKEND = "Ink cartridge error.\r\nStop the printing...";
public static final String STR_ERROR_OTHER = "Other error.\r\nStop the printing...";
public static final String STR_WARNING_INKLOW = "Ink is low.\r\n";
public static final String STR_WARNING_OTHER = "Other warning.\r\n";
public static final String STR_EPDI_DLL_NOT_FOUND = "doesn't support this function.\r\nOr check if program architecture(x86/x64) and OS architecture are correct.";
public static final String STR_ENS_DLL_NOT_FOUND = "EpsonNet SDK isn't installed in this PC.\r\nPerfoming the printing without printer status check.";
public static final String STR_DRIVER_NOT_FOUND = "Epson printer doesn't exist. \r\n\r\nPlease install the printer driver before starting the sample program.";
public static final String STR_SYSTEM_PARAM_ERROR = "Specified value is out of range.";
public static final String STR_DRAWIMAGE_ERROR = "Failed to print image.";
public static boolean GetSDKError(int i, int state) {
boolean err = true;
String strMessage = "";
String strSDKErrorCode;
try {
if (i != ENSEnumrations.ENSErrorCode.ERR_BASE.getI()) {
strMessage = STR_ENS_ERROR;
err = false;
ENSEnumrations.ENSErrorCode ensErrorCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(i);
if (ensErrorCode != null) {
strSDKErrorCode = ensErrorCode.toString();
}
}
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
return err;
}
public static boolean GetEPDMError(int i, int state)
{
boolean err = true;
String strMessage = "";
String strEPDMErrorCode;
try
{
if (i != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL.getI())
{
switch(state)
{
case (STATE_MEDIA_LAYOUT_ERROR):
{
strMessage = STR_MEDIA_LAYOUT_ERROR;
err = false;
break;
}
case (STATE_MEDIA_POSITION_ERROR):
{
strMessage = STR_MEDIA_POSITION_ERROR;
err = false;
break;
}
case (STATE_PRINT_SETTING_ERROR):
{
strMessage = STR_PRINT_SETTING_ERROR;
err = false;
break;
}
default:
{
strMessage = "";
err = false;
break;
}
}
if (strMessage.length() > 0)
{
strEPDMErrorCode = EPDMEnumrations.EPDMErrorCode.valueOf(strMessage).toString();
}
}
}
catch (Exception e)
{
// Error handling.
}
return err;
}
public static boolean GetPrinterStatusError(ENSEnumrations.StatusCode sc, ENSEnumrations.ErrorCode ec, ENSWrapperImpl.WARNING_INFO wc)
{
boolean err = true;
String strMessage = "";
try
{
switch (sc)
{
case ST_Busy:
{
strMessage = STR_STATUS_BUSY;
err = false;
break;
}
case ST_Wait:
{
strMessage = STR_STATUS_PRINTING;
err = false;
break;
}
case ST_Cleaning:
{
strMessage = STR_STATUS_CLEANING;
err = false;
break;
}
case ST_Error:
{
switch (ec)
{
case ERR_PaperJam:
{
strMessage = STR_ERROR_PAPERJAM;
err = false;
break;
}
case ERR_Paperout:
{
strMessage = STR_ERROR_PAPEROUT;
err = false;
break;
}
case ERR_Inkout:
{
strMessage = STR_ERROR_INKEND;
err = false;
break;
}
default:
{
strMessage = STR_ERROR_OTHER;
err = false;
break;
}
}
break;
}
case ST_Idle:
{
if (wc.InkLowWarning )
{
strMessage += STR_WARNING_INKLOW;
err = true;
}
if (wc.OtherWarning)
{
strMessage += STR_WARNING_OTHER;
err = true;
}
break;
}
default:
{
strMessage = STR_STATUS_OTHER;
err = false;
break;
}
}
if (strMessage.length() > 0)
{
// MessageBox.Show((strMessage), "", MessageBoxButtons.OK);
// 弹出一个消息框,并返回结构
}
}
catch (Exception e)
{
// Error handling.
}
return err;
}
public static boolean GetSystemError(int state, String devName)
{
boolean err = true;
String strMessage = "";
if ( devName == null)
{
devName = "";
}
try
{
switch (state)
{
case (STATE_EPDI_DLL_NOT_FOUND):
{
strMessage = String.format("%s %s",devName, STR_EPDI_DLL_NOT_FOUND);
err = false;
break;
}
default:
{
strMessage = "";
err = false;
break;
}
}
if (strMessage.length() > 0)
{
// MessageBox.Show((strMessage), "", MessageBoxButtons.OK);
// 弹出一个文本信息框
}
}
catch (Exception e)
{
// Error handling.
}
return err;
}
public static boolean GetSystemError(int state)
{
boolean err = true;
String strMessage = "";
try
{
switch (state)
{
case (STATE_ENS_DLL_NOT_FOUND):
{
strMessage = STR_ENS_DLL_NOT_FOUND;
err = false;
break;
}
case (STATE_DRIVER_NOT_FOUND):
{
strMessage = STR_DRIVER_NOT_FOUND;
err = false;
break;
}
case (STATE_SYSTEM_PARAM_ERROR):
{
strMessage = STR_SYSTEM_PARAM_ERROR;
err = false;
break;
}
case (STATE_DRAWIMAGE_ERROR):
{
strMessage = STR_DRAWIMAGE_ERROR;
err = false;
break;
}
default:
{
strMessage = "";
err = false;
break;
}
}
if (strMessage.length() > 0)
{
// MessageBox.Show((strMessage), "", MessageBoxButtons.OK);
// 弹出一个文本信息框
}
}
catch (Exception e)
{
// Error handling.
}
return err;
}
}

125
src/main/java/com/dreamchaser/depository_manage/EPSON/Other/Print.java

@ -0,0 +1,125 @@
package com.dreamchaser.depository_manage.EPSON.Other;
import com.dreamchaser.depository_manage.exception.MyException;
import javax.print.PrintService;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.print.*;
public class Print {
private int _pageNumber = 0;
private int _totalPrintPage = 0;
private boolean _exceptionFlag = false;
private PrinterJob _pdPrint;
private void PD_PrintPage()
{
try
{
PD_PrintPage_DrawBarcode();
PD_PrintPage_Close();
}
catch (Exception e)
{
// Error handling.
_exceptionFlag = true;
}
}
public Print(String devName, String portName, int totalPrintPage)
{
try
{
// Create the PrintDocumentObject.
_pdPrint = PrinterJob.getPrinterJob();
// Add the PrintPageEventHandler.
// _pdPrint.PrintPage += new PrintPageEventHandler(PD_PrintPage);
// Set the using Printer.
PrintService[] printServices = PrinterJob.lookupPrintServices();
for (PrintService printService:printServices
) {
String name = printService.getName();
if(name.contains(devName)){
_pdPrint.setPrintService(printService);
break;
}
}
_pdPrint.setJobName("Test Print");
_totalPrintPage = totalPrintPage;
return;
}
catch(Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
public void DoPrinting()
{
try
{
// Start the print.
_pdPrint.print();
if(_exceptionFlag)
{
throw new Exception();
}
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
private void PD_PrintPage_DrawBarcode()
{
try
{
// 调用预设二维码打印类
_pdPrint.setPrintable(new PrintBarCode());
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
private void PD_PrintPage_Close()
{
try
{
// Check final page.
if (_pageNumber < _totalPrintPage)
{
_pdPrint.cancel();
}
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}

57
src/main/java/com/dreamchaser/depository_manage/EPSON/Other/PrintBarCode.java

@ -0,0 +1,57 @@
package com.dreamchaser.depository_manage.EPSON.Other;
import java.awt.*;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
public class PrintBarCode implements Printable {
/**
* @param graphics 指明打印的图形环境
* @param pageFormat 指明打印页格式页面大小以点为计量单位1点为1英才的1/721英寸为25.4毫米A4纸大致为595×842点
* @param pageIndex 指明页号
**/
// 设置用于打印的编码
public String code;
public void setCode(String code) {
this.code = code;
}
@Override
public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
//print string
String str = code;
//转换成Graphics2D
Graphics2D g2 = (Graphics2D) g;
//设置打印颜色为黑色
g2.setColor(Color.black);
//打印起点坐标
double x = pf.getImageableX();
double y = pf.getImageableY();
if (pageIndex == 0) {//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)
//Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput
Font font = new Font("Courier New", Font.PLAIN, 9);
g2.setFont(font);//设置字体
g2.drawString(code,20,100);
return PAGE_EXISTS;
}
return NO_SUCH_PAGE;
}
}

57
src/main/java/com/dreamchaser/depository_manage/EPSON/Other/SelectPrinterInfo.java

@ -0,0 +1,57 @@
package com.dreamchaser.depository_manage.EPSON.Other;
import com.alibaba.fastjson.JSONObject;
import com.profesorfalken.wmi4java.WMI4Java;
import org.apache.catalina.Manager;
import javax.print.PrintService;
import javax.print.attribute.PrintServiceAttributeSet;
import java.awt.*;
import java.awt.print.PrinterJob;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 用于实现打印机选择的类
*/
public class SelectPrinterInfo {
public static List<PRINTER_INFO> GetPrinterInfoList() {
//定义打印机信息列表
List<PRINTER_INFO> printerInfoList = new ArrayList<PRINTER_INFO>();
PRINTER_INFO printerInfo;
try {
// 获取本地所有打印机
List<Map<String, String>> wmiObjectListProperties = WMI4Java.get().getWMIObjectList("Win32_PRINTER");
for (Map<String,String> printer:wmiObjectListProperties
) {
printerInfo = new PRINTER_INFO();
// 获取设备名称
printerInfo.devName = printer.get("Name");
// 获取端口名称
printerInfo.portName =printer.get("PortName") ;
if (printerInfo.devName.contains("EPSON")){
printerInfoList.add(printerInfo);
}
}
return printerInfoList;
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
public static class PRINTER_INFO {
public String devName;
public String portName;
}
}

35
src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/ENSException.java

@ -0,0 +1,35 @@
package com.dreamchaser.depository_manage.EPSON.epsonException;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用于ENS的错误类
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ENSException extends Exception{
private static final long serialVersionUID = -2429062150745133718L;
/**
* 错误类型
*/
public ENSEnumrations.ENSErrorCode ensErrorCode;
public ENSEnumrations.ENSErrorCode getEnsErrorCode() {
return ensErrorCode;
}
public void setEnsErrorCode(ENSEnumrations.ENSErrorCode ensErrorCode) {
this.ensErrorCode = ensErrorCode;
}
public ENSException(ENSEnumrations.ENSErrorCode e)
{
ensErrorCode = e;
}
}

25
src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/EPDMException.java

@ -0,0 +1,25 @@
package com.dreamchaser.depository_manage.EPSON.epsonException;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用于EPDM的错误类
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class EPDMException extends Exception {
private static final long serialVersionUID = 6037874212969710082L;
/**
* 错误类型
*/
public EPDMEnumrations.EPDMErrorCode epdmErrorCode;
public EPDMException(EPDMEnumrations.EPDMErrorCode e)
{
epdmErrorCode = e;
}
}

22
src/main/java/com/dreamchaser/depository_manage/config/EPSON/ENS/Global_MEDIA_ENS.java

@ -0,0 +1,22 @@
package com.dreamchaser.depository_manage.config.EPSON.ENS;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSStatus;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Global_MEDIA_ENS {
/**
* 用于全局INKSIDMSTATUS_02中的实现
*/
public static Map<Integer, ENSStatus.INKSIDMSTATUS_02> integerINKSIDMSTATUS_02Map = new HashMap<>();
/**
* 用于存储ENS中出现要进行暂存的字符串
*/
public static Map<Integer,String> ENS_STRUCTURE_Str = new HashMap<>();
}

77
src/main/java/com/dreamchaser/depository_manage/config/EPSON/EPDM/Global_MEDIA_EPDM.java

@ -0,0 +1,77 @@
package com.dreamchaser.depository_manage.config.EPSON.EPDM;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaLayoutRange;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaTypeRange;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMSelectData;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMString;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.EPDMMediaLayoutInf;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT_RANGE;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Global_MEDIA_EPDM {
/**
* 用于全局MEDIA_LAYOUT_RANGE中的实现
*/
public static Map<Integer,MEDIA_LAYOUT_RANGE> media_layout_rangeMap = new HashMap<>();
/**
* 用于全局EPDMMediaLayoutRange的实现
*/
public static Map<Integer,EPDMMediaLayoutRange> epdmMediaLayoutRangeMap = new HashMap<>();
/**
* 用于全局EPDM_MEDIALAYOUTRANGE的实现
*/
public static Map<Integer, EPDMMediaLayoutRange.EPDM_MEDIALAYOUTRANGE> epdm_medialayoutrangeMap = new HashMap<>();
/**
*
* 用于全局EPDM_MEDIATYPERANGE的实现
*/
public static Map<Integer, EPDMMediaTypeRange.EPDM_MEDIATYPERANGE> epdm_mediatyperangeMap = new HashMap<>();
/**
* 用于全局EPDM_SELECTDATA的实现
*/
public static Map<Integer, EPDMSelectData.EPDM_SELECTDATA> epdm_selectdataMap = new HashMap<>();
/**
* 用于EPDMMediaLayoutRange中的PtrToStructure转short
*/
public static Map<Integer,Short> epdm_mediaLayoutRange_short = new HashMap<>();
/**
* 用于全局EPDM_STRING_1的实现
*/
public static Map<Integer, EPDMString.EPDM_STRING_1> epdm_string_1Map = new HashMap<>();
/**
* 用于EPDMSelectData中的使用
*/
public static List<Long> epdm_select_data_int64 = new ArrayList<>();
public static List<Integer> epdm_select_data_int32 = new ArrayList<>();
public static List<Short> epdm_select_data_int16 = new ArrayList<>();
/**
* 用于EPDMString中使用的byte
*/
public static Map<Integer,Byte> epdm_epdmString_byte = new HashMap<>();
/**
* 用于全局EPDM_MEDIALAYOUTINF的实现
*/
public static Map<Integer, EPDMMediaLayoutInf.EPDM_MEDIALAYOUTINF> epdm_medialayoutinfMap = new HashMap<>();
}

2
src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java

@ -18,7 +18,7 @@ import java.util.List;
import java.util.Map;
/**
* 用于
* 用于对接HR系统
*/
@Data
public class PortConfig {

102
src/main/java/com/dreamchaser/depository_manage/controller/EPSON/AddMediaLayoutDlg.java

@ -0,0 +1,102 @@
package com.dreamchaser.depository_manage.controller.EPSON;
import com.dreamchaser.depository_manage.EPSON.Other.MessageString;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT_RANGE;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl;
public class AddMediaLayoutDlg {
private String _devName;
private String _portName;
private boolean _isEPDMOpen = true;
public AddMediaLayoutDlg(String devName, String portName)
{
_devName = devName;
_portName = portName;
}
public void AddMediaLayoutDlg_Load()
{
try
{
EPDMWrapperImpl.GetInstance().Open(_devName, _portName);
UpdateMediaLayoutRangeString();
} catch (Exception e)
{
// Error handling.
ExceptionClose();
}
}
/**
* 这是更新媒体布局范围字符串的方法
*/
private void UpdateMediaLayoutRangeString() {
MEDIA_LAYOUT_RANGE obj = EPDMWrapperImpl.GetInstance().GetMediaLayoutRangeValue();
GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinPaperWid), MediaLayoutRangeToString(obj.MaxPaperWid));
GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinLabelWid), MediaLayoutRangeToString(obj.MaxLabelWid));
GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinLabelHig), MediaLayoutRangeToString(obj.MaxLabelHig));
GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinLabelGap), MediaLayoutRangeToString(obj.MaxLabelGap));
}
/**
* 这是获取媒体布局范围字符串的方法
* @param minRangeString 最小范围字符串
* @param maxRangeString 最大范围字符串
* @return
*/
private String GetMediaLayoutRangeString(String minRangeString, String maxRangeString) {
try {
String rangeString = "";
if (minRangeString.length() > 0 && maxRangeString.length() > 0) {
rangeString = "( " + minRangeString + " - " + maxRangeString + " )";
}
return rangeString;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是将媒体布局范围值更改为字符串的方法
*
* @param size 介质布局范围值(0.1mm单位)
* @return
*/
private String MediaLayoutRangeToString(double size) {
try {
// Changed the size. (0.1mm to mm)
double d = size / 10;
return String.format("%01f", d);
} catch (Exception e) {
// Error handling.
ExceptionClose();
throw new MyException(e.getMessage());
}
}
/**
* 这是关闭应用的方法
*/
private void ExceptionClose() {
EPDMClose();
}
/**
* 这是用于关闭的方法
*/
private void EPDMClose() {
if (_isEPDMOpen) {
EPDMWrapperImpl.GetInstance().Close();
}
}
}

80
src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintDlg.java

@ -0,0 +1,80 @@
package com.dreamchaser.depository_manage.controller.EPSON;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations;
import com.dreamchaser.depository_manage.EPSON.Other.MessageString;
import com.dreamchaser.depository_manage.EPSON.Other.Print;
import com.dreamchaser.depository_manage.EPSON.epsonException.ENSException;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.service.impl.EPSON.ENS.ENSWrapper;
import com.dreamchaser.depository_manage.service.impl.EPSON.ENS.ENSWrapperImpl;
public class PrintDlg {
private String _devName;
private String _portName;
private boolean _isENSInitialize = true;
/**
* 这是PrintDlg的构造函数
*
* @param devName 选中的打印机的设备名称
* @param portName 选中的打印机的端口名称
*/
public PrintDlg(String devName, String portName) {
_devName = devName;
_portName = portName;
}
/**
* 获取打印机状态和打印动作
*/
private void PrintButton_Click() {
ENSWrapperImpl obj = ENSWrapperImpl.GetInstance();
// 获取打印数量
int printPage = 1;
try {
try {
obj.Initialize(_devName, _portName);
} catch (Exception e) {
throw new MyException(e.getMessage());
}
if (_isENSInitialize) {
ENSEnumrations.StatusCode sc = obj.GetStatusInformation();
ENSEnumrations.ErrorCode ec = obj.GetErrorInformation();
ENSWrapperImpl.WARNING_INFO wc = obj.GetWarningInformation();
if (!MessageString.GetPrinterStatusError(sc, ec, wc)) {
return;
}
}
Print print = new Print(_devName, _portName, printPage);
print.DoPrinting();
} catch (Exception e) {
// Error handling.
ExceptionClose();
} finally {
ENSClose();
}
}
private void ENSClose() {
if (_isENSInitialize) {
try {
ENSWrapperImpl.GetInstance().Release();
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
}
/// <summary>
/// This is the method that close application.
/// </summary>
private void ExceptionClose() {
ENSClose();
}
}

279
src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintSettingsDlg.java

@ -0,0 +1,279 @@
package com.dreamchaser.depository_manage.controller.EPSON;
import com.dreamchaser.depository_manage.EPSON.Other.MessageString;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_TYPE;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.PRINT_QUALITY;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapper;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PrintSettingsDlg {
private List<MEDIA_LAYOUT> _mediaLayoutList;
private List<MEDIA_TYPE> _mediaTypeList;
private List<PRINT_QUALITY> _printQualityList;
private String _devName;
private String _portName;
private boolean _isEPDMOpen = true;
/**
* 这是PrintSettingsDlg的构造函数
* @param devName
* @param portName
*/
public PrintSettingsDlg(String devName, String portName)
{
_devName = devName;
_portName = portName;
}
/**
* 初始化加载方法
*/
public Map<String,List<String>> PrintSettings_Load()
{
try
{
EPDMWrapperImpl.GetInstance().Open(_devName, _portName);
List<String> StrMediaLayoutList = UpdateMediaLayoutComboBox();
List<String> StrMediaTypeList = UpdateMediaTypeComboBox();
List<String> StrPrintQualityList = UpdatePrintQualityComboBox();
Map<String,List<String>> listMap = new HashMap<>();
listMap.put("StrMediaLayoutList",StrMediaLayoutList);
listMap.put("StrMediaTypeList",StrMediaTypeList);
listMap.put("StrPrintQualityList",StrPrintQualityList);
return listMap;
}
catch (Exception e)
{
// Error handling.
ExceptionClose();
throw new MyException(e.getMessage());
}
}
/**
* 这是在MediaTypeComboBox更改操作上实现更新打印质量列表的事件处理程序
*/
private void MediaTypeComboBox_SelectedIndexChanged()
{
try
{
EPDMWrapperImpl obj = EPDMWrapperImpl.GetInstance();
// int index = MediaTypeComboBox.SelectedIndex;
int index = 1; // 获取选中的数据的下标
obj.SetMediaType(_mediaTypeList.get(index).getMediaTypeID());
// 同时获取输出index
_printQualityList = obj.GetPrintQualityList(index);
if (_printQualityList == null)
{
return;
}
List<String> StrPrintQualityList = new ArrayList<>();
// PrintQualityComboBox.Items.Clear();
for (PRINT_QUALITY printQuality : _printQualityList)
{
StrPrintQualityList.add(printQuality.getStrPrintQuality());
// PrintQualityComboBox.Items.Add(printQuality.StrPrintQuality);
// this.Controls.Add(PrintQualityComboBox);
}
// 设置选中的下标
// PrintQualityComboBox.SelectedIndex = index;
} catch (Exception ep)
{
// Error handling.
ExceptionClose();
}
}
private void ApplyButton_Click()
{
EPDMWrapperImpl obj = EPDMWrapperImpl.GetInstance();
try
{
int index = 0;
// index为选中的媒体布局下标
// index = MediaLayoutComboBox.SelectedIndex;
obj.SetMediaLayout(_mediaLayoutList.get(index).getMediaLayoutID());
// index为选中的媒体类型下标
// index = MediaTypeComboBox.SelectedIndex;
obj.SetMediaType(_mediaTypeList.get(index).getMediaTypeID());
//
// index为选中的打印质量下标
// index = PrintQualityComboBox.SelectedIndex;
if (index >= 0)
{
// 如果选中的大于0
obj.SetPrintQuality(_printQualityList.get(index).getPrintQualityID());
}
else
{
// 否则设置为将打印质量设置为不可用
// PrintQualityComboBox.Enabled = false;
}
obj.UpdateDevMode();
} catch (Exception e)
{
// Error handling.
ExceptionClose();
}
finally
{
EPDMClose();
}
}
/**
* 这是更新打印质量组合框列表的方法
*/
private List<String> UpdatePrintQualityComboBox()
{
// 用于保存当前打印质量
List<String> StrPrintQualityList = new ArrayList<>();
try
{
Integer index = 0;
_printQualityList = EPDMWrapperImpl.GetInstance().GetPrintQualityList( index);
if (_printQualityList == null)
{
return null;
}
for (PRINT_QUALITY printQuality : _printQualityList)
{
StrPrintQualityList.add(printQuality.getStrPrintQuality());
}
return StrPrintQualityList;
// index 是选中的打印质量
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是更新媒体类型组合框列表的方法
*/
private List<String> UpdateMediaTypeComboBox()
{
try
{
int index = 0;
_mediaTypeList = EPDMWrapperImpl.GetInstance().GetMediaTypeList(index);
if (_mediaTypeList == null)
{
return null;
}
List<String> StrMediaTypeList = new ArrayList<>();
for (MEDIA_TYPE mediaType : _mediaTypeList)
{
// MediaTypeComboBox.Items.Add(mediaType.StrMediaType);
// this.Controls.Add(MediaTypeComboBox);
StrMediaTypeList.add(mediaType.getStrMediaType());
}
return StrMediaTypeList;
// MediaTypeComboBox.SelectedIndex = index;
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是更新媒体布局组合框列表的方法
*/
private List<String> UpdateMediaLayoutComboBox()
{
try
{
int index = 0;
_mediaLayoutList = EPDMWrapperImpl.GetInstance().GetMediaLayoutList(index);
if (_mediaLayoutList == null)
{
return null;
}
List<String> StrMediaLayoutList = new ArrayList<>();
for (MEDIA_LAYOUT mediaLayout : _mediaLayoutList)
{
StrMediaLayoutList.add(mediaLayout.getStrMediaLayout());
}
// index是选中的下标
return StrMediaLayoutList;
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是关闭PrintSettingsDlg的方法
*/
private void EPDMClose()
{
if (_isEPDMOpen)
{
try
{
EPDMWrapperImpl.GetInstance().Close();
} catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}
/**
* 这是关闭对话的方法
*/
private void ExceptionClose()
{
EPDMClose();
}
}

80
src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrinterIndexDlg.java

@ -0,0 +1,80 @@
package com.dreamchaser.depository_manage.controller.EPSON;
import com.dreamchaser.depository_manage.EPSON.Other.MessageString;
import com.dreamchaser.depository_manage.EPSON.Other.SelectPrinterInfo;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.utils.CrudUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/Epson")
public class PrinterIndexDlg {
private List<SelectPrinterInfo.PRINTER_INFO> _printerInfoList;
private PrintSettingsDlg printSettingsDlg;
/**
* 用于获取当前电脑的爱普生打印机列表
* @return
*/
@PostMapping("/GetPrinterInfoList")
public RestResponse GetPrinterInfoList(){
try {
List<String> list = new ArrayList<>();
_printerInfoList = SelectPrinterInfo.GetPrinterInfoList();
if (_printerInfoList.size() == 0) {
MessageString.GetSystemError(MessageString.STATE_DRIVER_NOT_FOUND);
return new RestResponse(null);
} else {
for (SelectPrinterInfo.PRINTER_INFO printerInfo : _printerInfoList)
{
list.add(printerInfo.devName);
}
}
return new RestResponse(list);
}catch (Exception e){
throw new MyException(e.getMessage());
}
}
/**
* 用于初始化打印机设置页面
* @param map 选中的打印机
* @return
*/
@PostMapping("/PrintSettingLoad")
public RestResponse PrintSettingLoad(@RequestBody Map<String,Object> map){
if(map.containsKey("index")){
Integer index = ObjectFormatUtil.toInteger(map.get("index"));
printSettingsDlg = new PrintSettingsDlg(_printerInfoList.get(index).devName,_printerInfoList.get(index).portName);
return new RestResponse(200);
}else{
throw new MyException("缺少必要参数");
}
}
/**
* 用于初始化打印机设置页面中的列表
* @return
*/
@PostMapping("/updatePrintSettingPage")
public RestResponse updatePrintSettingPage(){
Map<String, List<String>> listMap = printSettingsDlg.PrintSettings_Load();
return new RestResponse(listMap);
}
}

99
src/main/java/com/dreamchaser/depository_manage/controller/EPSON/SetRollPaperDlg.java

@ -0,0 +1,99 @@
package com.dreamchaser.depository_manage.controller.EPSON;
import com.dreamchaser.depository_manage.EPSON.Other.MessageString;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_POSITION;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl;
import java.util.ArrayList;
import java.util.List;
public class SetRollPaperDlg {
private List<MEDIA_POSITION> _mediaPositionList;
private String _devName;
private String _portName;
private boolean _isEPDMOpen = true;
public SetRollPaperDlg(String _devName, String _portName) {
this._devName = _devName;
this._portName = _portName;
}
/**
* 这是加载时的方法
*/
private void SetRollPaperDlg_Load(){
try
{
EPDMWrapperImpl.GetInstance().Open(_devName, _portName);
UpdateMediaPositionComboBox();
} catch (Exception e)
{
// Error handling.
ExceptionClose();
}
}
/**
* 这是更新媒体位置组合框列表的方法
*/
private void UpdateMediaPositionComboBox(){
List<String> strMediaPositionList = new ArrayList<>();
try
{
Integer index = 0;
_mediaPositionList = EPDMWrapperImpl.GetInstance().GetMediaPositionList(index);
if (_mediaPositionList == null)
{
return;
}
for (MEDIA_POSITION mediaPosition : _mediaPositionList)
{
strMediaPositionList.add(mediaPosition.StrMediaPosition);
}
// 最终选中
// MediaPositionComboBox.SelectedIndex = index;
} catch (Exception e)
{
// Error handling.
ExceptionClose();
}
}
/**
* 这是用于关闭EPDM的方法
*/
private void EPDMClose()
{
if (_isEPDMOpen)
{
try
{
EPDMWrapperImpl.GetInstance().Close();
} catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}
/**
* 这是用于关闭的的方法
*/
private void ExceptionClose()
{
EPDMClose();
}
}

20
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -1349,8 +1349,8 @@ public class PageController {
Group group = groupService.findGroupOnlyById(applicationInRecordPById.getMid());
// 获取组合详情数据
List<GroupInfo> groupInfoList = groupService.findGroupInfoByGid(applicationInRecordPById.getMid());
mv.addObject("group",group);
mv.addObject("groupInfoList",groupInfoList);
mv.addObject("group", group);
mv.addObject("groupInfoList", groupInfoList);
mv.addObject("record", applicationInRecordPById);
mv.setViewName("pages/application/form-step-look_group");
}
@ -2112,8 +2112,8 @@ public class PageController {
param.put("version", mp.getVersion());
List<MaterialAndBarCode> materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param);
param.put("materialAndBarCodeList", materialByBarCodeByCondition);
param.put("splitList",splitInfoByMid);
param.put("unit",mp.getUnit());
param.put("splitList", splitInfoByMid);
param.put("unit", mp.getUnit());
String context = JSONObject.toJSONString(param);
materialList.add(context);
}
@ -2257,4 +2257,16 @@ public class PageController {
}
@GetMapping("/printCode")
public ModelAndView printCode(int mid) {
ModelAndView mv = new ModelAndView();
// 获取当前对应物料
Material materialById = materialService.findMaterialById(mid);
// 获取当前物料对应的码值
String qrCodeByMcode = materialService.findQrCodeByMcode(materialById.getCode());
mv.addObject("qrCode",qrCodeByMcode);
mv.setViewName("pages/JcPrinter/PrinterIndex");
return mv;
}
}

149
src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/EPDMMediaLayoutInf.java

@ -0,0 +1,149 @@
package com.dreamchaser.depository_manage.entity.EPSON.EPDM;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDM;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class EPDMMediaLayoutInf extends EPDM {
public class EPDM_MEDIALAYOUTINF extends Structure
{
public int dwVersion;
public int dwSize;
public short iPaperWid;
public short iPaperHig;
public short iLabelWid;
public short iLabelHig;
public short iLabelGap;
public short iBMGap;
public short iPrintWid;
public short iPrintHig;
public short iPrintX;
public short iPrintY;
public short iMediaTypeID;
public short iMediaLayoutID;
@Override
protected List<String> getFieldOrder() {
return new ArrayList<>(Arrays.asList("dwVersion","dwSize","iPaperWid","iPaperHig","iLabelWid","iLabelHig","iLabelGap","iBMGap"
,"iPrintWid","iPrintHig","iPrintX","iPrintY","iMediaTypeID","iMediaLayoutID"));
}
public EPDM_MEDIALAYOUTINF() {
}
public EPDM_MEDIALAYOUTINF(Pointer p) {
super(p);
}
};
public short PaperWid;
public short getPaperWid() {
return _struct.iPaperWid;
}
public void setPaperWid(short paperWid) {
_struct.iPaperWid = paperWid;
}
public short LabelWid;
public short getLabelWid() {
return _struct.iLabelWid;
}
public void setLabelWid(short labelWid) {
_struct.iLabelWid = labelWid;
}
public short LabelHig;
public short getLabelHig() {
return _struct.iLabelHig;
}
public void setLabelHig(short labelHig) {
_struct.iLabelHig = labelHig;
}
public short LabelGap;
public short getLabelGap() {
return _struct.iLabelGap;
}
public void setLabelGap(short labelGap) {
_struct.iLabelGap = labelGap;
}
public short MediaTypeID;
public short getMediaTypeID() {
return _struct.iMediaTypeID;
}
public void setMediaTypeID(short mediaTypeID) {
_struct.iMediaTypeID = mediaTypeID;
}
public short MediaLayoutID;
public short getMediaLayoutID() {
return _struct.iMediaLayoutID;
}
public void setMediaLayoutID(short mediaLayoutID) {
_struct.iMediaLayoutID = mediaLayoutID;
}
private boolean _disposed = false;
public EPDM_MEDIALAYOUTINF _struct;
public EPDMMediaLayoutInf()
{
int structSize = 12 * Short.SIZE / 8 + Integer.SIZE / 8 * 2;
_ptrToStruct = new Memory(structSize);
_struct = new EPDM_MEDIALAYOUTINF(_ptrToStruct);
_struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIALAYOUTINF.getI();
_struct.dwSize = structSize;
_struct.iPaperWid = 0;
_struct.iPaperHig = 0;
_struct.iLabelWid = 0;
_struct.iLabelHig = 0;
_struct.iLabelGap = 0;
_struct.iBMGap = 0;
_struct.iPrintWid = 0;
_struct.iPrintHig = 0;
_struct.iPrintX = 0;
_struct.iPrintY = 0;
_struct.iMediaTypeID = 0;
_struct.iMediaLayoutID = 0;
StructureToPtr();
PtrToStructure();
}
@Override
public void PtrToStructure() {
_struct.read();
_struct = Global_MEDIA_EPDM.epdm_medialayoutinfMap.get(_ptrToStruct.getInt(0));
}
@Override
public void StructureToPtr() {
_struct.write();
Global_MEDIA_EPDM.epdm_medialayoutinfMap.put(_ptrToStruct.getInt(0),_struct);
}
}

12
src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT.java

@ -0,0 +1,12 @@
package com.dreamchaser.depository_manage.entity.EPSON.EPDM;
import lombok.Data;
/**
*这是定义媒体布局信息的类
*/
@Data
public class MEDIA_LAYOUT {
public String StrMediaLayout;
public int MediaLayoutID;
}

18
src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java

@ -0,0 +1,18 @@
package com.dreamchaser.depository_manage.entity.EPSON.EPDM;
import lombok.Data;
/**
* 这是定义介质分布范围值的类
*/
@Data
public class MEDIA_LAYOUT_RANGE {
public short MinPaperWid;
public short MaxPaperWid;
public short MinLabelWid;
public short MaxLabelWid;
public short MinLabelHig;
public short MaxLabelHig;
public short MinLabelGap;
public short MaxLabelGap;
}

12
src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_POSITION.java

@ -0,0 +1,12 @@
package com.dreamchaser.depository_manage.entity.EPSON.EPDM;
import lombok.Data;
/**
* 这是定义媒体位置信息的类
*/
@Data
public class MEDIA_POSITION {
public String StrMediaPosition;
public int MediaPositionID;
}

12
src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_TYPE.java

@ -0,0 +1,12 @@
package com.dreamchaser.depository_manage.entity.EPSON.EPDM;
import lombok.Data;
/**
* 这是定义媒体类型信息的类
*/
@Data
public class MEDIA_TYPE {
public String StrMediaType;
public int MediaTypeID;
}

12
src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/PRINT_QUALITY.java

@ -0,0 +1,12 @@
package com.dreamchaser.depository_manage.entity.EPSON.EPDM;
import lombok.Data;
/**
* 这是定义打印质量信息的类
*/
@Data
public class PRINT_QUALITY {
public String StrPrintQuality;
public int PrintQualityID;
}

10
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -2060,12 +2060,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userIdByDid = roleService.findUserIdByDid(inventory.getDepositoryId());
// 用于保存仓库管理员的企业微信openid
StringBuilder QyWxUid = new StringBuilder();
for (int j = 0; j < userIdByDid.size(); j++) {
for (Integer integer : userIdByDid) {
// 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + userIdByDid.get(j), "minRecord");
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单
@ -2074,9 +2074,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userRecord.put("minRecord", minRecordList.toString());
}
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + userIdByDid.get(j), userRecord);
minRecordManage.append(userIdByDid.get(j)).append(",");
UserByPort userByPort = LinkInterfaceUtil.FindUserById(userIdByDid.get(j), userToken);
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
UserByPort userByPort = LinkInterfaceUtil.FindUserById(integer, userToken);
// QyWxUid.append(userByPort.getWorkwechat() + ",");
}
QyWxUid.append("PangFuZhen,");

36
src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapper.java

@ -0,0 +1,36 @@
package com.dreamchaser.depository_manage.service.impl.EPSON.ENS;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapper;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
public interface ENSWrapper extends Library {
String strLibrary = "C:/Program Files (x86)/EpsonNet/EpsonNetSDK/EpsonNetSDK";
// String strLibrary = "C://Program Files//EpsonNet//EpsonNetSDK//EpsonNetSDK.dll";
ENSWrapper instance = Native.load(strLibrary, ENSWrapper.class);
int ENSInitialize();
int ENSRelease();
int ENSGetDeviceID
(int PathType, String PrnPath,
Pointer IdBuff, int BuffLen,
int StructVersion);
int ENSOpenCommunication
(int PathType, String PrnPath,
Pointer IdBuff, Pointer PtrHandle);
int ENSCloseCommunication
(Pointer PtrHandle);
int ENSGetInformation
(Pointer PtrHandle, String Command,
Pointer GetParm, Pointer GetBuff,
int BuffLen);
}

253
src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapperImpl.java

@ -0,0 +1,253 @@
package com.dreamchaser.depository_manage.service.impl.EPSON.ENS;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations;
import com.dreamchaser.depository_manage.EPSON.ENS.ENSStatus;
import com.dreamchaser.depository_manage.EPSON.epsonException.ENSException;
import com.dreamchaser.depository_manage.config.EPSON.ENS.Global_MEDIA_ENS;
import com.dreamchaser.depository_manage.exception.MyException;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
public class ENSWrapperImpl {
/**
* 这是定义警告代码标志的类
*/
public class WARNING_INFO
{
public boolean InkLowWarning = false;
public boolean OtherWarning = false;
}
private static ENSWrapperImpl _singleton = new ENSWrapperImpl();
private String _devName, _portName;
private Pointer _ptrHandle;
private static final String INFO_COMMAND = "STATUS";
private ENSWrapperImpl()
{
}
public static ENSWrapperImpl GetInstance()
{
return _singleton;
}
/**
* 这个方法用于实现ENSInitialize.
* @param devName 所选打印机的设备名称
* @param portName 所选打印机的端口名称
*/
public void Initialize(String devName, String portName)
{
try
{
_devName = devName;
_portName = portName;
ENSEnumrations.ENSErrorCode errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSInitialize());
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE)
{
throw new ENSException(errCode);
}
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这个方法用于获取选中的打印机的状态
* @param structINKSIDM INKSIDMSTATUS_02 对象
*/
public void GetPrinterStatus(ENSStatus.INKSIDMSTATUS_02 structINKSIDM) {
Pointer ptrInt = Pointer.NULL;
Pointer ptrTemp = Pointer.NULL;
Pointer ptrGetBuff = Pointer.NULL;
try
{
// Handling of to call ENSGetDeviceID.
int buffLen = 0;
// ENSGetDeviceID 1st call. Get the required buffLen.
ENSEnumrations.ENSErrorCode errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetDeviceID(ENSEnumrations.ENSType.TYPE_PRINTER.getI(), _devName, Pointer.NULL, buffLen, 0x1));
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BUFFERSIZE)
{
throw new ENSException(errCode);
}
ptrTemp = new Memory(buffLen);
// ENSGetDeviceID 2nd call.
errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetDeviceID( ENSEnumrations.ENSType.TYPE_PRINTER.getI(), _devName, ptrTemp, buffLen, 0x1));
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE)
{
throw new ENSException(errCode);
}
// Handling of to call ENSOpenCommunication.
errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSOpenCommunication( ENSEnumrations.ENSType.TYPE_PRINTER.getI(), _devName, ptrTemp, _ptrHandle));
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE)
{
throw new ENSException(errCode);
}
// Get printer status information.
structINKSIDM = new ENSStatus.INKSIDMSTATUS_02();
String str = "STRUCTURE=INKSIDMSTATUS_02";
int random = (int) Math.random();
ptrInt = new Memory(random);
Global_MEDIA_ENS.ENS_STRUCTURE_Str.put(random,str);
// Handling of to call ENSGetInformation.
buffLen = 0;
// ENSGetInformation 1st call. Get the required buffLen.
errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetInformation(_ptrHandle, INFO_COMMAND, ptrInt, Pointer.NULL, buffLen));
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BUFFERSIZE)
{
throw new ENSException(errCode);
}
ptrGetBuff = new Memory(buffLen);
// ENSGetInformation 2nd call.
errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetInformation(_ptrHandle, INFO_COMMAND, ptrInt, ptrGetBuff, buffLen));
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE)
{
throw new ENSException(errCode);
}
// Get INKSIDMSTATUS_02 structure object.
// structINKSIDM = (ENSStatus.INKSIDMSTATUS_02)Marshal.PtrToStructure(ptrGetBuff, typeof(ENSStatus.INKSIDMSTATUS_02));
structINKSIDM = Global_MEDIA_ENS.integerINKSIDMSTATUS_02Map.get(ptrGetBuff.getInt(0));
//
// Handling of to call ENSCloseCommunication.
errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSCloseCommunication(_ptrHandle));
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE)
{
throw new ENSException(errCode);
}
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
finally
{
Native.free(Pointer.nativeValue(ptrTemp));
Native.free(Pointer.nativeValue(ptrInt));
Native.free(Pointer.nativeValue(ptrGetBuff));
}
}
/**
* 这个方法用于获取状态信息
* @return
*/
public ENSEnumrations.StatusCode GetStatusInformation()
{
try
{
ENSStatus.INKSIDMSTATUS_02 structINKSIDM = new ENSStatus.INKSIDMSTATUS_02();
GetPrinterStatus(structINKSIDM);
return ENSEnumrations.StatusCode.getStatusCode(structINKSIDM.StatusCode);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这个方法用于获取ErrorCode
* @return
*/
public ENSEnumrations.ErrorCode GetErrorInformation()
{
try
{
ENSStatus.INKSIDMSTATUS_02 structINKSIDM = new ENSStatus.INKSIDMSTATUS_02();
GetPrinterStatus( structINKSIDM);
return ENSEnumrations.ErrorCode.getErrorCode(structINKSIDM.ErrorCode);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获取WarningCode的方法
* 判断是否出现警告
* @return
*/
public WARNING_INFO GetWarningInformation()
{
try
{
ENSStatus.INKSIDMSTATUS_02 structINKSIDM = new ENSStatus.INKSIDMSTATUS_02();
GetPrinterStatus( structINKSIDM);
int awc = structINKSIDM.AvailableWarningCode2;
WARNING_INFO warningInfo = new WARNING_INFO();
if (awc != 0)
{
for (int i = 0; i < awc; i++)
{
if ((structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_B.getI()) ||
(structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_C.getI()) ||
(structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_M.getI()) ||
(structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_Y.getI()))
{
warningInfo.InkLowWarning = true;
}
else
{
warningInfo.OtherWarning = true;
}
}
}
return warningInfo;
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是实现ENSRelease的方法
*/
public void Release()
{
try
{
ENSEnumrations.ENSErrorCode errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSRelease());
if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE)
{
throw new ENSException(errCode);
}
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
}

35
src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapper.java

@ -0,0 +1,35 @@
package com.dreamchaser.depository_manage.service.impl.EPSON.EPDM;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
public interface EPDMWrapper extends Library {
String strLibrary = "C:/Windows/System32/spool/drivers/x64/3/E_BEPSET32";
// String strLibrary = "3/E_BEPSET32";
// String strLibrary = "\\3\\E_BEPSET32";
// String strLibrary = "C:/Windows/System32/spool/drivers/W32X86/3/E_BEPSET32.DLL";
EPDMWrapper instance = Native.load(strLibrary, EPDMWrapper.class);
IntByReference number = new IntByReference(0);
int EPDM_Open(String DevName, String PortName, int Type, Pointer DMAdd, Pointer PrnHandleAdd);
int EPDM_GetRange(Pointer PrnHandle, int Command, Pointer Param);
int EPDM_GetData(Pointer PrnHandle, int Command, Pointer Param);
int EPDM_SetData(Pointer PrnHandle, int Command, int Param);
int EPDM_AddData(Pointer PrnHandle, int Command, Pointer Param);
int EPDM_ImportData(Pointer PrnHandle, int Command, Pointer Param);
boolean EPDM_UpdateDevMode(Pointer PrnHandle);
boolean EPDM_Close(Pointer PrnHandle);
}

622
src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapperImpl.java

@ -0,0 +1,622 @@
package com.dreamchaser.depository_manage.service.impl.EPSON.EPDM;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaLayoutRange;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMSelectData;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMString;
import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException;
import com.dreamchaser.depository_manage.config.EPSON.ENS.Global_MEDIA_ENS;
import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.*;
import com.dreamchaser.depository_manage.exception.MyException;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import org.apache.commons.collections4.Get;
import org.apache.commons.math3.analysis.function.Add;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
/**
* 用于实现EPDMWrapper的方法
*/
public class EPDMWrapperImpl {
private static EPDMWrapperImpl _singleton = new EPDMWrapperImpl();
/*打印质量*/
private static String STR_PRINTQUALITY_360X180 = "360x180dpi";
private static String STR_PRINTQUALITY_360X360 = "360x360dpi";
private static String STR_PRINTQUALITY_720X360 = "720x360dpi";
private Pointer _ptrGetParm = new Memory(24);
public static EPDMWrapperImpl GetInstance() {
return _singleton;
}
/**
* 这是实现EpDMOpen的方法
*
* @param devName 所选打印机的设备名称
* @param portName 所选打印机的端口名称
*/
public void Open(String devName, String portName) {
try {
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_Open(devName, portName, 0, Pointer.NULL, _ptrGetParm));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
} catch (Exception e) {
throw new MyException(e.getMessage());
}
}
/**
* 这是获取MediaLayoutRange的最小值和最大值的方法
*
* @return 包含获取值的类
*/
public MEDIA_LAYOUT_RANGE GetMediaLayoutRangeValue() {
try {
EPDMMediaLayoutRange epdmMediaLayoutRange = GetMediaLayoutRange();
// Get the MediaLayoutRange value.
int index = epdmMediaLayoutRange.GetMediaTypeIndex(EPDMEnumrations.MediaTypeID.EPDM_MEDIATYPE_DIECUT);
MEDIA_LAYOUT_RANGE mediaLayoutRange = new MEDIA_LAYOUT_RANGE();
mediaLayoutRange.MinPaperWid = epdmMediaLayoutRange.MediaTypeRange[index].iMinPaperWid;
mediaLayoutRange.MaxPaperWid = epdmMediaLayoutRange.MediaTypeRange[index].iMaxPaperWid;
mediaLayoutRange.MinLabelWid = epdmMediaLayoutRange.MediaTypeRange[index].iMinLabelWid;
mediaLayoutRange.MaxLabelWid = epdmMediaLayoutRange.MediaTypeRange[index].iMaxLabelWid;
mediaLayoutRange.MinLabelHig = epdmMediaLayoutRange.MediaTypeRange[index].iMinLabelHig;
mediaLayoutRange.MaxLabelHig = epdmMediaLayoutRange.MediaTypeRange[index].iMaxLabelHig;
mediaLayoutRange.MinLabelGap = epdmMediaLayoutRange.MediaTypeRange[index].iMinLabelGap;
mediaLayoutRange.MaxLabelGap = epdmMediaLayoutRange.MediaTypeRange[index].iMaxLabelGap;
return mediaLayoutRange;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是用于实现EPDM_GetRange的方法
*
* @return EPDM_MEDIALAYOUTRANGE结构体
*/
public EPDMMediaLayoutRange GetMediaLayoutRange() {
try {
EPDMMediaLayoutRange epdmMediaLayoutRange = new EPDMMediaLayoutRange();
// EPDM_GetRange第一次调用。获取所需的内存大小。
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), epdmMediaLayoutRange.getStructurePointer()));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
System.out.println(errCode);
throw new EPDMException(errCode);
}
epdmMediaLayoutRange.PtrToStructure();
epdmMediaLayoutRange.Alloc();
Global_MEDIA_EPDM.epdmMediaLayoutRangeMap.put(_ptrGetParm.getInt(0), epdmMediaLayoutRange);
// 第二次调用EPDM_GetRange
errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), epdmMediaLayoutRange.getStructurePointer()));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
Global_MEDIA_EPDM.epdmMediaLayoutRangeMap.put(_ptrGetParm.getInt(0), epdmMediaLayoutRange);
return epdmMediaLayoutRange;
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
/**
* 这是实现EPDM_Close的方法
*/
public void Close() {
try {
if (!EPDMWrapper.instance.EPDM_Close(_ptrGetParm)) {
throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL);
}
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是创建媒体位置组合框列表的方法
*
* @param index 所选组合框序列的个数
* @return >媒体职位列表
*/
public List<MEDIA_POSITION> GetMediaPositionList(Integer index) {
try {
List<MEDIA_POSITION> mediaPositionList = new ArrayList<MEDIA_POSITION>();
MEDIA_POSITION mediaPosition;
// GetRange EPDM_CMD_MEDIAPOSITION
EPDMSelectData epdmSelectData = GetMediaPositionRange();
// GetData EPDM_CMD_MEDIAPOSITION & Get combo box index.
index = ArrayIndexOf(epdmSelectData.Data, GetMediaPositionID());
// GetData EPDM_CMD_STRING
for (int i = 0; i < epdmSelectData.Count; i++) {
String strData = GetString(EPDMEnumrations.StringID.EPDM_STRING_MEDIAPOSITION.getI(), epdmSelectData.Data[i].intValue());
// Add the mediapositionlist
mediaPosition = new MEDIA_POSITION();
mediaPosition.StrMediaPosition = strData;
mediaPosition.MediaPositionID = epdmSelectData.Data[i].intValue();
mediaPositionList.add(mediaPosition);
}
return mediaPositionList;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是创建媒体布局组合框列表的方法
*
* @param index 所选组合框序列的数目
* @return 媒体布局列表
*/
public List<MEDIA_LAYOUT> GetMediaLayoutList(Integer index) {
try {
List<MEDIA_LAYOUT> mediaLayoutList = new ArrayList<MEDIA_LAYOUT>();
MEDIA_LAYOUT mediaLayout;
// GetRange EPDM_CMD_MEDIALAYOUT
EPDMMediaLayoutRange epdmMediaLayoutRange = GetMediaLayoutRange();
// GetData EPDM_CMD_MEDIALAYOUT & Get combo box index.
index = ArrayIndexOfForShort(epdmMediaLayoutRange.MediaLayoutID, GetMediaLayoutID());
// GetData EPDM_CMD_STRING
for (int i = 0; i < epdmMediaLayoutRange.IDCount; i++) {
String strData = GetString(EPDMEnumrations.StringID.EPDM_STRING_MEDIALAYOUT.getI(), epdmMediaLayoutRange.MediaLayoutID[i]);
//  Add the mediaLayoutlist
mediaLayout = new MEDIA_LAYOUT();
mediaLayout.StrMediaLayout = strData;
mediaLayout.MediaLayoutID = (int) epdmMediaLayoutRange.MediaLayoutID[i];
mediaLayoutList.add(mediaLayout);
}
return mediaLayoutList;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获取当前媒体布局ID的方法
*
* @return 媒体布局id
*/
public short GetMediaLayoutID() {
try {
EPDMMediaLayoutInf epdmMeiaLayoutInf = new EPDMMediaLayoutInf();
// GetData EPDM_CMD_mediaLayout
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), epdmMeiaLayoutInf.StructurePointer));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
epdmMeiaLayoutInf.PtrToStructure();
short mediaLayoutID = epdmMeiaLayoutInf.MediaLayoutID;
return mediaLayoutID;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获取媒体位置范围的方法
*
* @return EPDM_CMD_MEDIAPOSITION的数据结构对象EPDM_SelectData
*/
public EPDMSelectData GetMediaPositionRange() {
try {
return GetSelectDataRange(EPDMEnumrations.Command.EPDM_CMD_MEDIAPOSITION);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获取当前媒体位置检测设置ID的方法
*
* @return >媒体位置检测设置ID
*/
public short GetMediaPositionID() {
try {
return GetShortData(EPDMEnumrations.Command.EPDM_CMD_MEDIAPOSITION);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是设置媒体布局的方法
* @param mediaLayoutID 所选媒体布局ID
*/
public void SetMediaLayout(int mediaLayoutID)
{
try
{
SetData(EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), mediaLayoutID);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是创建媒体类型组合框列表的方法
* @param index 所选组合框序列的个数
* @return 媒体类型列表
*/
public List<MEDIA_TYPE> GetMediaTypeList(Integer index) {
try {
List<MEDIA_TYPE> mediaTypeList = new ArrayList<MEDIA_TYPE>();
MEDIA_TYPE mediaType;
// GetRange EPDM_CMD_MEDIA
EPDMSelectData epdmSelectData = GetMediaTypeRange();
// GetData EPDM_CMD_MEDIA
short mediaTypeID = GetMediaTypeID();
// Get combo box index.
index = ArrayIndexOf(epdmSelectData.Data, mediaTypeID);
// GetData EPDM_CMD_STRING
for (int i = 0; i < epdmSelectData.Count; i++) {
String strData = GetString( EPDMEnumrations.StringID.EPDM_STRING_MEDIA.getI(), epdmSelectData.Data[i].intValue());
// Add the mediatypelist
mediaType = new MEDIA_TYPE();
mediaType.StrMediaType = strData;
mediaType.MediaTypeID = epdmSelectData.Data[i].intValue();
mediaTypeList.add(mediaType);
}
return mediaTypeList;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获取媒体类型范围的方法
*
* @return epdm_select的数据结构对象
*/
public EPDMSelectData GetMediaTypeRange() {
try {
return GetSelectDataRange(EPDMEnumrations.Command.EPDM_CMD_MEDIA);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获取当前媒体类型ID的方法
* @return 媒体类型ID
*/
public short GetMediaTypeID()
{
try
{
return GetShortData(EPDMEnumrations.Command.EPDM_CMD_MEDIA);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是实现EPDMSelectData结构的EPDM GetRange的方法
*
* @param cmd 命令获取设置的范围
* @return EPDMSelectData结构对象
*/
public EPDMSelectData GetSelectDataRange(EPDMEnumrations.Command cmd) {
try {
EPDMSelectData epdmSelectData = new EPDMSelectData();
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, cmd.getI(), epdmSelectData.StructurePointer));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
epdmSelectData.PtrToStructure();
// Allocate the memory. - EPDMSelectData.Data
epdmSelectData.Alloc();
// EPDM_GetRange 2nd call.
errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, cmd.getI(), epdmSelectData.StructurePointer));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
epdmSelectData.PtrToStructure();
return epdmSelectData;
} catch (EPDMException e) {
throw new MyException(e.getMessage());
}
}
/**
* 这是用于实现EPDM_GetData的方法
*
* @param cmd 命令获取数据
* @return
*/
public short GetShortData(EPDMEnumrations.Command cmd) {
Pointer ptrPosition = Pointer.NULL;
try {
ptrPosition = new Memory(Short.SIZE / 8);
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, cmd.getI(), ptrPosition));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
return _ptrGetParm.getShort(0);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
} finally {
Native.free(Pointer.nativeValue(ptrPosition));
}
}
/**
* 这是实现EPDM_sTRiNG_1结构的EPDM_GetData的方法
*
* @param stringParam 要获取的字符串的命令
* @param id 要获取的字符串的ID
* @return
*/
public String GetString(int stringParam, int id) {
try {
EPDMString epdmString = new EPDMString();
epdmString.Command = stringParam;
epdmString.ID = id;
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_STRING.getI(), epdmString.StructurePointer));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
epdmString.PtrToStructure();
// Allocate the memory. - EPDMString.String
epdmString.Alloc();
errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_STRING.getI(), epdmString.StructurePointer));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
epdmString.PtrToStructure();
return epdmString.getString();
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是用于实现EPDM_SetData的方法
*
* @param cmd 要获取的命令号
* @param param 数据参数
*/
public void SetData(int cmd, int param) {
try {
EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_SetData(_ptrGetParm, cmd, param));
if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) {
throw new EPDMException(errCode);
}
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是实现EPDM_UpdateDevMode的方法
*/
public void UpdateDevMode() {
try {
if (!EPDMWrapper.instance.EPDM_UpdateDevMode(_ptrGetParm)) {
throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL);
}
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是设置媒体类型的方法
* @param mediaTypeID 所选媒体类型ID
*/
public void SetMediaType(int mediaTypeID)
{
try
{
SetData(EPDMEnumrations.Command.EPDM_CMD_MEDIA.getI(), mediaTypeID);
}
catch (Exception e)
{
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是创建打印质量组合框列表的方法
*
* @param index 所选组合框序列的个数(输出),当没有可选择的打印质量时-1返回索引
* @return 印刷质量的清单
*/
public List<PRINT_QUALITY> GetPrintQualityList(Integer index) {
try {
List<PRINT_QUALITY> printQualityList = new ArrayList<PRINT_QUALITY>();
PRINT_QUALITY printQuality;
// GetData EPDM_CMD_MEDIA
EPDMSelectData epdmSelectData = GetPrintQualityRange();
if (epdmSelectData == null) {
index = -1;
return null;
}
// GetData EPDM_CMD_MEDIA & Get combo box index.
index = ArrayIndexOf(epdmSelectData.Data, GetPrintQualityID());
// GetPrintQualityString
String strData = "";
for (int i = 0; i < epdmSelectData.Count; i++) {
int ID = epdmSelectData.Data[i].intValue();
if (ID == EPDMEnumrations.PrintQualityID.EPDM_QUALITY_360X180.getI()) {
strData = STR_PRINTQUALITY_360X180;
} else if (ID == EPDMEnumrations.PrintQualityID.EPDM_QUALITY_360X360.getI()) {
strData = STR_PRINTQUALITY_360X360;
} else if (ID == EPDMEnumrations.PrintQualityID.EPDM_QUALITY_720X360.getI()) {
strData = STR_PRINTQUALITY_720X360;
}
// Add the mediapositionlist
printQuality = new PRINT_QUALITY();
printQuality.StrPrintQuality = strData;
printQuality.PrintQualityID = ID;
printQualityList.add(printQuality);
}
return printQualityList;
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是得到打印质量范围的方法
*
* @return
*/
public EPDMSelectData GetPrintQualityRange() {
try {
return GetSelectDataRange(EPDMEnumrations.Command.EPDM_CMD_QUALITY);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是获得目前印刷质量的方法之一
*
* @return 打印质量ID
*/
public short GetPrintQualityID() {
try {
return GetShortData(EPDMEnumrations.Command.EPDM_CMD_QUALITY);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
/**
* 这是设置打印质量的方法
*
* @param printQualityID 选定打印质量ID
*/
public void SetPrintQuality(int printQualityID) {
try {
SetData(EPDMEnumrations.Command.EPDM_CMD_QUALITY.getI(), printQualityID);
} catch (Exception e) {
// Error handling.
throw new MyException(e.getMessage());
}
}
public Integer ArrayIndexOf(Object[] objects, Object object) {
int num = 0;
for (int i = 0; i < objects.length; i++) {
Object obj = objects[i];
if (obj.toString().equals(object.toString())) {
num = i;
}
}
return num;
}
public Integer ArrayIndexOfForShort(short[] objects, short object) {
int num = 0;
for (int i = 0; i < objects.length; i++) {
short obj = objects[i];
if (obj == object) {
num = i;
}
}
return num;
}
}

3
src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java

@ -8,6 +8,7 @@ import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.Code128Writer;
import com.google.zxing.oned.Code39Writer;
import com.google.zxing.oned.EAN13Writer;
import com.google.zxing.pdf417.encoder.BarcodeMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
@ -81,7 +82,7 @@ public class CreateQrCodeUtil {
* @param width 宽度
* @return base64格式的字符串
*/
public static String CreateBarCodeCode128(String content, int height, int width){
public static String CreateBarCode128(String content, int height, int width){
String resultImage = "";
if (!StringUtils.isEmpty(content)) {
ServletOutputStream stream = null;

15681
src/main/resources/static/css/JcPrinter/chalk_index.css

File diff suppressed because it is too large

BIN
src/main/resources/static/css/JcPrinter/fonts/element-icons.ttf

Binary file not shown.

BIN
src/main/resources/static/css/JcPrinter/fonts/element-icons.woff

Binary file not shown.

217
src/main/resources/static/css/JcPrinter/style.css

@ -0,0 +1,217 @@
body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background-color: #fff;
}
.container {
width: 900px;
height: auto;
margin: 0 auto;
}
.header {
display: flex;
align-items: center;
width: 100%;
height: 100px;
margin: 10px 0;
border: 1px solid gray;
}
.printer {
display: flex;
align-items: center;
margin-left: 10px;
}
.printer span {
display: block;
width: 120px;
}
.printer select {
width: 520px;
height: 26px;
}
.printer .reset {
width: 120px;
height: 24px;
margin-left: 10px;
line-height: 24px;
text-align: center;
border: 1px solid #a9a9a9;
}
.main {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.main-left {
width: 60%;
}
.send1{
width: 90%;
height: 30px;
margin: 10px ;
line-height: 30px;
text-align: center;
font-size: 16px;
/* border: 1px solid gray; */
/* border-radius: 5px; */
/* margin: 10px 10px; */
}
.flex-rows {
padding: 10px 0 10px 10px;
margin-bottom: 20px;
border: 1px solid gray;
}
.flex-rows p {
font-size: 16px;
}
.flex-rows .ex2 {
display: flex;
align-items: center;
height: 40px;
}
.function .ex2 span,
.upgrade .ex2 span {
display: block;
width: 120px;
font-size: 14px;
}
.parameter .ex2 span {
display: block;
width: 160px;
font-size: 14px;
}
.ex2 .right {
width: 500px;
}
.ex2 .diy-span-class{
display: flex;
justify-content: flex-start;
align-items: center;
}
.ex2 .diy-span-class span {
display: block;
width: 30px ;
margin-left: 6px;
font-size: 14px;
}
.ex2 .diy-span-class span:nth-child(1) {
margin-left: 0;
}
.headselect{
width: 500px;
}
.ex2 .right input[type='text'] {
width: 200px;
height: 24px;
}
.ex2 .right input[type='button'],
.ex2 .right input[type='number'],
.ex2 .right input[type='reset'],
.ex2 .right select {
width: 120px;
height: 24px;
}
.ex2 .diy-span-class input[type='number'] {
width: 60px;
height: 24px;
}
.ex2 .right input[type='number'] {
height: 22px;
}
.ex2 .right select,
.ex2 .right input[type='button'] {
height: 28px;
}
.ex2 .crc input[type='text'] {
width: 120px;
height: 24px;
}
.file-input {
display: flex;
align-items: center;
}
.select-file {
position: relative;
width: 120px;
height: 28px;
margin-left: 6px;
border: 1px solid #a9a9a9;
}
.select-file span {
width: 100%;
height: 100%;
line-height: 28px;
text-align: center;
background-color: #fff;
}
.select-file input {
opacity: 0;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
overflow: hidden;
}
.main-right {
width: 36%;
height: 860px;
margin-top: -20px;
border: 1px solid gray;
}
.main-right p {
padding-left: 5%;
}
.overflowTest {
width: 90%;
height: 320px;
margin: 0 auto;
padding: 4px;
border: 1px solid gray;
background-color: #fff;
overflow: scroll;
}
#overflowTest1 {
width: 90%;
height: 320px;
margin: 0 auto;
padding: 4px;
border: 1px solid gray;
background-color: #fff;
overflow: scroll;
}
.clear-all {
width: 90%;
height: 30px;
margin: 10px auto 0;
line-height: 30px;
text-align: center;
font-size: 16px;
border: 1px solid gray;
border-radius: 5px;
}

14
src/main/resources/static/js/JcPrinter/drawParameter/DrawLableBarCode.js

@ -0,0 +1,14 @@
var DrawLableBarCodeParam = {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 50,
"value": '12345678',
"codeType": 20,
"rotate": 0,
"fontSize": 4.0,
"textHeight": 0,
"textPosition": 0,
}

12
src/main/resources/static/js/JcPrinter/drawParameter/DrawLableGraph.js

@ -0,0 +1,12 @@
var DrawLableGraphParam = {
"x": 2.0,
"y": 5.0,
"height": 30,
"width": 40,
"rotate": 0,
"graphType": 3,
"cornerRadius": 0,
"lineWidth": 4,
"lineType":2,
"dashwidth": [1,1],
}

10
src/main/resources/static/js/JcPrinter/drawParameter/DrawLableImage.js

File diff suppressed because one or more lines are too long

9
src/main/resources/static/js/JcPrinter/drawParameter/DrawLableLine.js

@ -0,0 +1,9 @@
var DrawLableLineParam = {
"x": 2.0,
"y": 2.0,
"height": 2,
"width": 50,
"rotate": 0,
"lineType": 2,
"dashwidth": [1,1],
}

9
src/main/resources/static/js/JcPrinter/drawParameter/DrawLableQrCode.js

@ -0,0 +1,9 @@
var DrawLableQrCodeParam = {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 10,
"value": "精臣SDK",
"rotate": 0,
"codeType": 31,
}

17
src/main/resources/static/js/JcPrinter/drawParameter/DrawLableText.js

@ -0,0 +1,17 @@
var DrawLableTextParam = {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 50,
"value": "精臣SDK",
"fontFamily": "宋体",
"rotate": 0,
"fontSize": 4.0,
"textAlignHorizonral": 0,
"textAlignVertical": 0,
"letterSpacing": 1.0,
"lineSpacing": 1.0,
"lineMode":0,
"fontStyle": [false, false, false,false],
}

8
src/main/resources/static/js/JcPrinter/drawParameter/InitDrawingBoard.js

@ -0,0 +1,8 @@
var InitDrawingBoardParam={
"width":70,
"height":50,
"rotate":0,
"path":"ZT001.ttf",
"verticalShift":0,
"HorizontalShift":0};

3
src/main/resources/static/js/JcPrinter/drawParameter/generateImagePreviewImage.js

@ -0,0 +1,3 @@
var generateImagePreviewImageParam = {
"displayScale":8
}

4
src/main/resources/static/js/JcPrinter/drawParameter/initSdk.js

@ -0,0 +1,4 @@
var initSdkParam = {
"fontDir":"",
}

3
src/main/resources/static/js/JcPrinter/drawParameter/picturePrint.js

File diff suppressed because one or more lines are too long

1
src/main/resources/static/js/JcPrinter/element-ui_lib_index.js

File diff suppressed because one or more lines are too long

518
src/main/resources/static/js/JcPrinter/index_Demo.js

@ -0,0 +1,518 @@
document.write(
"<script src='/static/js/JcPrinter/jquery.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/layer/layer.js' ></script>"
);
document.write(
"<script src='/static/js/JcPrinter/jcPrinterSdk_api_third.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/InitDrawingBoard.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/initSdk.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/DrawLableText.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/DrawLableQrCode.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/DrawLableLine.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/DrawLableImage.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/DrawLableGraph.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/DrawLableBarCode.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/generateImagePreviewImage.js'></script>"
);
document.write(
"<script src='/static/js/JcPrinter/drawParameter/picturePrint.js'></script>"
);
var bCanclePrint = false;
var base64Data = "";
var readerPrintData = new FileReader();
var readerPrinterInfo = new FileReader();
var strPrintData;
var strPrinterInfo;
var allPrinters;
var pageIndex = 1;
var app = new Vue({
el: '#app',
data: {
form: {
paperType: '1',
density: '3',
pageCount: '1',
quantityCount: '2',
printMode: '1'
},
formLabelWidth: "120px",
options: [],
tags: [],
isInit: false,
isInitApi: false,
isDraw: false,
isEditTag: false,
editIndex: 0,
dialogInitDrawingBoardParam: false,
dialogDrawLableTextParam: false,
dialogDrawLableBarCodeParam: false,
dialogDrawLableQrCodeParam: false,
dialogDrawLableLineParam: false,
dialogDrawLableGraphParam: false,
dialogDrawLableImageParam: false,
value: '',
imgSrc: '',
initSdkParam: {//初始化数据
"fontDir": "",
},
InitDrawingBoardParam: {
"width": 50,
"height": 30,
"rotate": 0,
"path": "ZT001.ttf",
"verticalShift": 0,
"HorizontalShift": 0
},
DrawLableTextParam: {
"x": 1.0,
"y": 1.0,
"height": 10,
"width": 50,
"value": "",
"fontFamily": "宋体",
"rotate": 0,
"fontSize": 4.0,
"textAlignHorizonral": 0,
"textAlignVertical": 0,
"letterSpacing": 1.0,
"lineSpacing": 1.0,
"lineMode": 0,
"fontStyle": [false, false, false, false],
},
DrawLableBarCodeParam: {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 50,
"value": document.getElementById("materialQrCode").value,
"codeType": 20,
"rotate": 0,
"fontSize": 4.0,
"textHeight": 0,
"textPosition": 0,
},
DrawLableQrCodeParam: {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 10,
"value": document.getElementById("materialQrCode").value,
"rotate": 0,
"codeType": 31,
},
DrawLableLineParam: {
"x": 2.0,
"y": 2.0,
"height": 2,
"width": 50,
"rotate": 0,
"lineType": 2,
"dashwidth": [1, 1],
},
DrawLableGraphParam: {
"x": 2.0,
"y": 5.0,
"height": 30,
"width": 40,
"rotate": 0,
"graphType": 3,
"cornerRadius": 0,
"lineWidth": 4,
"lineType": 2,
"dashwidth": [1, 1],
},
DrawLableImageParam: {
"x": 2.0,
"y": 2.0,
"height": 10,
"width": 50,
"rotate": 0,
"imageProcessingType": 0,
"imageProcessingValue": 127,
"imageData": "",
"imgSrc": ''
},
DrawLableGraphParamDemo: {
"x": 2.0,
"y": 2.0,
"width": 46,
"height": 26,
"rotate": 0,
"graphType": 3,
"cornerRadius": 0,
"lineWidth": 0.5,
"lineType": 1,
"dashwidth": [1, 1],
},
},
mounted() {
// 初始化打印服务
getInstance();
},
methods: {
// 初始化
initSdkApi() {
initSdk(this.initSdkParam);
this.isInitApi = true
},
// 选择打印机
selectPrinterApi() {
let printerName = '';
for (let index = 0; index < this.options.length; index++) {
if (this.value === this.options[index].value) printerName = this.options[index].label
}
selectPrinter(printerName, parseInt(this.value), (data => {
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
return;
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)
}
}));
},
// 重新获取打印机
refreshPrinters() {
getAllPrinters(data => {
let arrParse = JSON.parse(JSON.stringify(data));
if (isJSON(arrParse.resultAck.info)) {
allPrinters = JSON.parse(arrParse.resultAck.info);
let allPrintersName = Object.keys(allPrinters);
let allPrintersValue = Object.values(allPrinters);
this.options = [];
for (i = 0; i < allPrintersName.length; i++) {
let newopt = {};
newopt.label = allPrintersName[i];
newopt.value = allPrintersValue[i];
this.options.push(newopt)
}
}
});
},
// 初始化画板
InitDrawingBoardApi() {
this.dialogInitDrawingBoardParam = true;
this.isDraw = false;
this.imgSrc = "";
},
handleClose(index) {
this.tags.splice(index, 1);
},
clickTag(tag, index) {
this.isEditTag = true;
this.editIndex = index;
switch (tag.name) {
case "文本":
this.DrawLableTextParam = {...tag};
this.dialogDrawLableTextParam = true;
break;
case "一维码":
this.DrawLableBarCodeParam = {...tag};
this.dialogDrawLableBarCodeParam = true;
break;
case "二维码":
this.DrawLableQrCodeParam = {...tag};
this.dialogDrawLableQrCodeParam = true;
break;
case "线条":
this.DrawLableLineParam = {...tag};
this.dialogDrawLableLineParam = true;
break;
case "形状":
this.DrawLableGraphParam = {...tag};
this.dialogDrawLableGraphParam = true;
break;
case "图片":
this.DrawLableImageParam = {...tag};
this.dialogDrawLableImageParam = true;
break;
}
},
// 初始化画布
InitDrawingBoardPar(callbackFunction) {
if (!this.InitDrawingBoardParam.width || !this.InitDrawingBoardParam.height) {
this.$message({
message: '请选填写画板宽高',
type: 'warning'
});
return
}
this.InitDrawingBoardParam.width = Number(this.InitDrawingBoardParam.width);
this.InitDrawingBoardParam.height = Number(this.InitDrawingBoardParam.height);
// 创建画板
/**
* 1.绘制元素前必须先初始化画板否则会引起崩溃
2.初始化画板时会清空画板上次绘制的内容
*/
InitDrawingBoard(this.InitDrawingBoardParam, callbackFunction);
this.dialogInitDrawingBoardParam = false;
this.isInit = true
},
// 一维码
DrawLableBarCodeApi() {
this.DrawLableBarCodeParam.width = Number(this.DrawLableBarCodeParam.width);
this.DrawLableBarCodeParam.height = Number(this.DrawLableBarCodeParam.height);
this.DrawLableBarCodeParam.x = Number(this.DrawLableBarCodeParam.x);
this.DrawLableBarCodeParam.y = Number(this.DrawLableBarCodeParam.y);
this.DrawLableBarCodeParam.name = "条形码";
DrawLableBarCode(this.DrawLableBarCodeParam);
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableBarCodeParam);
} else {
this.tags.push(this.DrawLableBarCodeParam)
}
this.dialogDrawLableBarCodeParam = false;
this.isDraw = true
},
// 二维码
DrawLableQrCodeApi() {
this.DrawLableQrCodeParam.width = Number(this.DrawLableQrCodeParam.width);
this.DrawLableQrCodeParam.height = Number(this.DrawLableQrCodeParam.width);
this.DrawLableQrCodeParam.x = Number(this.DrawLableQrCodeParam.x);
this.DrawLableQrCodeParam.y = Number(this.DrawLableQrCodeParam.y);
this.DrawLableQrCodeParam.name = "二维码";
//DrawLableQrCode(this.DrawLableQrCodeParam);
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableQrCodeParam);
} else {
this.tags.push(this.DrawLableQrCodeParam)
}
this.dialogDrawLableQrCodeParam = false;
this.isDraw = true
},
DragList(List) {
List.forEach(res => {
})
},
// 预览时进行绘制
generateImagePreviewImagepi() {
let List = [...this.tags];
// 创建画布
InitDrawingBoard(this.InitDrawingBoardParam, (data => {
List.forEach(res => {
switch (res.name) {
case "文本":
DrawLableText(res);
break;
case "条形码":
DrawLableBarCode(res);
break;
case "二维码":
DrawLableQrCode(res);
break;
case "线条":
DrawLableLine(res);
break;
case "形状":
DrawLableGraph(res);
break;
case "图片":
DrawLableImage(res);
break;
}
});
// 标签预览
generateImagePreviewImage(generateImagePreviewImageParam['displayScale'],
(data => {
var arrParse = JSON.parse(JSON.stringify(data));
//var Epc = document.getElementById('searchRfidBox');
var base64Data = arrParse.resultAck.info;
var obj = JSON.parse(base64Data);
var data = obj.ImageData;
var imgDisplay = document.getElementById('base64image');
var errorCode = obj.errorCode;
this.imgSrc = "data:image/jpeg;base64," + data;
// self.isInit = false
}))
}));
},
//清空
emptyImagePreviewImage() {
this.imgSrc = "";
this.tags = [];
this.isDraw = false
},
DrawLableTextApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableText(DrawLableTextParamDemo, callbackFunction);
},
DrawLableGraphApiDemo(callbackFunction) {
DrawLableGraph(this.DrawLableGraphParamDemo, callbackFunction);
},
DrawLableLineApiDemo(DrawLableLineParamDemo, callbackFunction) {
DrawLableLine(DrawLableLineParamDemo, callbackFunction);
},
DrawLableBarCodeApiDemo(drawLableBarCodeParamDemo, callableFunction) {
DrawLableBarCode(drawLableBarCodeParamDemo, callableFunction)
},
/**
* 开始打印任务
* @param {*} pageCount 页数
* @param {*} quantityCount 份数
* @param {*} density 浓度
* @param {*} paperType 纸张类型
* @param {*} paperType 材质
* @param {*} paperType 打印模式
*/
startPrintJob(index) {
let {
pageCount = "1",
quantityCount = "1",
density = "3",
paperType = "1",
printMode = "1"
} = this.form;
const self = this;
switch (index) {
case 1:
quantityCount = 1;
break;
case 2:
quantityCount = 1;
pageCount = 2;
break;
case 4:
pageCount = 2;
break;
}
if (this.value === "") {
self.$message({
message: '请选择连接打印机',
type: 'warning'
});
return;
}
if (!this.form.quantityCount && (index === 3 || index === 4)) {
self.$message({
message: '请选填写打印份数',
type: 'warning'
});
return;
}
// 初始化画板
InitDrawingBoard(this.InitDrawingBoardParam, (data1 => {
// 添加文字
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}))
},
/**
* 提交打印数据
* @param {string} printData 打印数据
* @param {string} printerInfo 打印机信息
* @param {number} pageIndex 页序号
* @param {number} pageCount 页数
* @param {number} quantityCount 单页的份数
*/
sendCommitJob(printData, pageIndex, pageCount, quantityCount) {
if (bCanclePrint) {
return;
}
const self = this;
var jsonObj = {"printerImageProcessingInfo": {"printQuantity": quantityCount}};
commitJob(null, JSON.stringify(jsonObj), function (data) {
var arrParse = JSON.parse(JSON.stringify(data));
var resultInfo = "commitJob ok";
if (arrParse.resultAck.printQuantity === pageCount && arrParse.resultAck.onPrintPageCompleted === quantityCount) {
//所有⻚数据的所有份数打印完成
endJob(function (data) {
// 停止打印
var arrParse = JSON.parse(JSON.stringify(data));
if (String(arrParse.resultAck.info).indexOf("endJob ok") > -1) {
// document.getElementById("printId").disabled = false;
}
});
return;
}
//异常导致打印取消
if (arrParse.resultAck.errorCode !== 0 && (arrParse.resultAck.cacheStatus === "cancel")) {
// document.getElementById("printId").disabled = false;
return;
}
//异常导致打印暂停
if (arrParse.resultAck.errorCode !== 0 && (arrParse.resultAck.cacheStatus === "pause")) {
cancleJobApi();
return;
}
//当前⻚所有份数打印完成,但是未打印完所有⻚数据,继续发送下⼀⻚数据
if (String(arrParse.resultAck.info).indexOf(resultInfo) > -1 && pageIndex !== pageCount) {
pageIndex++;
setTimeout(function () {
// 初始化画板
InitDrawingBoard(self.InitDrawingBoardParam, (data1 => {
// 添加文字
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}))// 提交数据
}, 500);
}
});
}
},
});

662
src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js

@ -0,0 +1,662 @@
//websocket
var g_websocket;
/* //响应数据 */
var ackJsonData;
/** websocket(打印服务)连接状态*/
var websocketConnectStatus = false;
/**SDK初始化状态 */
var initSdkStatus = false;
/**设备状态 */
var deviceStatus = false;
/**消息列表 */
var MessageList = {};
/**通过websocket发送消息 */
function sendMsg(msg, callback) {
console.log('sendMsg', msg.apiName);
MessageList[msg.apiName] = callback;
var data = JSON.stringify(msg);
var tryTimes = 10;
for (var i = 0; i < tryTimes; i++) {
if (g_websocket.readyState === 1) {
g_websocket.send(data);
return;
}
}
}
//初始化打印服务
//1.1 获取接口实例JCAPI.getInstance(单例模式)
function getInstance() {
if ('WebSocket' in window) {
g_websocket = websocketLifePeriod();
} else {
console.log('unsupported websocket');
//return false;
g_websocket = null;
return false;
}
//保持在线
setInterval(function () {
if (g_websocket.readyState === 2 || g_websocket.readyState === 3) {
getInstance();
}
}, 3000);
return true;
}
//1.1.1 打开链接及回调
function websocketLifePeriod() {
let websocket;
websocket = new WebSocket('ws://127.0.0.1:37989');
//websocket.binaryType = 'arraybuffer';
websocket.onerror = function (evt) {//since there is an error, sockets will close so...
sok.onclose = function (e) {
console.log("WebSocket Error: ", e);
}
};
websocket.proxy_read_timeout = 10000;
websocket.binaryType = "arraybuffer";
websocket.onopen = connectCallback;
websocket.onclose = closeCallback;
websocket.onmessage = readCallback;
websocket.onerror = errorCallback;
console.log(websocket);
return websocket;
}
//1.1.2 websocket连接回调
function connectCallback(e) {
ackJsonData = '';
console.log('websocket connect success');
websocketConnectStatus = true;
init();
}
//1.1.3 关闭连接回调
function closeCallback(e) {
websocketConnectStatus = false;
console.log(
'websocket closed: ' + e.code + ' ' + e.reason + ' ' + e.wasClean
);
// globalwebsocket = websocket;
g_websocket.close();
//websocketLifePeriod();
if (e.code === 1005) {
// globalwebsocket = websocket;
}
console.log('closed');
ackJsonData = '';
}
//1.1.4 读回调
function readCallback(e) {
var callBackInfo = e.data;
console.log('readCallback', callBackInfo);
ackJsonData = callBackInfo;
var callbackName;
if (isJSON(ackJsonData)) {
var arrParse = JSON.parse(ackJsonData);
//接口回调
if (!!MessageList[arrParse.apiName]) {
MessageList[arrParse.apiName](arrParse);
}
//回调分发
if (arrParse.apiName === 'printStatus') {
if (arrParse['resultAck']['online'] === 'online') {
deviceStatus = true;
} else {
deviceStatus = false;
}
} else {
if (arrParse['resultAck']['callback'] !== undefined) {
callbackName = arrParse['resultAck']['callback']['name'];
if (callbackName === 'onConnectSuccess') {
var printerName = arrParse['resultAck']['callback']['printerName'];
onConnectSuccess(printerName);
} else if (callbackName === 'onDisConnect') {
var printerName = arrParse['resultAck']['callback']['printerName'];
onDisConnect(printerName);
} else if (callbackName === 'onCoverStatusChange') {
var coverStatus = arrParse['resultAck']['callback']['coverStatus'];
onCoverStatusChange(coverStatus);
} else if (callbackName === 'onElectricityChange') {
var powerLever = arrParse['resultAck']['callback']['powerLever'];
onElectricityChange(powerLever);
} else if (callbackName === 'onPaperStatusChange') {
var paperStatus = arrParse['resultAck']['callback']['paperStatus'];
onPaperStatusChange(paperStatus);
} else if (callbackName === 'onPrintPageCompleted') {
onPrintPageCompleted();
} else if (callbackName === 'onPrintProgress') {
onPrintProgress();
} else if (callbackName === 'onAbnormalResponse') {
onAbnormalResponse();
} else {
console.log('unknow callback api!');
}
}
}
ackJsonData = '';
}
}
//1.1.5 错误回调
function errorCallback(e) {
//如果出现连接、处理、接收、发送数据失败的时候触发onerror事件
console.log(e.data);
}
//封装初始化SDK/获取打印机列表/选择打印机
function init() {
initSdk(this.initSdkParam, function (data) {
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
// 如果初始化失败
this.$message.error("初始化打印服务失败,请重试");
setTimeout(function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 500);
return;
}
getAllPrinters((data) => {
let arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$message.error("打印机获取失败,请重试");
setTimeout(function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 500);
return;
} else if (isJSON(arrParse.resultAck.info)) {
allPrinters = JSON.parse(arrParse.resultAck.info);
let allPrintersName = Object.keys(allPrinters);
let allPrintersValue = Object.values(allPrinters);
this.options = [];
// 将其保存到数据中供前端展示
for (i = 0; i < allPrintersName.length; i++) {
let newopt = {};
newopt.label = allPrintersName[i];
newopt.value = allPrintersValue[i];
this.options.push(newopt)
}
// 选中打印机
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
initSdkStatus = true;
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
return;
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)
}
}))
}
})
})
}
//1.2 断开websocket连接
function unInitPrintInstance() {
g_websocket.close();
}
//2.1 打印机连接成功回调onConnectSuccess
function onConnectSuccess(printerName) {
console.log('打印机连接成功!');
initSdkStatus = true;
deviceStatus = true;
}
//2.2 打印机断开回调onDisConnect
function onDisConnect(printerName) {
console.log('打印机断开!');
initSdkStatus = false;
}
//2.3 打印机上盖变化回调onCoverStatusChange
function onCoverStatusChange(coverStatus) {
console.log('打印机盒盖有变化!');
}
//2.4 打印机电量变化回调onElectricityChange()
function onElectricityChange(powerLever) {
console.log('打印机电量有变化!');
}
//2.5 打印机纸张状态变化回调onPaperStatusChange
function onPaperStatusChange(paperStatus) {
console.log('打印机纸张状态有变化!');
}
//3.1 页打印成功回调onPrintPageCompleted
function onPrintPageCompleted() {
console.log('页打印状态有变化!');
}
//3.2 打印进度回调onPrintProgress
function onPrintProgress() {
console.log('打印进度有变化!');
}
//3.3 打印异常回调onAbnormalResponse
function onAbnormalResponse() {
console.log('打印异常!');
}
//获取所有当前PC上连接的精臣打印机
//4.1 获取打印机列表getAllPrinters()
function getAllPrinters(callbackFunction) {
//刷新设备时,关闭设备
//closePrinter();
var jsonObj = {apiName: 'getAllPrinters'};
var allDevice = {};
sendMsg(jsonObj, callbackFunction);
}
//5. 图片打印
/*base64Data--base64
nPrintCount--打印数量
bDenoise--降噪*/
function picturePrint(base64Data, nPrintCount, bDenoise, callbackFunction) {
var jsonObj = {
apiName: 'picturePrint',
parameter: {
data: base64Data,
nPrintCount: nPrintCount,
bDenoise: bDenoise
}
};
sendMsg(jsonObj, callbackFunction);
}
//6.选择并打开需要使用的打印机名称,及端口号
function selectPrinter(printerName, port, callbackFunction) {
var jsonObj = {
apiName: 'selectPrinter',
parameter: {printerName: printerName, port: port}
};
sendMsg(jsonObj, callbackFunction);
}
//7.停止打印
function stopPrint(callbackFunction) {
var jsonObj = {apiName: 'stopPrint'};
sendMsg(jsonObj, callbackFunction);
}
//8.关闭打印端口
function closePrinter(callbackFunction) {
var jsonObj = {apiName: 'closePrinter'};
sendMsg(jsonObj, callbackFunction);
}
//9.设置打印浓度
//nDensity--范围为getDensityScopeApi查询范围
function setPrintDensity(nDensity, callbackFunction) {
var jsonObj = {
apiName: 'setPrintDensity',
parameter: {nDensity: nDensity}
};
sendMsg(jsonObj, callbackFunction);
}
//10.设置打印速度
//nSpeed--范围为getSpeedScopeApi查询的范围
function setPrintSpeed(nSpeed, callbackFunction) {
var jsonObj = {apiName: 'setPrintSpeed', parameter: {nSpeed: nSpeed}};
sendMsg(jsonObj, callbackFunction);
}
//11.设置打印标贴类型
//nType--间隙:01,黑标:02,连续纸:03,定位孔:04,透明纸:05,随机打印:06
function setPrintLabelType(nType, callbackFunction) {
var jsonObj = {apiName: 'setPrintLabelType', parameter: {nType: nType}};
sendMsg(jsonObj, callbackFunction);
}
//12.设置关机时间
//nType--1:15分钟,2:30分钟,3:60分钟,4:never
function setPrinterAutoShutDownTime(nType, callbackFunction) {
var jsonObj = {
apiName: 'setPrinterAutoShutDownTime',
parameter: {nType: nType}
};
sendMsg(jsonObj, callbackFunction);
}
//13.复位打印机
function setPrinterReset(callbackFunction) {
var jsonObj = {apiName: 'setPrinterReset'};
sendMsg(jsonObj, callbackFunction);
}
//14. 纸张标定
function setPrintPaperPos(nType, callbackFunction) {
var jsonObj = {
apiName: 'setPrintPaper',
parameter: {nType: nType}
};
sendMsg(jsonObj, callbackFunction);
}
//15.获取打印速度
function getPrintSpeed(callbackFunction) {
var jsonObj = {apiName: 'getPrintSpeed'};
sendMsg(jsonObj, callbackFunction);
}
//15.获取打印机电量
function getPower(callbackFunction) {
var jsonObj = {apiName: 'getPower'};
sendMsg(jsonObj, callbackFunction);
}
//16.获取标贴类型
function getPrintLabelType(callbackFunction) {
var jsonObj = {apiName: 'getPrintLabelType'};
sendMsg(jsonObj, callbackFunction);
}
//17.获取打印浓度
function getPrintDensity(callbackFunction) {
var jsonObj = {apiName: 'getPrintDensity'};
sendMsg(jsonObj, callbackFunction);
}
//18.获取打印机语言
function getPrinterLanguageType(callbackFunction) {
var jsonObj = {apiName: 'getPrinterLanguageType'};
sendMsg(jsonObj, callbackFunction);
}
//19.查询关机时间
function getPrinterAutoShutDownTime(callbackFunction) {
var jsonObj = {apiName: 'getPrinterAutoShutDownTime'};
sendMsg(jsonObj, callbackFunction);
}
//20.获取打印机序列号
function getPrinterSn(callbackFunction) {
var jsonObj = {apiName: 'getPrinterSn'};
sendMsg(jsonObj, callbackFunction);
}
//21.获取硬件版本
function getPrinterHardwareVersion(callbackFunction) {
var jsonObj = {apiName: 'getPrinterHardwareVersion'};
var responseData = {};
sendMsg(jsonObj, callbackFunction);
}
//22.获取软件版本
function getPrinterSoftwareVersion(callbackFunction) {
var jsonObj = {apiName: 'getPrinterSoftwareVersion'};
sendMsg(jsonObj, callbackFunction);
}
//23. 获取打印机语言
function setPrinterLanguageType(nType, callbackFunction) {
var jsonObj = {
apiName: 'setPrinterLanguageType',
parameter: {nType: nType}
};
sendMsg(jsonObj, callbackFunction);
}
//24.获取打速度印范围
function getSpeedScope(callbackFunction) {
var jsonObj = {apiName: 'getSpeedScope'};
sendMsg(jsonObj, callbackFunction);
return getResult(5, 'getSpeedScope', 'set printer language timeout!');
}
//25. 获取已开启的打印机
function getConnectPrinter(callbackFunction) {
var jsonObj = {apiName: 'getConnectPrinter'};
sendMsg(jsonObj, callbackFunction);
return getResult(5, 'getConnectPrinter', 'get connect printer timeout!');
}
//26.获取打印机型号
function getPrinterType(callbackFunction) {
var jsonObj = {apiName: 'getPrinterType'};
sendMsg(jsonObj, callbackFunction);
}
//27.获取浓度范围
function getDensityScope(callbackFunction) {
var jsonObj = {apiName: 'getDensityScope'};
sendMsg(jsonObj, callbackFunction);
}
//28. 获取打印模式 1-热敏 2-热转印
function getPrinterMode(callbackFunction) {
var jsonObj = {apiName: 'getPrintMode'};
sendMsg(jsonObj, callbackFunction);
}
//29.获取打印机mac地址
function getMacAddress(callbackFunction) {
var jsonObj = {apiName: 'getMacAddress'};
sendMsg(jsonObj, callbackFunction);
}
//30.设置打印模式
//nType-1热敏,2碳带
function setPrintMode(nType, callbackFunction) {
var jsonObj = {apiName: 'setPrintMode', parameter: {nType: nType}};
sendMsg(jsonObj, callbackFunction);
}
/**
* 31.开始打印任务
* @param {number} printDensity 打印浓度
* @param {number} printLabelType 纸张类型
* @param {number} printMaterial 材质
* @param {number} printMode 打印模式
* @param {number} count 总打印张数
* @param {*} callbackFunction 回调函数
*/
function startJob(printDensity, printLabelType, printMode, count, callbackFunction) {
var jsonObj = {
apiName: 'startJob',
parameter: {
printDensity: printDensity,
printLabelType: printLabelType,
printMode: printMode,
count: count
}
};
sendMsg(jsonObj, callbackFunction);
}
//32.提交打印任务commitJob
function commitJob(printData, printerImageProcessingInfo, callbackFunction) {
var printDataJson = eval('(' + printData + ')');
var printerImageProcessingInfoJson = eval('(' + printerImageProcessingInfo + ')');
var jsonObj = {
apiName: 'commitJob',
parameter: {
printData: printDataJson,
printerImageProcessingInfo: printerImageProcessingInfoJson['printerImageProcessingInfo'],
}
};
sendMsg(jsonObj, callbackFunction);
}
//33.结束打印任务endJob
function endJob(callbackFunction) {
var jsonObj = {apiName: 'endJob'};
sendMsg(jsonObj, callbackFunction);
}
//33.取消打印任务cancleJob
function cancleJob(callbackFunction) {
var jsonObj = {apiName: 'stopPrint'};
sendMsg(jsonObj, callbackFunction);
}
//34.1 创建画板
function InitDrawingBoard(json, callbackFunction) {
var jsonObj = {
apiName: 'InitDrawingBoard',
parameter: json
};
console.log("画布宽度:" + json.width);
console.log("画布高度:" + json.height);
console.log("画布旋转角度:" + json.rotate);
sendMsg(jsonObj, callbackFunction);
}
//34.2 绘制文本
function DrawLableText(json, callbackFunction) {
var jsonObj = {
apiName: 'DrawLableText',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//34.3 绘制一维码
function DrawLableBarCode(json, callbackFunction) {
var jsonObj = {
apiName: 'DrawLableBarCode',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//34.4 绘制二维码
function DrawLableQrCode(json, callbackFunction) {
var jsonObj = {
apiName: 'DrawLableQrCode',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//34.5 绘制线条
function DrawLableLine(json, callbackFunction) {
var jsonObj = {
apiName: 'DrawLableLine',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//34.6 绘制图形
function DrawLableGraph(json, callbackFunction) {
var jsonObj = {
apiName: 'DrawLableGraph',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//34.7 绘制图像
function DrawLableImage(json, callbackFunction) {
var jsonObj = {
apiName: 'DrawLableImage',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//34.8 生成预览图
function generateImagePreviewImage(displayScale, callbackFunction) {
var jsonObj = {
apiName: 'generateImagePreviewImage',
displayScale: displayScale
};
sendMsg(jsonObj, callbackFunction);
}
//35. 初始化SDK
function initSdk(json, callbackFunction) {
var jsonObj = {
apiName: 'initSdk',
parameter: json
};
sendMsg(jsonObj, callbackFunction);
}
//36. 获取调用结果
function getResult(tryTime, apiName, errInfo) {
tryTimes = tryTime;
let result = {};
while (tryTimes--) {
if (!isJSON(ackJsonData)) continue;
var arrParse = JSON.parse(ackJsonData);
if (arrParse['apiName'] === apiName) {
result = arrParse['resultAck'];
break;
}
}
if (tryTimes <= 0) {
result['result'] = false;
result['errorCode'] = 0x12;
result['info'] = errInfo;
}
return result;
}
//37. 判断字符串是否为JSON
function isJSON(str) {
if (typeof str == 'string') {
try {
var obj = JSON.parse(str);
if (typeof obj == 'object' && obj) {
return true;
} else {
return false;
}
} catch (e) {
//console.log('error:'+str+'!!!'+e);
return false;
}
}
console.log('It is not a string!');
}

10993
src/main/resources/static/js/JcPrinter/jquery.js

File diff suppressed because it is too large

2
src/main/resources/static/js/JcPrinter/layer/layer.js

File diff suppressed because one or more lines are too long

2
src/main/resources/static/js/JcPrinter/layer/mobile/layer.js

@ -0,0 +1,2 @@
/*! layer mobile-v2.0.0 Web 通用弹出层组件 MIT License */
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window);

1
src/main/resources/static/js/JcPrinter/layer/mobile/need/layer.css

File diff suppressed because one or more lines are too long

BIN
src/main/resources/static/js/JcPrinter/layer/theme/default/icon-ext.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
src/main/resources/static/js/JcPrinter/layer/theme/default/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

1
src/main/resources/static/js/JcPrinter/layer/theme/default/layer.css

File diff suppressed because one or more lines are too long

BIN
src/main/resources/static/js/JcPrinter/layer/theme/default/loading-0.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
src/main/resources/static/js/JcPrinter/layer/theme/default/loading-1.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

BIN
src/main/resources/static/js/JcPrinter/layer/theme/default/loading-2.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

93
src/main/resources/templates/pages/EPSON/PrintSetting.html

@ -0,0 +1,93 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>打印设置</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>打印设置</legend>
<input id="index" style="display: none" th:value="${index}">
<form class="layui-form layui-form-pane"
style="margin: 0 auto;max-width: 700px;padding-top: 5px; padding-bottom: 50px" lay-filter="form1">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">媒体布局:</label>
<div class="layui-input-inline">
<select name="media_layout" id="media_layout">
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">媒体类型:</label>
<div class="layui-input-inline">
<select name="media_type" id="media_type">
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">打印质量:</label>
<div class="layui-input-inline">
<select name="print_quality" id="print_quality">
</select>
</div>
</div>
</div>
</form>
</fieldset>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
layui.use(['form', 'dropdown'], function () {
var $ = layui.jquery,
form = layui.form,
dropdown = layui.dropdown;
let index = $("#index").val()
layui.$(function () {
let req = {};
req.index = index;
$.ajax({
url: "/Epson/PrintSettingLoad",
type: "post",
dataType: "json",
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
if (data.status === 200) {
$.ajax({
url: "/Epson/updatePrintSettingPage",
type: "post",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (result) {
layer.close(this.layerIndex);
console.log(result)
}
})
}
}
})
})
});
</script>
</body>
</html>

103
src/main/resources/templates/pages/EPSON/PrinterIndex.html

@ -0,0 +1,103 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>打印初始页面</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>打印</legend>
<form class="layui-form layui-form-pane"
style="margin: 0 auto;max-width: 700px;padding-top: 5px; padding-bottom: 50px" lay-filter="form1">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">打印机:</label>
<div class="layui-input-inline">
<select name="printer" id="printer">
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">打印设置:</label>
<div class="layui-input-inline">
<input type="button" class="layui-btn layui-btn-primary" onclick="print_setting()" value="设置" style="width: 100%">
</div>
</div>
</form>
</fieldset>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
function print_setting(){
}
layui.use(['form','dropdown'],function () {
var $ = layui.jquery,
form = layui.form,
dropdown = layui.dropdown;
layui.$(function () {
$.ajax({
url:"/Epson/GetPrinterInfoList",
type:"post",
dataType:"json",
contentType: "application/json;charset=utf-8",
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function (data) {
layer.close(this.layerIndex);
data = data.data;
if(data === null){
layer.msg("暂未查询到爱普生打印机,请确认",{
icon:0,
time:1000
},function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
})
}else{
let printer_list = $("#printer");
printer_list.empty();
$.each(data,function (index,item) {
printer_list.append(new Option(item,index))
});
form.render();
}
}
})
});
print_setting = function () {
layer.open({
type: 2,
title: '打印设置',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['100%', '100%'],
move: '.layui-layer-title',
fixed: false,
content: '/printSetting?index='+$("#printer").val(),
})
}
});
</script>
</body>
</html>

220
src/main/resources/templates/pages/JcPrinter/PrinterIndex.html

@ -0,0 +1,220 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<!-- 引入样式 -->
<link rel="stylesheet" href="/static/css/JcPrinter/chalk_index.css">
<head>
<meta charset="utf-8" />
<title>精臣SDK</title>
</head>
<body>
<div id="app" class="container">
<input style="display:none;" id="materialQrCode" th:value="${qrCode}">
<div class="link">
<H2>打印设备</H2>
<el-row>
<el-col :span="5">
<el-select @change="selectPrinterApi()" v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-col>
<el-col :span="12"><el-button @click="refreshPrinters()" type="primary">重新获取</el-button></el-col>
</el-row>
</div>
<br>
<br>
<div>
<el-row>
<el-col :span="5">
<div style="margin-bottom:20px;">
<el-button @click="InitDrawingBoardApi()" type="primary">初始化画布</el-button>
</div>
<div v-show="isInit">
<div style="margin-bottom:20px;">
<el-button @click="dialogDrawLableBarCodeParam=true;isEditTag=false" type="primary">绘制条形码</el-button>
</div>
<div style="margin-bottom:20px;">
<el-button @click="dialogDrawLableQrCodeParam=true;isEditTag=false" type="primary">绘制二维码</el-button>
</div>
</div>
</el-col>
<el-col :span="10">
<div style="margin-bottom:20px">
<el-tag v-show="isInit" @click="InitDrawingBoardApi()">画布</el-tag>
<el-tag
style="margin: 10px 10px 10px 0;"
v-for="(tag,index) in tags"
:key="tag.name"
closable
@click="clickTag(tag,index)"
@close="handleClose(index)"
>{{tag.name}}
</el-tag>
</div>
<div class="img">
<img v-if="imgSrc" :src="imgSrc" alt="">
<el-empty v-else description="预览位置"></el-empty>
</div>
<div v-show="isDraw" style="margin-top: 20px;">
<el-button @click="generateImagePreviewImagepi()">预览</el-button>
<el-button @click="emptyImagePreviewImage()">清空</el-button>
</div>
</el-col>
</el-row>
</div>
<div>
<h2>打印相关</h2>
<el-row>
<el-col :span="7">
<el-form :model="form" label-width="80px">
<el-form-item label="打印浓度">
<el-input v-model="form.density"></el-input>
</el-form-item>
<el-form-item label="打印纸张">
<el-select v-model="form.paperType" placeholder="请选择打印纸张">
<el-option label="间隙纸" value="1"></el-option>
<el-option label="黑标纸" value="2"></el-option>
<el-option label="连续纸" value="3"></el-option>
<el-option label="定孔纸" value="4"></el-option>
<el-option label="透明纸" value="5"></el-option>
<el-option label="标牌" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="打印份数">
<el-input v-model="form.quantityCount" type="number" placeholder="建议填写2-100,单份打印时无效"></el-input>
</el-form-item>
</el-form>
</el-col>
<el-col :span="14">
<div>
<el-button style="margin: 0 20px 40px 40px;" @click="startPrintJob(1)" type="primary">单页单份打印</el-button>
<el-button style="margin: 0 0 40px 0;" @click="startPrintJob(2)" type="primary">多页单份打印</el-button>
</div>
<div>
<el-button style="margin: 0 20px 20px 40px;" @click="startPrintJob(3)" type="primary">单页多份打印</el-button>
<el-button style="margin: 0 0 20px 0;" @click="startPrintJob(4)"type="primary">多页多份打印</el-button>
</div>
</el-col>
</el-row>
</div>
<el-dialog title="画布初始化" :visible.sync="dialogInitDrawingBoardParam">
<el-form :model="form">
<el-form-item label="画布宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="InitDrawingBoardParam.width" ></el-input>
</el-form-item>
<el-form-item label="画布高度" :label-width="formLabelWidth">
<el-input type="number" v-model="InitDrawingBoardParam.height" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="InitDrawingBoardParam.rotate" placeholder="请选择活动区域">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogInitDrawingBoardParam = false">取 消</el-button>
<el-button type="primary" @click="InitDrawingBoardPar()">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="绘制一维码" :visible.sync="dialogDrawLableBarCodeParam">
<el-form :model="form">
<el-form-item label="一维码内容" :label-width="formLabelWidth">
<el-input v-model="DrawLableBarCodeParam.value" readonly></el-input>
</el-form-item>
<el-form-item label="宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.width" ></el-input>
</el-form-item>
<el-form-item label="高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.height" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableBarCodeParam.rotate" placeholder="请选择旋转角度">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
<el-form-item label="文本位置" :label-width="formLabelWidth">
<el-select v-model="DrawLableBarCodeParam.textPosition" placeholder="请选择文本位置">
<el-option label="下方显示" :value="0"></el-option>
<el-option label="上方显示" :value="1"></el-option>
<el-option label="不显示" :value="2"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableBarCodeParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableBarCodeApi()">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="绘制二维码" :visible.sync="dialogDrawLableQrCodeParam">
<el-form :model="form">
<el-form-item label="二维码内容" :label-width="formLabelWidth">
<el-input v-model="DrawLableQrCodeParam.value" readonly ></el-input>
</el-form-item>
<el-form-item label="宽高" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.width" ></el-input>
</el-form-item>
<span style="color:red; padding-left:120px">此处不依据二维码类型校验二维码内容,可百度相关的条码类型输入符合要求的条码类型</span>
<el-form-item label="一维码类型" :label-width="formLabelWidth">
<el-select v-model="DrawLableQrCodeParam.codeType" placeholder="请选择一维码类型">
<el-option label="QR_CODE" :value="31"></el-option>
<el-option label="PDF417" :value="32"></el-option>
<el-option label="DATA_MATRIX" :value="33"></el-option>
<el-option label="AZTEC" :value="34"></el-option>
</el-select>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableQrCodeParam.rotate" placeholder="请选择旋转角度">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableQrCodeParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableQrCodeApi()">确 定</el-button>
</div>
</el-dialog>
</div>
<script src="/static/js/vue/vue.js"></script>
<!-- 引入组件库 -->
<script src="/static/js/JcPrinter/element-ui_lib_index.js"></script>
<script src='/static/js/JcPrinter/jcPrinterSdk_api_third.js'></script>
<script src='/static/js/JcPrinter/index_Demo.js'></script>
</body>
</html>
<style>
body{
margin: 0;
}
.container{
width: 1200px;
margin: 0 auto;
}
.img{
width: 400px;
min-height: 300px;
border: solid 1px #67C23A;
}
.img img{
width: 400px;
min-height: 300px;
}
</style>

70
src/main/resources/templates/pages/material/material-view.html

@ -28,7 +28,7 @@
margin-left: 80px;
}
.inputdiv .layui-unselect{
.inputdiv .layui-unselect {
border-style: none;
}
</style>
@ -41,7 +41,8 @@
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">物料编号</label>
<div class="layui-input-block">
<input id="mid" type="text" th:value="${record.getId()}" name="id" required lay-verify="required" autocomplete="off"
<input id="mid" type="text" th:value="${record.getId()}" name="id" required lay-verify="required"
autocomplete="off"
class="layui-input" readonly="readonly">
</div>
</div>
@ -62,7 +63,7 @@
<div class="layui-form-item">
<label class="layui-form-label">规格型号</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getVersion()}" name="version" autocomplete="off"
<input type="text" th:value="${record.getVersion()}" name="version" autocomplete="off"
class="layui-input">
</div>
</div>
@ -87,7 +88,7 @@
<div class="layui-form-item">
<label class="layui-form-label">材质</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getTexture()}" name="texture" autocomplete="off"
<input type="text" th:value="${record.getTexture()}" name="texture" autocomplete="off"
class="layui-input">
</div>
@ -103,8 +104,9 @@
<label class="layui-form-label">保质期:</label>
<div class="layui-input-inline">
<div class="inputdiv">
<input type="number" name="shelfLife" id="shelfLife" placeholder="请填写保质日期" autocomplete="off" th:value="${record.getShelfLife()}"
class="layui-input" style="border-style: none">
<input type="number" name="shelfLife" id="shelfLife" placeholder="请填写保质日期" autocomplete="off"
th:value="${record.getShelfLife()}"
class="layui-input" style="border-style: none">
<select id="dateType" name="dateType">
<option value="year" th:selected="${record.getShowShelfLife() == 'year'}"></option>
<option value="month" th:selected="${record.getShowShelfLife() == 'month'}"></option>
@ -116,10 +118,15 @@
<!-- 二维码生成-->
<div class="layui-form-item">
<label class="layui-form-label">二维</label>
<label class="layui-form-label">打印</label>
<div class="layui-input-inline">
<input id="createCode" type="button" class="layui-btn layui-btn-radius layui-btn-normal" onclick="createQrCode()" value="生成二维码"/>
<img id="qrCode" style="display:none;">
<input id="createCode" type="button" class="layui-btn layui-btn-radius layui-btn-normal"
onclick="createQrCode()" value="生成"/>
<div id="codeItem" style="display:none;">
<img id="qrCode" >
<button id="printer" type="button" onclick="print_code()" class="layui-btn">打印</button>
</div>
</div>
</div>
<div class="layui-form-item">
@ -132,7 +139,7 @@
<label class="layui-form-label">备注:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请填写备注" class="layui-input" th:value="${record.getRemark()}"
name="remark" />
name="remark"/>
</div>
</div>
<div class="layui-form-item" style="display: none">
@ -152,17 +159,23 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
function changeQrCodeState() {
};
}
function createQrCode() {
};
}
function checkBarCode() {
}
function print_code() {
}
var barCode = [];
var flag = false;
layui.use(['form','laydate'], function () {
var form = layui.form, laydate = layui.laydate,$ = layui.$;
layui.use(['form', 'laydate'], function () {
var form = layui.form, laydate = layui.laydate, $ = layui.$;
$('#openSonByMateralType').on('click', function () {
layer.open({
type: 2,
@ -174,19 +187,19 @@
move: '.layui-layer-title',
fixed: false,
content: '/selectType',
success: function(layero, index){
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height','100%');
iframeChildren.css('height','100%');
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
//提交
form.on('submit(formDemo)', function (data) {
data = data.field;
if(flag) {
if (flag) {
data.barCodeList = barCode;
}
$.ajax({
@ -230,7 +243,22 @@
area: ['100%', '100%'],
move: '.layui-layer-title',
fixed: false,
content: '/checkBarCode?mid='+mid,
content: '/checkBarCode?mid=' + mid,
})
};
print_code = function(){
layer.open({
type: 2,
title: '打印',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/printCode?mid='+$("#mid").val(),
})
};
@ -251,8 +279,8 @@
success: function (d) {
var data = d.data;
layer.close(this.layerIndex);
$("#qrCode").attr("src",data);
$("#qrCode").show();
//$("#qrCode").attr("src", data);
$("#codeItem").show();
$("#createCode").hide();
}
})

7
src/main/resources/templates/pages/warehouse/manager.html

@ -45,16 +45,15 @@
}
, cols: [
[ //表头
{field: 'id', width: 80, title: 'ID', sort: true},
{field: 'number', width: 100, title: '工号', sort: true},
{field: 'name', width: 100, title: '姓名', sort: true},
{
field: 'gender', width: 80, title: '性别', sort: true, templet: function (d) {
if (d.gender == 1) {
if (d.gender === 1) {
return "男性";
} else if (d.gender == 2) {
} else if (d.gender === 2) {
return "女性";
} else if (d.gender == 3) {
} else if (d.gender === 3) {
return "中性"
}else{
return "";

31
src/test/java/com/dreamchaser/depository_manage/TestForOther.java

@ -1,24 +1,24 @@
package com.dreamchaser.depository_manage;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.entity.Inventory;
import com.dreamchaser.depository_manage.entity.SplitInfo;
import com.dreamchaser.depository_manage.entity.SplitInventory;
import com.dreamchaser.depository_manage.mapper.MaterialMapper;
import com.dreamchaser.depository_manage.mapper.SplitUnitMapper;
import com.dreamchaser.depository_manage.service.SplitUnitService;
import com.dreamchaser.depository_manage.service.impl.QyWxOperationService;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations;
import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaLayoutRange;
import com.dreamchaser.depository_manage.controller.EPSON.AddMediaLayoutDlg;
import com.dreamchaser.depository_manage.controller.EPSON.PrintSettingsDlg;
import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapper;
import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl;
import com.sun.jna.*;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.W32APIOptions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.util.HashMap;
import java.io.*;
import java.util.List;
import java.util.Map;
/**
* 专用于测试琐碎实例
*/
@ -26,14 +26,11 @@ import java.util.Map;
@RunWith(SpringRunner.class)
public class TestForOther {
@Autowired
QyWxOperationService qyWxOperationService;
@Test
public void Test() throws IOException {
JSONObject approvalTemplateInfo = qyWxOperationService.getApprovalTemplateInfo("", "3WKiKVEcnH2dsARvP18hwkApF1Ku5dbNd7txbZCS");
System.out.println(approvalTemplateInfo);
}
}

Loading…
Cancel
Save