1.清空盘点

2.导出信息修改,左右信息还原不再显示深浅
3.指令开灯关灯
4.盘点信息修改不再增加盘点历史记录
5.软加密
chengdu-mxbc-qsl
LAPTOP-S9HJSOEB\昊天 3 years ago
parent c7f04cd807
commit a45c911e95

Binary file not shown.

@ -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);
}
}

@ -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();
}
}

@ -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发送给授权人员");
}
}

@ -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);

@ -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;

@ -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;
}

@ -13,7 +13,7 @@ public enum StockStatus {
SUCCESS(2, "盘点准确"),
ERROR(1, "核对错误"),
MANUAL(3,"人工核对")
MANUAL(3,"核对正确")
;
private Integer status;

@ -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");

@ -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;

@ -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<LightSource> 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<LightSource> 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());

@ -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<StockLog> stockLogs = stockLogMapper.selectList(new QueryWrapper<StockLog>().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<StockLog> stockLogs = stockLogMapper.selectList(new QueryWrapper<StockLog>().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<CheckLog>()
.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<Stock> stockList = stockMapper.selectList(new QueryWrapper<Stock>().eq("status", "0"));
stockMapper.update(stock, new QueryWrapper<Stock>().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){

@ -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())) {

Loading…
Cancel
Save