Commit d8145421 LN

增加MSD界面

1 个父辈 a4448e24
正在显示 20 个修改的文件 包含 248 行增加61 行删除
......@@ -198,12 +198,23 @@ public class DataInitManager {
manualOut.setHidden(true);
menus.addAll(createMenus(poutOut, menuOrder, menuOut,celueOut,groupOut,manualOut,materialBox));
Menu msd = Menu.CreatePMenu("MSD", 20, "msd", 2, "workOrder");
Menu msdManage = new Menu(new ArrayList<Menu>(), 1, "msdManage", "MSD管理", 1, "msdManage", "neolight/msdManage/index", "", 0, "export1");
Menu msdData = new Menu(new ArrayList<Menu>(), 1, "msdData", "MSD追溯性", 1, "msdData", "neolight/msdData/index", "", 0, "export1");
Menu msdSetting = new Menu(new ArrayList<Menu>(), 1, "msdSetting", "MSD设置", 1, "msdSetting", "neolight/msdSetting/index", "", 0, "workOrder");
Menu msd = Menu.CreatePMenu("MSD管理", 20, "msd", 2, "MSD");
Menu msdManage = new Menu(new ArrayList<Menu>(), 1, "msdManage", "MSD库存", 1, "msdManage", "neolight/msdManage/index", "", 0, "MSDManager");
Menu msdData = new Menu(new ArrayList<Menu>(), 1, "msdData", "MSD追溯性", 1, "msdData", "neolight/msdData/index", "", 0, "MSDData");
Menu msdSetting = new Menu(new ArrayList<Menu>(), 1, "msdSetting", "MSD设置", 1, "msdSetting", "neolight/msdSetting/index", "", 0, "MSDSet");
menus.addAll(createMenus(msd,msdManage,msdData,msdSetting));
//物料管理:元器件管理,条形码管理
Menu pMenuWl = Menu.CreatePMenu("档案管理", 30, "materiel ", 2, "BOM");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件", 1, "componentParts", "parts/component/index", "", 0, "server");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条形码", 1, "barcode", "barcode/barcode/index", "", 0, "chart");
menus.addAll(createMenus(pMenuWl, menucom, menubarcode));
//日志管理:物料日志
Menu pMenuLog = Menu.CreatePMenu("日志管理", 30, "log", 2, "log");
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog", "物料日志", 1, "taskLog", "neolight/taskLog/index", "", 0, "education");
menus.addAll(createMenus(pMenuLog, menuLog));
//设置:料仓管理,菜单管理
Menu poutSet = Menu.CreatePMenu("设置", 30, "system", 2, "system");
......@@ -221,17 +232,6 @@ public class DataInitManager {
menus.addAll(createMenus(poutSet, menuStorage, menuStoragePos, menuMenu, sysSetting,outSet,sysSet));
//物料管理:元器件管理,条形码管理
Menu pMenuWl = Menu.CreatePMenu("档案管理", 30, "materiel ", 2, "BOM");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件", 1, "componentParts", "parts/component/index", "", 0, "server");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条形码", 1, "barcode", "barcode/barcode/index", "", 0, "chart");
menus.addAll(createMenus(pMenuWl, menucom, menubarcode));
//日志管理:物料日志
Menu pMenuLog = Menu.CreatePMenu("日志管理", 30, "log", 2, "log");
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog", "物料日志", 1, "taskLog", "neolight/taskLog/index", "", 0, "education");
menus.addAll(createMenus(pMenuLog, menuLog));
//用户管理:用户管理,角色管理
Menu pMenuUser = Menu.CreatePMenu("用户管理", 30, "userManager", 2, "Steve-Jobs");
......
......@@ -100,7 +100,13 @@ public class Constants {
public static final String CACHE_StopJob="stopJob";
/**
* 出库方式类型 出库策略配置
*出库策略配置: 出库方式类型
*/
public static final String CACHE_CheckOutType="checkoutType";
/**
*MSD设置
*/
public static final String CACHE_msdSetting="msdSetting";
}
package com.neotel.smfcore.core.barcode.rest;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
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.mapstruct.ComponentMapper;
import com.neotel.smfcore.core.barcode.rest.bean.query.ComponentQueryCriteria;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
......@@ -38,6 +41,9 @@ public class ComponentController {
@Autowired
private final ComponentMapper componentMapper;
@Autowired
private final IStoragePosManager storagePosManager;
@ApiOperation("导出元器件信息")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, ComponentQueryCriteria criteria) throws Exception {
......@@ -73,6 +79,14 @@ public class ComponentController {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
componentManager.saveComponent(component);
// //修改元器件时更新storagePos中的数据
// if(!ObjectUtil.isEmpty(component.getPartNumber()))
// {
// if(!ObjectUtil.isEmpty(component.getMsl()) ){
// storagePosManager.updateBarcodeMsd(component.getPartNumber(),component.getMsl(),component.getThickness());
// }
// }
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("删除元器件")
......
package com.neotel.smfcore.core.barcode.rest.bean.dto;
import cn.hutool.core.date.DateTime;
import com.google.common.collect.Lists;
import com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
......@@ -68,6 +69,7 @@ public class BarcodeDto implements Serializable {
@ApiModelProperty("批次")
private String batch;
@ApiModelProperty("等级")
private String msl;
//备用字段1(配套单号))或 family
......@@ -196,12 +198,19 @@ public class BarcodeDto implements Serializable {
@ApiModelProperty("锁定名")
private String lockName;
/**
* 原始条码
*/
@ApiModelProperty("原始条码")
private String fullCode;
@ApiModelProperty("开包时间")
private Date openTime;
@ApiModelProperty("描述")
private String describe;
@ApiModelProperty("器件厚度")
private String thickness="";
public String getSize(){
return (""+plateSize+"X"+height);
......
......@@ -104,7 +104,7 @@ public class XLCBoxHandler extends BaseDeviceHandler {
}
if(list.size()<=0) {
Random r = new Random();
int num = r.nextInt() % 10;
int num = r.nextInt(10) ;
for (int i = 1; i <= num; i++) {
XLCPosBarcodeDto dto1 = toPosBarcodeDto(pos.getBarcode());
dto1.setBarcode(i+ dto1.getBarcode());
......
package com.neotel.smfcore.core.msd.bean;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class MSDSettiings implements Serializable {
/**
* 入库设置
* 0=每次确认是否开包
* 1=带包装(无开包时间)
* 2=不带包装(开包时间为入库时间)
*/
private int InputSet = 0;
/**
* 预警时间,提前小时
*/
private int prewarningTime = 2;
/**
* 最低温度
*/
private float minTemperature = 22.0F;
/**
* 最高温度
*/
private float maxTemperature = 38.0F;
/**
* 最低湿度值
*/
private float minHumidity = 0.0F;
/**
* 最大湿度值
*/
private float maxHumidity = 100.0F;
/**
* 等级列表
*/
private List<MSLSetInfo> mslSetList;
}
package com.neotel.smfcore.core.msd.bean;
import lombok.Data;
import java.io.Serializable;
@Data
public class MSLSetInfo implements Serializable {
/**
* MSL 等级
*/
private String msl;
/**
* 器件厚度
*/
private String thickness;
/**
* 保存时长(小时)
*/
private Integer timeHour;
}
package com.neotel.smfcore.core.msd.rest.bean.dto;
import com.neotel.smfcore.core.msd.bean.MSLSetInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
public class MSDSettiingsDto implements Serializable {
@ApiModelProperty("入库设置,0=每次确认是否开包,1=带包装(无开包时间),2=不带包装(开包时间为入库时间)")
private int InputSet = 0;
@ApiModelProperty("预警时间,提前小时")
private int prewarningTime = 2;
@ApiModelProperty("最低温度")
private float minTemperature = 22.0F;
@ApiModelProperty("最高温度")
private float maxTemperature = 38.0F;
@ApiModelProperty("最低湿度值")
private float minHumidity = 0.0F;
@ApiModelProperty("最大湿度值")
private float maxHumidity = 100.0F;
@ApiModelProperty("等级列表")
private List<MSLSetInfo> mslSetList;
}
package com.neotel.smfcore.core.msd.rest.bean.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.msd.bean.MSDSettiings;
import com.neotel.smfcore.core.msd.rest.bean.dto.MSDSettiingsDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring" ,unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MSDSettingsMapper extends BaseMapper<MSDSettiingsDto, MSDSettiings> {
}
......@@ -23,6 +23,7 @@ import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
import com.neotel.smfcore.core.system.listener.ITaskListener;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
......@@ -169,6 +170,7 @@ public class LiteOrderCache implements ITaskListener {
task.setSubSourceId(barcode.getLockName());
task.setSubSourceInfo(barcode.getLockName());
task.setType(OP.CHECKOUT);
task.setPutInDate(barcode.getPutInDate());
task.setLightColor(nextColor.getRgb());
task.setStatus(OP_STATUS.WAIT.name());
taskService.addTaskToExecute(task);
......@@ -428,23 +430,8 @@ public class LiteOrderCache implements ITaskListener {
}
public DataLog newTask(StoragePos pos) {
DataLog task = new DataLog();
Barcode barcode = pos.getBarcode();
if (barcode != null) {
task.setPartNumber(barcode.getPartNumber());
task.setBarcode(barcode.getBarcode());
task.setNum(barcode.getAmount());
task.setMemo(barcode.getMemo());
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
task.setCid(storage.getCid());
task.setStorageId(storage.getId());
task.setStorageName(storage.getName());
task.setPosId(pos.getId());
task.setPosName(pos.getPosName());
DataLog task = new DataLog(storage,pos.getBarcode(),pos);
return task;
}
......
......@@ -62,4 +62,12 @@ public class StoragePosDto implements Serializable {
@ApiModelProperty("标签名称")
private String labelName;
@ApiModelProperty("湿度")
private String humidity="";
@ApiModelProperty("温度")
private String temperature="";
}
......@@ -29,6 +29,8 @@ public class StoragePosFindCriteria {
@QueryCondition(propName = "barcode.barcode")
@ApiModelProperty("条码")
private String barcode;
@QueryCondition
@ApiModelProperty("库位号")
private String posName;
......@@ -66,4 +68,8 @@ public class StoragePosFindCriteria {
private String otherField4;
@QueryCondition(blurry = "barcode.otherField5")
private String otherField5;
@QueryCondition(propName = "barcode.msl")
@ApiModelProperty("等级")
private String msl;
}
......@@ -55,4 +55,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
void clearLockPos(String lockId);
StoragePos autoFindNextEmptyPos(Storage storage, Collection<String> excludePosIds,StoragePos currentPos);
public void updateBarcodeMsd(String pn,String msl,String thickness);
}
......@@ -408,6 +408,8 @@ public class StoragePosManagerImpl implements IStoragePosManager {
storagePosDao.updateMulti(query, Update.update("barcode.lockId",""));
}
@Override
public StoragePos autoFindNextEmptyPos(Storage storage, Collection<String> excludePosIds,StoragePos currentPos) {
Criteria c = Criteria.where("storageId").is(storage.getId());
......@@ -441,5 +443,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
StoragePos pos = storagePosDao.findOne(query);
return pos;
}
@Override
public void updateBarcodeMsd(String pn,String msl,String thickness){
Query query = new Query( Criteria.where("barcode.partNumber").is(pn));
storagePosDao.updateMulti(query, Update.update("barcode.msl",msl));
storagePosDao.updateMulti(query, Update.update("barcode.thickness",thickness));
}
}
package com.neotel.smfcore.core.system.bean;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* MSD附加信息
*/
@Data
public class MSDAppendInfo implements Serializable {
/**
* 等级
*/
private String msl="";
/**
* 器件厚度
*/
private String thickness="";
/**
* 开包时间
*/
private Date openTime;
}
package com.neotel.smfcore.core.system.rest.bean.dto;
import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
......@@ -132,4 +133,11 @@ public class TaskDto implements Serializable {
@ApiModelProperty("创建时间")
private Date createDate ;
@ApiModelProperty("MSD附加信息")
private MSDAppendInfo msdAppendInfo;
@ApiModelProperty("如果是出库任务,需要记录入库时间")
private Date putInDate;
}
......@@ -9,10 +9,12 @@ import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
......@@ -29,6 +31,12 @@ public class DataLog extends BasePo implements Serializable {
setBarcode(barcode.getBarcode());
setNum(barcode.getAmount());
setMemo(barcode.getMemo());
setPutInDate(barcode.getPutInDate());
msdAppendInfo = new MSDAppendInfo();
msdAppendInfo.setMsl(barcode.getMsl());
msdAppendInfo.setOpenTime(barcode.getOpenTime());
msdAppendInfo.setThickness(barcode.getThickness());
}
setCid(storage.getCid());
setStorageId(storage.getId());
......@@ -37,6 +45,7 @@ public class DataLog extends BasePo implements Serializable {
setPosId(pos.getId());
setPosName(pos.getPosName());
setStatus(OP_STATUS.WAIT.name());
}
/**
......@@ -191,6 +200,15 @@ public class DataLog extends BasePo implements Serializable {
* 出库时记录此料在库时长 ,分钟
*/
private long inStoreTime=0l;
/**
* 如果是出库任务,需要记录入库时间
*/
private Date putInDate;
/**
* MSD附加信息
*/
private MSDAppendInfo msdAppendInfo;
public String getBarcode() {
if(barcode == null){
......
......@@ -73,11 +73,6 @@ public class TaskService {
// }
// }
private void check(String barcode, String posName) throws ValidateException {
}
/**
* 条码入库,加入要执行的任务
*/
......@@ -112,6 +107,7 @@ public class TaskService {
DataLog task = new DataLog(storage, pos.getBarcode(), pos);
task.setType(OP.CHECKOUT);
task.setPutInDate(pos.getBarcode().getPutInDate());
task.setStatus(OP_STATUS.WAIT.name());
task.setSingleOut(isSingleOut);
task.setOperator(opUserName);
......@@ -527,26 +523,8 @@ public class TaskService {
}
public DataLog newTask(StoragePos pos) {
DataLog task = new DataLog();
Barcode barcode = pos.getBarcode();
if (barcode != null) {
task.setPartNumber(barcode.getPartNumber());
task.setBarcode(barcode.getBarcode());
task.setNum(barcode.getAmount());
task.setMemo(barcode.getMemo());
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
task.setCid(storage.getCid());
task.setStorageId(storage.getId());
task.setStorageName(storage.getName());
task.setPosId(pos.getId());
task.setPosName(pos.getPosName());
task.setStatus(OP_STATUS.WAIT.name());
DataLog task = new DataLog(storage,pos.getBarcode(),pos);
return task;
}
......
......@@ -68,7 +68,7 @@ smfcore.singleOuput=Search
smfcore.system=System
smfcore.bunker=Equipment
smfcore.storagePos=Storage Location
smfcore.menu=Menu
smfcore.menu=Menu Manager
smfcore.materiel =Product Info
smfcore.componentParts=Component
smfcore.barcode=Material ID
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!