From a45c911e955847d93d85c067bf886c981f6de445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Fri, 26 May 2023 13:56:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B8=85=E7=A9=BA=E7=9B=98=E7=82=B9=202.?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E5=B7=A6=E5=8F=B3=E4=BF=A1=E6=81=AF=E8=BF=98=E5=8E=9F=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E6=98=BE=E7=A4=BA=E6=B7=B1=E6=B5=85=203.=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E5=BC=80=E7=81=AF=E5=85=B3=E7=81=AF=204.=E7=9B=98?= =?UTF-8?q?=E7=82=B9=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9B=98=E7=82=B9=E5=8E=86=E5=8F=B2=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=205.=E8=BD=AF=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/encrypt/Encryptor.dll | Bin 0 -> 13312 bytes .../src/main/java/encryptor/Encryptor.java | 29 +++++ .../zhehekeji/filter/aspect/LPLicense.java | 99 ++++++++++++++++++ .../filter/aspect/LicenseAspect.java | 24 +++++ .../web/controller/StockController.java | 8 ++ .../com/zhehekeji/web/entity/CheckLog.java | 3 +- .../web/pojo/stock/StockExportExcel.java | 16 +-- .../zhehekeji/web/pojo/stock/StockStatus.java | 2 +- .../zhehekeji/web/service/InitService.java | 2 + .../com/zhehekeji/web/service/PlcCmdInfo.java | 3 + .../com/zhehekeji/web/service/PlcService.java | 42 ++++++++ .../zhehekeji/web/service/StockService.java | 43 ++++++-- .../web/service/ksec/KsecDecoder.java | 3 + 13 files changed, 254 insertions(+), 20 deletions(-) create mode 100644 libs/encrypt/Encryptor.dll create mode 100644 modules/common/src/main/java/encryptor/Encryptor.java create mode 100644 modules/filter/src/main/java/com/zhehekeji/filter/aspect/LPLicense.java create mode 100644 modules/filter/src/main/java/com/zhehekeji/filter/aspect/LicenseAspect.java diff --git a/libs/encrypt/Encryptor.dll b/libs/encrypt/Encryptor.dll new file mode 100644 index 0000000000000000000000000000000000000000..edee19a1ab9d978bb6b61abb192e6eae35b595a2 GIT binary patch literal 13312 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 literal 0 HcmV?d00001 diff --git a/modules/common/src/main/java/encryptor/Encryptor.java b/modules/common/src/main/java/encryptor/Encryptor.java new file mode 100644 index 0000000..fe3cf1c --- /dev/null +++ b/modules/common/src/main/java/encryptor/Encryptor.java @@ -0,0 +1,29 @@ +package encryptor; +import java.lang.reflect.Field; + +public class Encryptor { + public native static String encryptStr(String str); + static + { + try{ + String path = System.getProperty("user.dir")+"\\libs\\encrypt"; + + System.setProperty("java.library.path", path); + Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); + fieldSysPath.setAccessible(true); + fieldSysPath.set(null, null); + + System.loadLibrary("Encryptor"); + }catch(Exception e) + { + System.out.println(e); + } + } + public static void main(String[] args) + { + + String noEncrypt = "BFEBFBFF000A06530026_B768_466D_0235."; + String encrypt = Encryptor.encryptStr(noEncrypt); + System.out.println(encrypt); + } +} diff --git a/modules/filter/src/main/java/com/zhehekeji/filter/aspect/LPLicense.java b/modules/filter/src/main/java/com/zhehekeji/filter/aspect/LPLicense.java new file mode 100644 index 0000000..fbc60c3 --- /dev/null +++ b/modules/filter/src/main/java/com/zhehekeji/filter/aspect/LPLicense.java @@ -0,0 +1,99 @@ +package com.zhehekeji.filter.aspect; + +import com.zhehekeji.common.util.FileUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.io.File; +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.Scanner; + +@Slf4j +public class LPLicense { + + private static LocalDateTime lastUpdate = null; + + private static String lic_str = null; + + private static String lic_path = "./lp.lic"; + + private static String key_path = "./lp.key"; + + private static String CPU_INFO = null; + + private static String DISK_INFO = null; + + /** + * 初始的时候创建 + */ + public static void createLicKeyIfNotExist(){ + File file = new File(key_path); + if(!file.exists()){ + String cpu = getCpuInfo(); + CPU_INFO = cpu; + String disk = getDiskInfo(); + DISK_INFO = disk; + FileUtil.save(cpu+disk,key_path); + } + } + + private static String getCpuInfo(){ + try { + Process process = Runtime.getRuntime().exec( + new String[] { "wmic", "cpu", "get", "ProcessorId" }); + process.getOutputStream().close(); + Scanner sc = new Scanner(process.getInputStream()); + String property = sc.next(); + String cpu = sc.next(); + return cpu; + } catch (IOException e) { + log.error("GET CPU error:{}",e); + return null; + } + } + + private static String getDiskInfo(){ + try { + Process process = Runtime.getRuntime().exec( + new String[] { "wmic","diskdrive","where","index=0", "get", "serialnumber"}); + process.getOutputStream().close(); + Scanner sc = new Scanner(process.getInputStream()); + String property = sc.next(); + String disk = sc.next(); + return disk; + } catch (IOException e) { + log.error("Get DISK error:{}",e); + return null; + } + } + + public static String getLic(){ + //每小时读取一次lic文件 + if(lastUpdate == null || LocalDateTime.now().toLocalTime().getHour() != lastUpdate.toLocalTime().getHour()){ + lastUpdate = LocalDateTime.now(); + lic_str = FileUtil.getText(lic_path); + CPU_INFO = getCpuInfo(); + DISK_INFO = getDiskInfo(); + } + return lic_str; + } + + public static boolean checkLic(String licStr){ + return CPU_INFO != null && DISK_INFO != null && licStr.equals(encryptor.Encryptor.encryptStr(CPU_INFO+DISK_INFO)); + } + + public static boolean checkLic(){ + String licStr = getLic(); + if(StringUtils.isEmpty(licStr)){ + return false; + } + return checkLic(licStr); + } + + public static void main(String[] args) { + + createLicKeyIfNotExist(); + + } +} diff --git a/modules/filter/src/main/java/com/zhehekeji/filter/aspect/LicenseAspect.java b/modules/filter/src/main/java/com/zhehekeji/filter/aspect/LicenseAspect.java new file mode 100644 index 0000000..9d008c7 --- /dev/null +++ b/modules/filter/src/main/java/com/zhehekeji/filter/aspect/LicenseAspect.java @@ -0,0 +1,24 @@ +package com.zhehekeji.filter.aspect; + +import com.zhehekeji.core.util.Assert; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; + +@Aspect +@Component +@Slf4j +public class LicenseAspect { + + /** + * leaper..*.controller + * leaper 到controller多级目录 + * + * @param + */ + @Before("execution(public * com.zhehekeji..*.controller.*.*(..))") + public void handler(){ + Assert.isTrue(LPLicense.checkLic(),"未获取授权!!请将C:\\hzleaper_auto_install\\logistics_package\\lp.key发送给授权人员"); + } +} diff --git a/web/src/main/java/com/zhehekeji/web/controller/StockController.java b/web/src/main/java/com/zhehekeji/web/controller/StockController.java index 59ac460..0b0837d 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/StockController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/StockController.java @@ -153,6 +153,14 @@ public class StockController { stockService.allStockCheck(); return Result.success(); } + + + @ApiOperation(value = "清空盘点") + @RequestMapping(value = "/allStockClear", method = RequestMethod.POST) + public Result allStockClear() { + stockService.allStockClear(); + return Result.success(); + } public static void main(String[] args) { String s = "4"; String ss = String.format("%03d", 4); diff --git a/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java b/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java index 736244d..2d412c2 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java @@ -36,6 +36,8 @@ public class CheckLog { private Integer count; + private String checkNum; + @ApiModelProperty("wms托盘码") private String wmsTrayCode; @@ -44,7 +46,6 @@ public class CheckLog { private Integer status; - private String checkNum; private String pic; diff --git a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java index b91a43f..a59e2db 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockExportExcel.java @@ -11,20 +11,20 @@ public class StockExportExcel { @ExcelProperty(index = 0, value = "巷道名称") private String streetName; - @ExcelProperty(index = 8, value = "盘点批次号") + @ExcelProperty(index = 7, value = "盘点批次号") private String lotnum; - @ExcelProperty(index = 5, value = "条码") + @ExcelProperty(index = 4, value = "条码") private String code; - @ExcelProperty(index = 6, value = "WMS条码") + @ExcelProperty(index = 5, value = "WMS条码") private String wmsCode; @ExcelProperty(index = 1, value = "左右,1:左侧,2:右侧") private Integer direction; - @ExcelProperty(index = 2, value = "深浅,1:浅货位,2:深货位") - private Integer side; +// @ExcelProperty(index = 2, value = "深浅,1:浅货位,2:深货位") +// private Integer side; // @ExcelProperty(index = 1, value = "货架号") // private String shelveId; @@ -35,13 +35,13 @@ public class StockExportExcel { @ExcelProperty(index = 3, value = "行") private Integer row; - @ExcelProperty(index = 4, value = "列") + @ExcelProperty(index = 2, value = "列") private Integer column; - @ExcelProperty(index = 7, value = "盘点结果", converter = StockStatusConvert.class) + @ExcelProperty(index = 6, value = "盘点结果", converter = StockStatusConvert.class) private Integer status; - @ExcelProperty(index = 9, value = "时间", converter = LocalDateTimeConvert.class) + @ExcelProperty(index = 8, value = "时间", converter = LocalDateTimeConvert.class) private LocalDateTime exportTime; } diff --git a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockStatus.java b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockStatus.java index 7bd5197..9d1a16a 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockStatus.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockStatus.java @@ -13,7 +13,7 @@ public enum StockStatus { SUCCESS(2, "盘点准确"), ERROR(1, "核对错误"), - MANUAL(3,"人工核对") + MANUAL(3,"核对正确") ; private Integer status; diff --git a/web/src/main/java/com/zhehekeji/web/service/InitService.java b/web/src/main/java/com/zhehekeji/web/service/InitService.java index 31a61d3..d4b381a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -1,5 +1,6 @@ package com.zhehekeji.web.service; +import com.zhehekeji.filter.aspect.LPLicense; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.Street; @@ -84,6 +85,7 @@ public class InitService implements ApplicationRunner { LoginThread loginThread = new LoginThread(camera); loginThread.start(); }); + LPLicense.createLicKeyIfNotExist(); //plc连接 if(configProperties.getServerMode() == 0){ log.info("PLC TCP MODE"); diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java b/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java index 051893f..74375a1 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java @@ -1,5 +1,6 @@ package com.zhehekeji.web.service; +import io.swagger.models.auth.In; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -70,6 +71,8 @@ public class PlcCmdInfo { private String lotnum; + private Integer streetId; + public PlcCmdInfo(String plcId, String taskId, Integer side1, Integer leftRight1, Integer column1, Integer row1, Integer separation1, Integer side2, Integer leftRight2, Integer column2, Integer row2, Integer separation2,String lotnum) { this.taskId = taskId; this.side1 = side1; diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 59a92ec..9249936 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -3,6 +3,7 @@ package com.zhehekeji.web.service; import codeDetector.BarcodeDetector; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhehekeji.common.util.PathUtil; +import com.zhehekeji.core.pojo.Result; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.*; import com.zhehekeji.web.lib.*; @@ -10,6 +11,8 @@ import com.zhehekeji.web.mapper.*; import com.zhehekeji.web.pojo.OrderVO; import com.zhehekeji.web.service.RFID.RFIDMap; import com.zhehekeji.web.service.RFID.RFIDSocket; +import com.zhehekeji.web.service.damLightSource.JYDAMEquip; +import com.zhehekeji.web.service.damLightSource.JYDamHelper; import com.zhehekeji.web.service.hikLightSource.HikControlSocket; import com.zhehekeji.web.service.ksec.KsecNettyClient; import com.zhehekeji.web.service.sick.SickSocket; @@ -17,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.PathVariable; import javax.annotation.Resource; import java.time.Duration; @@ -52,6 +56,8 @@ public class PlcService { @Resource private StockLogMapper stockLogMapper; + @Resource + private LightSourceService lightSourceService; @Resource private ConfigProperties configProperties; @@ -113,6 +119,7 @@ public class PlcService { return; } } + plcCmdInfo.setStreetId(street.getId()); Order order = new Order(); order.setOrderNum(plcCmdInfo.getOrderNum()); order.setStatus(0); @@ -129,7 +136,41 @@ public class PlcService { OrderRealtime.startOrder(street.getId(), plcCmdInfo.getOrderNum()); } } + public boolean openStreetLightSource( Integer streetId){ + List lightSources = lightSourceService.getLightSourceByStreetId(streetId); + lightSources.forEach(lightSource -> { + if(configProperties.getLightSource().getType() == 1){ + JYDAMEquip equip = JYDamHelper.Connect(lightSource.getIp(),lightSource.getPort()); + JYDamHelper.openDO(equip,configProperties.getLightSource().getIndex()); + Integer status = JYDamHelper.ReadStatus(equip,configProperties.getLightSource().getNum(),configProperties.getLightSource().getIndex()); + log.info("ip:{},status:{}",lightSource.getIp(),status); + equip.DisConnect(); + }else if(configProperties.getLightSource().getType() == 2){ + HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1); + } + + }); + + return true; + } + public boolean closeStreetLightSource( Integer streetId){ + List lightSources = lightSourceService.getLightSourceByStreetId(streetId); + lightSources.forEach(lightSource -> { + if(configProperties.getLightSource().getType() == 1){ + JYDAMEquip equip = JYDamHelper.Connect(lightSource.getIp(),lightSource.getPort()); + JYDamHelper.closeDO(equip,configProperties.getLightSource().getIndex()); + Integer status = JYDamHelper.ReadStatus(equip,configProperties.getLightSource().getNum(),configProperties.getLightSource().getIndex()); + log.info("ip:{},status:{}",lightSource.getIp(),status); + equip.DisConnect(); + }else if(configProperties.getLightSource().getType() == 2){ + HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),0); + } + + }); + + return true; + } /** * 工单结束信息 * 判断有没有告警,有告警的不做处理 @@ -148,6 +189,7 @@ public class PlcService { log.error("订单结束信号,订单不存在,orderNum:{}", plcCmdInfo.getOrderNum()); return; } + plcCmdInfo.setStreetId(street.getId()); OrderRealtime.stopOrder(street.getId()); Order update = new Order(); update.setId(order.getId()); diff --git a/web/src/main/java/com/zhehekeji/web/service/StockService.java b/web/src/main/java/com/zhehekeji/web/service/StockService.java index 159caca..ed5b9ca 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StockService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StockService.java @@ -3,6 +3,7 @@ package com.zhehekeji.web.service; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zhehekeji.core.util.Assert; @@ -343,7 +344,7 @@ public class StockService { stockExportExcel.setStreetName(street.getName()); stockExportExcel.setExportTime(stock.getExportTime()); stockExportExcel.setDirection(stock.getDirection()); - stockExportExcel.setSide(stock.getSide()); + //stockExportExcel.setSide(stock.getSide()); //stockExportExcel.setShelveId(stock.getShelveId()); stockExportExcel.setStatus(stock.getStatus()); stockExportExcels.add(stockExportExcel); @@ -371,7 +372,7 @@ public class StockService { stockExportExcel.setStreetName(streetMap.get(stock.getStreetId())); stockExportExcel.setExportTime(stock.getExportTime()); stockExportExcel.setDirection(stock.getDirection()); - stockExportExcel.setSide(stock.getSide()); + //stockExportExcel.setSide(stock.getSide()); stockExportExcel.setStatus(stock.getStatus()); stockExportExcels.add(stockExportExcel); }); @@ -398,13 +399,14 @@ public class StockService { } else { Street street = streetMapper.selectById(stock.getStreetId()); stock.setStreetName(street.getName()); - } - List stockLogs = stockLogMapper.selectList(new QueryWrapper().eq("`row`", stockCheck.getRow()).eq("`column`", stockCheck.getColumn()).eq("street_id", stockCheck.getStreetId()).eq("direction", stockCheck.getDirection()).eq("side", stockCheck.getSide()).orderByDesc("create_time").last(" limit 2")); - if (stockLogs.size() == 1) { - stock.setOveroperationPic(stockLogs.get(0).getPic()); - } else if (stockLogs.size() == 2) { - stock.setOveroperationPic(stockLogs.get(0).getPic()); - stock.setPreoperationPic(stockLogs.get(1).getPic()); + + List stockLogs = stockLogMapper.selectList(new QueryWrapper().eq("`row`", stockCheck.getRow()).eq("`column`", stockCheck.getColumn()).eq("street_id", stockCheck.getStreetId()).eq("direction", stockCheck.getDirection()).eq("side", stockCheck.getSide()).orderByDesc("create_time").last(" limit 2")); + if (stockLogs.size() == 1) { + stock.setOveroperationPic(stockLogs.get(0).getPic()); + } else if (stockLogs.size() == 2) { + stock.setOveroperationPic(stockLogs.get(0).getPic()); + stock.setPreoperationPic(stockLogs.get(1).getPic()); + } } return stock; } @@ -482,11 +484,17 @@ public class StockService { checkLog.setSide(stock.getSide()); checkLog.setStreetId(stock.getStreetId()); //checkLog.setShelveId(stock.getShelveId()); + checkLog.setLotnum(stock.getLotnum()); checkLog.setStatus(stock.getStatus()); checkLog.setCode(stock.getCode()); checkLog.setCreateTime(LocalDateTime.now()); checkLog.setExportTime(stock.getExportTime()); - checkLogMapper.insert(checkLog); + checkLogMapper.update(checkLog,new UpdateWrapper() + .eq("check_num",stock.getCheckNum()) + .eq("`column`",stock.getColumn()) + .eq("`row`",stock.getRow()) + .eq("direction",stock.getDirection()) + .eq("side",stock.getSide())); } /** @@ -514,8 +522,23 @@ public class StockService { public void allStockCheck() { Stock stock = new Stock(); stock.setStatus(3); + List stockList = stockMapper.selectList(new QueryWrapper().eq("status", "0")); stockMapper.update(stock, new QueryWrapper().eq("status", "0")); + for (Stock s:stockList){ + StockCheck stockCheck = new StockCheck(); + stockCheck.setColumn(s.getColumn()); + stockCheck.setStreetId(s.getStreetId()); + stockCheck.setRow(s.getRow()); + stockCheck.setDirection(s.getDirection()); + stockCheck.setSide(s.getSide()); + stockCheck.setOk(1); + checkCorrect(stockCheck); + } + + } + public void allStockClear() { + stockMapper.truncate(); } // public void init(String shelveId, Integer row, Integer column){ diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java index 73be381..d07dcd4 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java @@ -112,6 +112,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { //任务开始 旋转到原点位 plcService.gyrateCamera(plcCmdInfo,Cmd.C5.name()); plcService.orderStart(plcCmdInfo); + plcService.openStreetLightSource(plcCmdInfo.getStreetId()); }else { log.info("check move"); } @@ -137,6 +138,8 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { } plcService.gyrateCamera(plcCmdInfo,Cmd.C5.name()); plcService.orderStop(plcCmdInfo); + plcService.closeStreetLightSource(plcCmdInfo.getStreetId()); + } } else if (Cmd.C.name().equals(ksecInfo.getType())) {