Commit c7bd53b4 sunke

重置用户密码功能修复

导出元器件信息
料架展示IP修改
横向转储入库修正
1 个父辈 e2a19195
package com.neotel.smfcore.common.utils; package com.neotel.smfcore.common.utils;
import com.neotel.smfcore.SmfCoreApplication;
import com.neotel.smfcore.security.rest.UserController;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.util.StringUtil;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
import java.net.URL;
import java.io.*; import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.net.URL;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Slf4j @Slf4j
public class YmlUpdateUtil { public class YmlUpdateUtil {
public static void updateYamlFile(Map<String, Object> updateMap) { public static void updateYamlFile(Map<String, Object> updateMap) {
...@@ -39,24 +39,23 @@ public class YmlUpdateUtil { ...@@ -39,24 +39,23 @@ public class YmlUpdateUtil {
for (String key : updateMap.keySet() for (String key : updateMap.keySet()
) { ) {
Object value = updateMap.get(key); Object value = updateMap.get(key);
if(StringUtils.isEmpty(value.toString())){ if (StringUtils.isEmpty(value.toString())) {
continue; continue;
} }
key= key.replace('.',','); key = key.replace('.', ',');
String[] keyarray= key.split(","); String[] keyarray = key.split(",");
if(keyarray!=null){ if (keyarray != null) {
Map<String,Object> currMap=resultMap; Map<String, Object> currMap = resultMap;
int index=0; int index = 0;
for (String mapKey : for (String mapKey : keyarray) {
keyarray) { if (index == (keyarray.length - 1)) {
if(index==(keyarray.length-1)){ currMap = updateMapValue(mapKey, value, currMap);
currMap=updateMapValue(mapKey,value,currMap); } else {
}else{ currMap = updateMapMap(mapKey, currMap);
currMap=updateMapMap(mapKey,currMap); }
} index++;
index++; }
} }
}
msg += key + "=" + value + ","; msg += key + "=" + value + ",";
} }
...@@ -65,7 +64,7 @@ public class YmlUpdateUtil { ...@@ -65,7 +64,7 @@ public class YmlUpdateUtil {
//字符输出 //字符输出
fileWriter = new FileWriter(new File(src)); fileWriter = new FileWriter(new File(src));
//用yaml方法把map结构格式化为yaml文件结构 //用yaml方法把map结构格式化为yaml文件结构
String writeStr=yaml.dumpAsMap(resultMap); String writeStr = yaml.dumpAsMap(resultMap);
fileWriter.write(writeStr); fileWriter.write(writeStr);
//刷新 //刷新
fileWriter.flush(); fileWriter.flush();
...@@ -74,22 +73,24 @@ public class YmlUpdateUtil { ...@@ -74,22 +73,24 @@ public class YmlUpdateUtil {
log.info("更改yml配置:" + msg); log.info("更改yml配置:" + msg);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("updateYamlFile error :"+e.toString()); log.error("updateYamlFile error :" + e.toString());
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("updateYamlFile error :"+e.toString()); log.error("updateYamlFile error :" + e.toString());
} }
} }
private static Map<String,Object> updateMapMap(String key, Map<String,Object> map ){
private static Map<String, Object> updateMapMap(String key, Map<String, Object> map) {
if (!map.containsKey(key)) { if (!map.containsKey(key)) {
map.put(key,new HashMap<String,Object>()); map.put(key, new HashMap<String, Object>());
} }
return (Map<String,Object>)map.get(key); return (Map<String, Object>) map.get(key);
} }
private static Map<String,Object> updateMapValue(String key,Object value,Map<String,Object> map ){
private static Map<String, Object> updateMapValue(String key, Object value, Map<String, Object> map) {
if (map.containsKey(key)) { if (map.containsKey(key)) {
map.remove(key); map.remove(key);
} }
......
...@@ -2,10 +2,13 @@ package com.neotel.smfcore.core.barcode.rest; ...@@ -2,10 +2,13 @@ package com.neotel.smfcore.core.barcode.rest;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.csv.CsvReader; import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil; import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.barcode.rest.bean.dto.ComponentDto; import com.neotel.smfcore.core.barcode.rest.bean.dto.ComponentDto;
...@@ -33,6 +36,7 @@ import org.springframework.validation.annotation.Validated; ...@@ -33,6 +36,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
...@@ -60,10 +64,52 @@ public class ComponentController { ...@@ -60,10 +64,52 @@ public class ComponentController {
@ApiOperation("导出元器件信息") @ApiOperation("导出元器件信息")
@GetMapping(value = "/download") @GetMapping(value = "/download")
public void download(HttpServletResponse response, ComponentQueryCriteria criteria) throws Exception { public void download(HttpServletResponse response, ComponentQueryCriteria criteria,Pageable pageable, HttpServletRequest request) throws Exception {
Query query=QueryHelp.getQuery(criteria); Query query=QueryHelp.getQuery(criteria);
List<Component> list=componentManager.findByQuery(query); FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
componentManager.download(list,response); @Override
public List<List<String>> getHeader() {
List<List<String>> headerList = new ArrayList<>();
headerList.add(Lists.newArrayList("料件编号"));
headerList.add(Lists.newArrayList("数量"));
headerList.add(Lists.newArrayList("直径"));
headerList.add(Lists.newArrayList("厚度"));
headerList.add(Lists.newArrayList("补充盘数上限"));
headerList.add(Lists.newArrayList("截料设置盘数"));
headerList.add(Lists.newArrayList("安全库存盘数"));
headerList.add(Lists.newArrayList("呆滞天数"));
headerList.add(Lists.newArrayList("物料间距"));
headerList.add(Lists.newArrayList("尺寸是否已确认"));
headerList.add(Lists.newArrayList("描述"));
return headerList;
}
@Override
public List<List<Object>> getPageData(Query query, Pageable pageable) {
List<Component> list = componentManager.findByQuery(query,pageable);
List<List<Object>> dataList = new ArrayList<>();
for (Component component : list) {
List<Object> data = new ArrayList<>();
data.add(component.getPartNumber());
data.add(component.getAmount());
data.add(component.getPlateSize());
data.add(component.getHeight());
data.add(component.getMaxStoreNum());
data.add(component.getMinStoreNum());
data.add(component.getSafetyStoreNum());
data.add(component.getSluggishDay());
data.add(component.getDistance());
String confirmed = "否";
if(component.isSizeConfirmed()){
confirmed = "是";
}
data.add(confirmed);
data.add(component.getDescription());
dataList.add(data);
}
return dataList;
}
});
} }
@ApiOperation("查询元器件") @ApiOperation("查询元器件")
...@@ -293,7 +339,10 @@ public class ComponentController { ...@@ -293,7 +339,10 @@ public class ComponentController {
continue; continue;
} }
try { try {
Component item = new Component(); Component item = componentManager.findOneByPN(PN);
if(item == null){
item = new Component();
}
item.setPartNumber(lineValues[partNumberIndex].trim()); item.setPartNumber(lineValues[partNumberIndex].trim());
item.setAmount(Convert.toInt(lineValues[amountIndex].trim())); item.setAmount(Convert.toInt(lineValues[amountIndex].trim()));
item.setPlateSize(Convert.toInt(lineValues[plateSizeIndex].trim())); item.setPlateSize(Convert.toInt(lineValues[plateSizeIndex].trim()));
......
...@@ -2,6 +2,8 @@ package com.neotel.smfcore.core.barcode.service.manager; ...@@ -2,6 +2,8 @@ package com.neotel.smfcore.core.barcode.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.barcode.service.po.Component; import com.neotel.smfcore.core.barcode.service.po.Component;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
...@@ -9,14 +11,14 @@ import java.util.List; ...@@ -9,14 +11,14 @@ import java.util.List;
import java.util.Set; import java.util.Set;
public interface IComponentManager extends IBaseManager<Component> { public interface IComponentManager extends IBaseManager<Component> {
List<Component> findByQuery(Query query, Pageable pageable);
Component findByPartNumberAndProvider(String partNumber, String provider); Component findByPartNumberAndProvider(String partNumber, String provider);
Component findOneByPN(String partNumber); Component findOneByPN(String partNumber);
Component saveComponent(Component resources); Component saveComponent(Component resources);
void download(List<Component> queryAll, HttpServletResponse response) throws IOException;
void deleteComponents(Set<String> ids); void deleteComponents(Set<String> ids);
int saveComponentList(List<Component> componentList); int saveComponentList(List<Component> componentList);
......
...@@ -2,8 +2,6 @@ package com.neotel.smfcore.core.barcode.service.manager.impl; ...@@ -2,8 +2,6 @@ package com.neotel.smfcore.core.barcode.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StorageConstants; import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE; import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.dao.IBarcodeDao; import com.neotel.smfcore.core.barcode.service.dao.IBarcodeDao;
...@@ -15,14 +13,13 @@ import com.neotel.smfcore.core.storage.service.dao.IStoragePosDao; ...@@ -15,14 +13,13 @@ import com.neotel.smfcore.core.storage.service.dao.IStoragePosDao;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
...@@ -59,6 +56,11 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -59,6 +56,11 @@ public class ComponentManagerImpl implements IComponentManager {
} }
@Override @Override
public List<Component> findByQuery(Query query, Pageable pageable) {
return componentDao.findByQuery(query,pageable);
}
@Override
public List<Component> findByQuery(Query query) { public List<Component> findByQuery(Query query) {
return componentDao.findByQuery(query); return componentDao.findByQuery(query);
} }
...@@ -96,22 +98,6 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -96,22 +98,6 @@ public class ComponentManagerImpl implements IComponentManager {
} }
@Override @Override
public void download(List<Component> queryAll, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (Component component : queryAll) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("名称", component.getName());
map.put("物料编号", component.getPartNumber());
map.put("供应商编码", component.getProviderNumber());
map.put("料盘尺寸", component.getPlateSize() + "X" + component.getHeight());
map.put("封装数量", component.getAmount());
map.put("创建日期", DateUtil.toDateTimeString(component.getCreateDate()));
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public void deleteComponents(Set<String> ids) { public void deleteComponents(Set<String> ids) {
Query query = new Query(Criteria.where("id").in(ids)); Query query = new Query(Criteria.where("id").in(ids));
List<Component> components = componentDao.findByQuery(query); List<Component> components = componentDao.findByQuery(query);
...@@ -129,8 +115,7 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -129,8 +115,7 @@ public class ComponentManagerImpl implements IComponentManager {
List<Component> newComList = new ArrayList<>(); List<Component> newComList = new ArrayList<>();
String addPnStr = ""; String addPnStr = "";
for (Component resources : for (Component resources : componentList) {
componentList) {
if (resources.getPartNumber() == null) { if (resources.getPartNumber() == null) {
continue; continue;
} }
...@@ -144,14 +129,19 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -144,14 +129,19 @@ public class ComponentManagerImpl implements IComponentManager {
resources.setDescription(""); resources.setDescription("");
} }
//判断partNum是否重复 if(Strings.isNotBlank(resources.getId())){
Criteria c = Criteria.where("partNumber").is(resources.getPartNumber()); componentDao.save(resources);
Component com = componentDao.findOne(new Query(c));
if (com != null) {
log.info("saveComponentList 元器件[" + resources.getPartNumber() + "]已存在,暂不处理");
continue; continue;
} }
//判断partNum是否重复
// Criteria c = Criteria.where("partNumber").is(resources.getPartNumber());
//
// Component com = componentDao.findOne(new Query(c));
// if (com != null) {
// log.info("saveComponentList 元器件[" + resources.getPartNumber() + "]已存在,暂不处理");
// continue;
// }
addPnStr += resources.getPartNumber() + ","; addPnStr += resources.getPartNumber() + ",";
newComList.add(resources); newComList.add(resources);
} }
......
...@@ -795,6 +795,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -795,6 +795,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
statusBean.setStatus(statusBeanToSave.getStatus()); statusBean.setStatus(statusBeanToSave.getStatus());
statusBean.setOp(statusBeanToSave.getOp()); statusBean.setOp(statusBeanToSave.getOp());
statusBean.setSeq(statusBeanToSave.getSeq()); statusBean.setSeq(statusBeanToSave.getSeq());
statusBean.setClientIp(statusBeanToSave.getClientIp());
/** /**
* 已解除的报警信息存到数据库中 * 已解除的报警信息存到数据库中
......
...@@ -52,6 +52,15 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -52,6 +52,15 @@ public class NLPShelfHandler extends BaseDeviceHandler{
@Autowired @Autowired
private IUserManager userManager; private IUserManager userManager;
/**
* 库位盘点料架CID列表
*/
private static Collection<String> lightPosCidList = new ArrayList<>();
public static void updateOpenCidList(Collection<String> cidList){
lightPosCidList = cidList;
}
public NLPShelfHandler(List<IOpAuthApi> apiList) { public NLPShelfHandler(List<IOpAuthApi> apiList) {
super(apiList); super(apiList);
} }
...@@ -327,6 +336,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -327,6 +336,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
if(queueTask.isCheckOutTask() && queueTask.getPosName().equals(posName)){ if(queueTask.isCheckOutTask() && queueTask.getPosName().equals(posName)){
//出库完成 //出库完成
try { try {
outResult = posName; outResult = posName;
super.finishedOutPos(cid,posName); super.finishedOutPos(cid,posName);
String msg = queueTask.getBarcode()+ "从"+ posName+"出库成功,颜色["+queueTask.getLightColor()+"]"; String msg = queueTask.getBarcode()+ "从"+ posName+"出库成功,颜色["+queueTask.getLightColor()+"]";
...@@ -389,8 +399,14 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -389,8 +399,14 @@ public class NLPShelfHandler extends BaseDeviceHandler{
} }
} }
Map<String,List<String>> dataMap = new HashMap<>(); String hasReelPosColor = "off";
if(lightPosCidList.contains(cid)){
hasReelPosColor = ORDER_COLOR.LIGHTBLUE.name();
}
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("hasReelPosList",posList); dataMap.put("hasReelPosList",posList);
dataMap.put("hasReelPosColor",hasReelPosColor);
dataMap.put("outTaskList",outTaskPosList); dataMap.put("outTaskList",outTaskPosList);
//log.info("客户端获取["+cid+"]库位占用情况返回"); //log.info("客户端获取["+cid+"]库位占用情况返回");
return ResultBean.newOkResult(dataMap); return ResultBean.newOkResult(dataMap);
...@@ -402,7 +418,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -402,7 +418,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
@RequestMapping("/service/store/sensorShelf/hasReelPosList") @RequestMapping("/service/store/sensorShelf/hasReelPosList")
@ResponseBody @ResponseBody
@AnonymousAccess @AnonymousAccess
public ResultBean checkAll(HttpServletRequest request){ public ResultBean hasReelPosList(HttpServletRequest request){
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
List<String> posList = dataCache.getUsedPosNameList(cid); List<String> posList = dataCache.getUsedPosNameList(cid);
return ResultBean.newOkResult(posList); return ResultBean.newOkResult(posList);
......
...@@ -161,9 +161,9 @@ public class DataCache { ...@@ -161,9 +161,9 @@ public class DataCache {
} }
configValue = cacheValue; configValue = cacheValue;
Map<String, Object> updateMap = new HashMap<>(); //Map<String, Object> updateMap = new HashMap<>();
updateMap.put(configKey, configValue); //updateMap.put(configKey, configValue);
YmlUpdateUtil.updateYamlFile(updateMap); //YmlUpdateUtil.updateYamlFile(updateMap);
} else { } else {
updateCache(cacheKey, configValue); updateCache(cacheKey, configValue);
} }
...@@ -493,6 +493,9 @@ public class DataCache { ...@@ -493,6 +493,9 @@ public class DataCache {
* 获取设备所有占用的库位名称列表 * 获取设备所有占用的库位名称列表
*/ */
public List<String> getUsedPosNameList(String cid) { public List<String> getUsedPosNameList(String cid) {
if(cid == null){
cid = "";
}
List<String> posNameList = usedPosNameMap.get(cid); List<String> posNameList = usedPosNameMap.get(cid);
if (posNameList == null) { if (posNameList == null) {
Storage storage = getStorage(cid); Storage storage = getStorage(cid);
......
...@@ -239,11 +239,6 @@ public class SingleInController { ...@@ -239,11 +239,6 @@ public class SingleInController {
if(ObjectUtil.isEmpty(docName)){ if(ObjectUtil.isEmpty(docName)){
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"docName"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"docName"});
} }
//入库单验证
resultBean = inListCache.inListValidate(docName, barcode.getPartNumber(),barcode.getAmount());
if (!resultBean.isOkResult()) {
return resultBean;
}
InList inList = inListCache.getInList(docName); InList inList = inListCache.getInList(docName);
if(inList != null){ if(inList != null){
if(inList.getDocType() == 4){ if(inList.getDocType() == 4){
...@@ -269,6 +264,14 @@ public class SingleInController { ...@@ -269,6 +264,14 @@ public class SingleInController {
} else { } else {
throw new ValidateException("smfcore.returnMaterialApi.error", "入库:[" + barcode.getBarcode() + "]获取数量失败"); throw new ValidateException("smfcore.returnMaterialApi.error", "入库:[" + barcode.getBarcode() + "]获取数量失败");
} }
if(inType.equals(5)) {
//入库单验证
resultBean = inListCache.inListValidate(docName, barcode.getPartNumber(),barcode.getAmount());
if (!resultBean.isOkResult()) {
return resultBean;
}
}
} else { } else {
//唯一码校验接口 //唯一码校验接口
ResponseParam param = HikApi.riCheckApi(SecurityUtils.getCurrentUsername(), barcode.getBarcode(), "", ""); ResponseParam param = HikApi.riCheckApi(SecurityUtils.getCurrentUsername(), barcode.getBarcode(), "", "");
......
...@@ -130,17 +130,14 @@ public class InListCache { ...@@ -130,17 +130,14 @@ public class InListCache {
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
for (InListItem item : inList.getInListItems() for (InListItem item : inList.getInListItems()) {
) {
if (item.getMaterialNo().equals(pn) ) { if (item.getMaterialNo().equals(pn) ) {
if( item.getNum() > item.getInNum()) { if(item.getNum() > item.getInNum()) {
if(barcodeNum+item.getInNum()>item.getNum()){ if(barcodeNum+item.getInNum()>item.getNum()){
log.error("inListValidate 验证失败: 入库单["+inListName+"] PN["+pn+"] 目标数量["+item.getNum()+"]已入数量["+item.getInNum()+"]条码数量["+barcodeNum+"],超出目标数量"); log.error("inListValidate 验证失败: 入库单["+inListName+"] PN["+pn+"] 目标数量["+item.getNum()+"]已入数量["+item.getInNum()+"]条码数量["+barcodeNum+"],超出目标数量");
int num=item.getNum()-item.getInNum(); int num=item.getNum()-item.getInNum();
return ResultBean.newErrorResult(1,"smfcore.inlist.pnNum","入库单[{0}]的物料[{1}]可入数量为[{2}]",new String[]{inListName,pn,num+""} ); return ResultBean.newErrorResult(1,"smfcore.inlist.pnNum","入库单[{0}]的物料[{1}]可入数量为[{2}]",new String[]{inListName,pn,num+""} );
} }
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
}else{ }else{
log.error("inListValidate 验证失败: 入库单["+inListName+"] PN["+pn+"] 已达到目标数量["+item.getNum()+"]["+item.getInNum()+"]"); log.error("inListValidate 验证失败: 入库单["+inListName+"] PN["+pn+"] 已达到目标数量["+item.getNum()+"]["+item.getInNum()+"]");
......
...@@ -59,8 +59,6 @@ public class LiteOrderCache implements ITaskListener { ...@@ -59,8 +59,6 @@ public class LiteOrderCache implements ITaskListener {
@Autowired @Autowired
private IStoragePosManager storagePosManager; private IStoragePosManager storagePosManager;
@Autowired
private OrderPnMapper orderPnMapper;
/** /**
......
...@@ -239,15 +239,6 @@ public class OutListCache implements ITaskListener { ...@@ -239,15 +239,6 @@ public class OutListCache implements ITaskListener {
continue; continue;
} }
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序
List<StoragePos> posList = storagePosManager.findOrderItemInStorage(availableStorageIds, pn, taskService.excludePosIds());
log.info("共找到"+posList.size()+"盘"+pn+"的物料");
int storageNum = 0;
for (StoragePos pos : posList) {
storageNum += pos.getBarcode().getAmount();
}
Component component = componentManager.findOneByPN(pn); Component component = componentManager.findOneByPN(pn);
if (component == null) { if (component == null) {
if(isShortageOut){ if(isShortageOut){
...@@ -259,6 +250,15 @@ public class OutListCache implements ITaskListener { ...@@ -259,6 +250,15 @@ public class OutListCache implements ITaskListener {
} }
} }
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序
List<StoragePos> posList = storagePosManager.findOrderItemInStorage(availableStorageIds, pn, taskService.excludePosIds());
log.info("共找到"+posList.size()+"盘"+pn+"的物料");
int storageNum = 0;
for (StoragePos pos : posList) {
storageNum += pos.getBarcode().getAmount();
}
//判断库存数量是否小于需求数量,小于直接返回缺料 //判断库存数量是否小于需求数量,小于直接返回缺料
if (storageNum < needNum) { if (storageNum < needNum) {
if(isShortageOut){ if(isShortageOut){
......
...@@ -11,6 +11,7 @@ import com.neotel.smfcore.common.utils.QueryHelp; ...@@ -11,6 +11,7 @@ import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils; import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.bean.BoxStatusBean; import com.neotel.smfcore.core.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.handler.impl.NLPShelfHandler;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR; import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.storage.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
...@@ -87,45 +88,51 @@ public class StorageController { ...@@ -87,45 +88,51 @@ public class StorageController {
PageData<Storage> pages = storageManager.findByPage(query, pageable); PageData<Storage> pages = storageManager.findByPage(query, pageable);
List<StorageDto> StorageDtos = storageMapper.toDto(pages.getContent()); List<StorageDto> StorageDtos = storageMapper.toDto(pages.getContent());
StorageDtos = updateDtos(StorageDtos); StorageDtos = updateDtos(StorageDtos);
for (int i = 0; i < StorageDtos.size(); i++) { // for (int i = 0; i < StorageDtos.size(); i++) {
StorageDtos.get(i).setOnLine(false); // StorageDtos.get(i).setOnLine(false);
StorageDtos.get(i).setStatus(0); // StorageDtos.get(i).setStatus(0);
StatusBean bean = DevicesStatusUtil.getStatusBean(StorageDtos.get(i).getCid()); // StatusBean bean = DevicesStatusUtil.getStatusBean(StorageDtos.get(i).getCid());
//
if (bean != null && (!bean.timeOut())) { // if (bean != null && (!bean.timeOut())) {
StorageDtos.get(i).setOnLine(true); // StorageDtos.get(i).setOnLine(true);
for (BoxStatusBean boxStatus : bean.getBoxStatus().values()) { // for (BoxStatusBean boxStatus : bean.getBoxStatus().values()) {
StorageDtos.get(i).setStatus(bean.getStatus()); // StorageDtos.get(i).setStatus(bean.getStatus());
StorageDtos.get(i).setClientIp(bean.getClientIp()); // StorageDtos.get(i).setClientIp(bean.getClientIp());
break; // break;
} // }
} // }
} // }
return new PageData(StorageDtos, pages.getTotalElements()); return new PageData(StorageDtos, pages.getTotalElements());
} }
private List<StorageDto> updateDtos(List<StorageDto> dtoList) { private List<StorageDto> updateDtos(List<StorageDto> dtoList) {
for (int i = 0; i < dtoList.size(); i++) { for (StorageDto storageDto : dtoList) {
String groupId = ""; String groupId = "";
if (dtoList.get(i).getGroupId() != null && (!dtoList.get(i).getGroupId().isEmpty())) { if (storageDto.getGroupId() != null && (!storageDto.getGroupId().isEmpty())) {
groupId = dtoList.get(i).getGroupId(); groupId = storageDto.getGroupId();
} }
Group group = groupManager.get(groupId); Group group = groupManager.get(groupId);
if (group != null) { if (group != null) {
dtoList.get(i).setGroupName(group.getGroupName()); storageDto.setGroupName(group.getGroupName());
} else { } else {
//此料仓未分组 //此料仓未分组
dtoList.get(i).setGroupName(""); storageDto.setGroupName("");
if (!dtoList.get(i).getGroupId().equals("")) { if (!storageDto.getGroupId().equals("")) {
storageManager.updateStorageGroup(dtoList.get(i).getId(), ""); storageManager.updateStorageGroup(storageDto.getId(), "");
log.info("料仓[" + dtoList.get(i).getId() + "][" + dtoList.get(i).getName() + "]的组不存在,修改组为空"); log.info("料仓[" + storageDto.getId() + "][" + storageDto.getName() + "]的组不存在,修改组为空");
} }
} }
storageDto.setOnLine(false);
storageDto.setStatus(0);
//获取设备状态,设置状态和当前任务信息 //获取设备状态,设置状态和当前任务信息
StatusBean bean = DevicesStatusUtil.getStatusBean(dtoList.get(i).getCid()); StatusBean bean = DevicesStatusUtil.getStatusBean(storageDto.getCid());
if (bean != null && bean.getBoxStatus() != null) { if (bean != null && bean.getBoxStatus() != null) {
dtoList.get(i).setClientIp(bean.getClientIp()); if(!bean.timeOut()){
storageDto.setOnLine(true);
}
storageDto.setStatus(bean.getStatus());
storageDto.setClientIp(bean.getClientIp());
} }
} }
return dtoList; return dtoList;
...@@ -175,8 +182,7 @@ public class StorageController { ...@@ -175,8 +182,7 @@ public class StorageController {
Query query = new Query(Criteria.where("type").in(new String[]{DeviceType.NLP.name(), DeviceType.NL.name()})); Query query = new Query(Criteria.where("type").in(new String[]{DeviceType.NLP.name(), DeviceType.NL.name()}));
List<Storage> storages = storageManager.findByQuery(query); List<Storage> storages = storageManager.findByQuery(query);
List<StorageDto> storageDtos = new ArrayList<>(); List<StorageDto> storageDtos = new ArrayList<>();
for (Storage storage : for (Storage storage : storages) {
storages) {
StorageDto dto = new StorageDto(); StorageDto dto = new StorageDto();
dto.setName(storage.getName()); dto.setName(storage.getName());
dto.setId(storage.getId()); dto.setId(storage.getId());
...@@ -276,25 +282,16 @@ public class StorageController { ...@@ -276,25 +282,16 @@ public class StorageController {
@ApiOperation("库位盘点") @ApiOperation("库位盘点")
@PostMapping(value = "/openAllUsedPos") @PostMapping(value = "/openAllUsedPos")
public ResultBean openAllUsedPos(@RequestBody Set<String> cids) { public ResultBean openAllUsedPos(@RequestBody Set<String> cids) {
ORDER_COLOR color = ORDER_COLOR.LIGHTBLUE; log.info("盘点料架:"+String.join(",",cids));
for (String cid : cids) { NLPShelfHandler.updateOpenCidList(cids);
log.info("盘点料架:" + cid);
List<String> posList = dataCache.getUsedPosNameList(cid);
for (String posName : posList) {
String openValue = posName + "=" + color.name();
DevicesStatusUtil.appendOp(cid, "open", openValue);
}
}
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
@ApiOperation("关闭料架所有亮灯") @ApiOperation("关闭料架盘点")
@PostMapping(value = "/closeAllPos") @PostMapping(value = "/closeAllPos")
public ResultBean closeAll(@RequestBody Set<String> cids) { public ResultBean closeAll(@RequestBody Set<String> cids) {
for (String cid : cids) { log.info("关闭所有料架盘点");
log.info("关闭料架所有亮灯:" + cid); NLPShelfHandler.updateOpenCidList(new ArrayList<>());
DevicesStatusUtil.appendOp(cid, "closeAll", "true");
}
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
......
...@@ -58,20 +58,6 @@ public class HikConfig { ...@@ -58,20 +58,6 @@ public class HikConfig {
public String addr_11_orderEndApi = ""; public String addr_11_orderEndApi = "";
// key_1_transferOrderApi:
// key_2_transferOrderInApi:
// key_3_scheduleTaskApi:
// key_4_returnMaterialApi:
// key_5_putInApi:
// key_6_checkOutApi:
// key_7_updateOrderApi:
// key_8_riCheckApi:
// key_9_updateRepOrderApi:
// key_10_reservedOrderApi:
// key_11_orderEndApi:
@Value("${hik.key_1_transferOrderApi:}") @Value("${hik.key_1_transferOrderApi:}")
public String key_1_transferOrderApi = ""; public String key_1_transferOrderApi = "";
...@@ -105,17 +91,6 @@ public class HikConfig { ...@@ -105,17 +91,6 @@ public class HikConfig {
@Value("${hik.key_11_orderEndApi:}") @Value("${hik.key_11_orderEndApi:}")
public String key_11_orderEndApi = ""; public String key_11_orderEndApi = "";
// secret_1_transferOrderApi:
// secret_2_transferOrderInApi:
// secret_3_scheduleTaskApi:
// secret_4_returnMaterialApi:
// secret_5_putInApi:
// secret_6_checkOutApi:
// secret_7_updateOrderApi:
// secret_8_riCheckApi:
// secret_9_updateRepOrderApi:
// secret_10_reservedOrderApi:
// secret_11_orderEndApi:
@Value("${hik.secret_1_transferOrderApi:}") @Value("${hik.secret_1_transferOrderApi:}")
public String secret_1_transferOrderApi = ""; public String secret_1_transferOrderApi = "";
...@@ -152,6 +127,7 @@ public class HikConfig { ...@@ -152,6 +127,7 @@ public class HikConfig {
@Autowired @Autowired
private DataCache dataCache; private DataCache dataCache;
private Integer currReqCodeNum = 10000000;
@PostConstruct @PostConstruct
public void init() { public void init() {
...@@ -172,6 +148,32 @@ public class HikConfig { ...@@ -172,6 +148,32 @@ public class HikConfig {
addr_10_reservedOrderApi = dataCache.GetConfigCache("hik.addr_10_reservedOrderApi", "hik.addr_10_reservedOrderApi", addr_10_reservedOrderApi); addr_10_reservedOrderApi = dataCache.GetConfigCache("hik.addr_10_reservedOrderApi", "hik.addr_10_reservedOrderApi", addr_10_reservedOrderApi);
addr_11_orderEndApi = dataCache.GetConfigCache("hik.addr_11_orderEndApi", "hik.addr_11_orderEndApi", addr_11_orderEndApi); addr_11_orderEndApi = dataCache.GetConfigCache("hik.addr_11_orderEndApi", "hik.addr_11_orderEndApi", addr_11_orderEndApi);
key_1_transferOrderApi = dataCache.GetConfigCache("hik.key_1_transferOrderApi", "hik.key_1_transferOrderApi", key_1_transferOrderApi);
key_2_transferOrderInApi = dataCache.GetConfigCache("hik.key_2_transferOrderInApi", "hik.key_2_transferOrderInApi", key_2_transferOrderInApi);
key_3_scheduleTaskApi = dataCache.GetConfigCache("hik.key_3_scheduleTaskApi", "hik.key_3_scheduleTaskApi", key_3_scheduleTaskApi);
key_4_returnMaterialApi = dataCache.GetConfigCache("hik.key_4_returnMaterialApi", "hik.key_4_returnMaterialApi", key_4_returnMaterialApi);
key_5_putInApi = dataCache.GetConfigCache("hik.key_5_putInApi", "hik.key_5_putInApi", key_5_putInApi);
key_6_checkOutApi = dataCache.GetConfigCache("hik.key_6_checkOutApi", "hik.key_6_checkOutApi", key_6_checkOutApi);
key_7_updateOrderApi = dataCache.GetConfigCache("hik.key_7_updateOrderApi", "hik.key_7_updateOrderApi", key_7_updateOrderApi);
key_8_riCheckApi = dataCache.GetConfigCache("hik.key_8_riCheckApi", "hik.key_8_riCheckApi", key_8_riCheckApi);
key_9_updateRepOrderApi = dataCache.GetConfigCache("hik.key_9_updateRepOrderApi", "hik.key_9_updateRepOrderApi", key_9_updateRepOrderApi);
key_10_reservedOrderApi = dataCache.GetConfigCache("hik.key_10_reservedOrderApi", "hik.key_10_reservedOrderApi", key_10_reservedOrderApi);
key_11_orderEndApi = dataCache.GetConfigCache("hik.key_11_orderEndApi", "hik.key_11_orderEndApi", key_11_orderEndApi);
secret_1_transferOrderApi = dataCache.GetConfigCache("hik.secret_1_transferOrderApi", "hik.secret_1_transferOrderApi", secret_1_transferOrderApi);
secret_2_transferOrderInApi = dataCache.GetConfigCache("hik.secret_2_transferOrderInApi", "hik.secret_2_transferOrderInApi", secret_2_transferOrderInApi);
secret_3_scheduleTaskApi = dataCache.GetConfigCache("hik.secret_3_scheduleTaskApi", "hik.secret_3_scheduleTaskApi", secret_3_scheduleTaskApi);
secret_4_returnMaterialApi = dataCache.GetConfigCache("hik.secret_4_returnMaterialApi", "hik.secret_4_returnMaterialApi", secret_4_returnMaterialApi);
secret_5_putInApi = dataCache.GetConfigCache("hik.secret_5_putInApi", "hik.secret_5_putInApi", secret_5_putInApi);
secret_6_checkOutApi = dataCache.GetConfigCache("hik.secret_6_checkOutApi", "hik.secret_6_checkOutApi", secret_6_checkOutApi);
secret_7_updateOrderApi = dataCache.GetConfigCache("hik.secret_7_updateOrderApi", "hik.secret_7_updateOrderApi", secret_7_updateOrderApi);
secret_8_riCheckApi = dataCache.GetConfigCache("hik.secret_8_riCheckApi", "hik.secret_8_riCheckApi", secret_8_riCheckApi);
secret_9_updateRepOrderApi = dataCache.GetConfigCache("hik.secret_9_updateRepOrderApi", "hik.secret_9_updateRepOrderApi", secret_9_updateRepOrderApi);
secret_10_reservedOrderApi = dataCache.GetConfigCache("hik.secret_10_reservedOrderApi", "hik.secret_10_reservedOrderApi", secret_10_reservedOrderApi);
secret_11_orderEndApi = dataCache.GetConfigCache("hik.secret_11_orderEndApi", "hik.secret_11_orderEndApi", secret_11_orderEndApi);
try { try {
String cacheCode = dataCache.getCache("hikapi_req"); String cacheCode = dataCache.getCache("hikapi_req");
if (ObjectUtil.isEmpty(cacheCode)) { if (ObjectUtil.isEmpty(cacheCode)) {
...@@ -180,7 +182,7 @@ public class HikConfig { ...@@ -180,7 +182,7 @@ public class HikConfig {
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
String temp = sf.format(new Date()); String temp = sf.format(new Date());
if (cacheCode.startsWith(temp)) { if (cacheCode.startsWith(temp)) {
String str=cacheCode.substring(14, cacheCode.length()); String str = cacheCode.substring(14, cacheCode.length());
currReqCodeNum = Integer.parseInt(str); currReqCodeNum = Integer.parseInt(str);
} }
} }
...@@ -190,22 +192,22 @@ public class HikConfig { ...@@ -190,22 +192,22 @@ public class HikConfig {
log.info("HIK服务器地址:" + mesServer + ",baseCode=" + baseCode + ",lgort=" + lgort + ",currReqCodeNum=" + currReqCodeNum); log.info("HIK服务器地址:" + mesServer + ",baseCode=" + baseCode + ",lgort=" + lgort + ",currReqCodeNum=" + currReqCodeNum);
} }
private Integer currReqCodeNum=10000000;
/** /**
* 获取请求号 * 获取请求号
*
* @return * @return
*/ */
public String getReqCode() public String getReqCode() {
{ String id = "";
String id="";
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String temp = sf.format(new Date()); String temp = sf.format(new Date());
id=temp+codeAdd(); id = temp + codeAdd();
dataCache.updateCache("hikapi_req" ,id); dataCache.updateCache("hikapi_req", id);
return id; return id;
} }
private synchronized String codeAdd(){ private synchronized String codeAdd() {
currReqCodeNum++; currReqCodeNum++;
return currReqCodeNum.toString(); return currReqCodeNum.toString();
} }
......
...@@ -167,10 +167,9 @@ public class UserController { ...@@ -167,10 +167,9 @@ public class UserController {
if (id == null) { if (id == null) {
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} ); throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
} }
log.info("重置用户["+id+"]密码");
User resources=userManager.get(id); User resources=userManager.get(id);
resources.setPassword(passwordEncoder.encode(Constants.USER_DEFAULTP_PWD)); userManager.updatePass(resources.getUsername(), passwordEncoder.encode(Constants.USER_DEFAULTP_PWD));
resources.setPwdResetTime(new Date());
userManager.update(resources);
userCacheClean.cleanUserCache(resources.getUsername()); userCacheClean.cleanUserCache(resources.getUsername());
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
......
#配置数据源
data:
mongodb:
host: localhost # 主机地址
port: 27017 # 端口
database: hikvision # 数据库
# 登录相关配置 # 登录相关配置
login: login:
......
server: server:
port: 8800 port: 8800
#hik: hik:
# server: http://cloudapi-uat.hikvision.com.cn/api/ # server: http://cloudapi-uat.hikvision.com.cn/api/
# baseCode: "8001" # baseCode: "8001"
# lgort: "M9142" # lgort: "M9142"
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!