Commit d8145421 LN

增加MSD界面

1 个父辈 a4448e24
正在显示 20 个修改的文件 包含 498 行增加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;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
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.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.msd.bean.MSDSettiings;
import com.neotel.smfcore.core.msd.bean.MSLSetInfo;
import com.neotel.smfcore.core.msd.rest.bean.dto.MSDSettiingsDto;
import com.neotel.smfcore.core.msd.rest.bean.mapstruct.MSDSettingsMapper;
import com.neotel.smfcore.core.storage.rest.dto.StoragePosDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
import com.neotel.smfcore.core.storage.rest.query.StoragePosFindCriteria;
import com.neotel.smfcore.core.storage.rest.query.StoragePosQueryCriteria;
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.rest.bean.dto.SysSettingsDto;
import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
import com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper;
import com.neotel.smfcore.core.system.rest.bean.query.TaskQueryCondition;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.service.po.Settings;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Slf4j
@RestController
@RequiredArgsConstructor
@Api(tags = "MSD:管理和设置")
@RequestMapping("api/msd")
public class MSDController {
@Autowired
private DataCache dataCache;
@Autowired
private MSDSettingsMapper msdSettingsMapper;
@Autowired
private final StoragePosMapper storagePosMapper;
@Autowired
private final IComponentManager componentManager;
@Autowired
private final IStoragePosManager storagePosManager;
@Autowired
private IDataLogManager dataLogManager;
@Autowired
private final TaskMapper taskMapper;
@Autowired
private final IBarcodeManager barcodeManager;
@ApiOperation("获取MSD设置信息")
@GetMapping("/settings")
@PreAuthorize("@el.check('msd')")
public MSDSettiingsDto getSysSettings() {
MSDSettiings msdSettiings = dataCache.getCache(Constants.CACHE_msdSetting);
if(msdSettiings==null){
msdSettiings=new MSDSettiings() ;
String[] levels=new String[]{"1","2","2a","3","4","5","5a","6"};
List<MSLSetInfo> list=new ArrayList<>();
for (String level :
levels) {
MSLSetInfo setInfo=new MSLSetInfo() ;
setInfo.setMsl(level);
setInfo.setThickness("1");
setInfo.setTimeHour(48);
list.add(setInfo);
}
msdSettiings.setMslSetList(list);
dataCache.updateCache(Constants.CACHE_msdSetting, msdSettiings);
log.info("默认MSD:CACHE_msdSetting=" + msdSettiings.toString());
}
MSDSettiingsDto dto = msdSettingsMapper.toDto(msdSettiings);
return dto;
}
@ApiOperation("修改MSD设置信息")
@PutMapping("/settings")
@PreAuthorize("@el.check('msd')")
public ResultBean updateSysSettings(@Validated @RequestBody MSDSettiingsDto msdSettiingsDto) {
MSDSettiings settiings = msdSettingsMapper.toEntity(msdSettiingsDto);
if (settiings.getMaxHumidity() <= settiings.getMinHumidity()) {
throw new ValidateException("smfcode.humidityValueError", "温度范围数据错误");
}
if (settiings.getMaxTemperature() <= settiings.getMinTemperature()) {
throw new ValidateException("smfcode.temperatureValueError", "湿度范围数据错误");
}
dataCache.updateCache(Constants.CACHE_msdSetting, settiings);
log.info("更改MSD:CACHE_msdSetting=" + settiings.toString());
return ResultBean.newOkResult("保存成功");
}
@ApiOperation("MSD库存数据查询")
@GetMapping("/query")
@PreAuthorize("@el.check('msd')")
public PageData<StoragePosDto> query(StoragePosFindCriteria criteria, Pageable pageable, HttpServletRequest request) {
if (criteria.getStorageId() != null && criteria.getStorageId().equals("0")) {
criteria.setStorageId(null);
}
Query query = QueryHelp.getQuery(criteria);
Criteria baseCriteria = Criteria.where("used").is(true);
int componentType = criteria.getType();
String name = "";
if (componentType != -1) {
int type = componentType;
request.setAttribute("type", componentType);
if (componentType == 41) {//锡膏夹具
type = COMPONENT_TYPE.FIXTURE;
name = StorageConstants.PACKAGE_TYPE.SOLDER_FIXTURE.getCode();
} else if (componentType == 42) {//PCB夹具
type = COMPONENT_TYPE.FIXTURE;
name = StorageConstants.PACKAGE_TYPE.PCB_FIXTURE.getCode();
}
baseCriteria.and("barcode.type").is(type);
}
query.addCriteria(Criteria.where("barcode.msl").exists(true));
query.addCriteria(baseCriteria);
PageData<StoragePos> pages = storagePosManager.findByPage(query, pageable);
List<StoragePosDto> StoragePosDtos = storagePosMapper.toDto(pages.getContent());
for (StoragePosDto dto :
StoragePosDtos) {
if(ObjectUtil.isEmpty(dto.getBarcode().getMsl())|| ObjectUtil.isEmpty(dto.getBarcode().getThickness()))
{
Component component=componentManager.findOneByPN(dto.getBarcode().getPartNumber());
if(component!=null){
dto.getBarcode().setMsl(component.getMsl());
dto.getBarcode().setThickness(component.getThickness());
}
}
Storage storage=dataCache.getStorageById(dto.getStorageId());
StatusBean bean = DevicesStatusUtil.getStatusBean(storage.getCid());
if (bean != null && bean.getBoxStatus() != null) {
for (BoxStatusBean boxStatus : bean.getBoxStatus().values()) {
String humidity = boxStatus.getHumidity();
String temperature = boxStatus.getTemperature();
dto.setHumidity(humidity);
dto.setTemperature(temperature);
break;
}
}
}
return new PageData(StoragePosDtos, pages.getTotalElements());
}
@ApiOperation("开封")
@PutMapping("/open")
@PreAuthorize("@el.check('msd')")
public ResultBean open(@RequestBody Map<String,String> paramsMap) {
String posName = paramsMap.get("posName");
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos == null || (pos.isUsed() == false) || pos.getBarcode() == null) {
throw new ValidateException("smfcode.msd.noPos", "未找到可开封的物料");
}
Barcode barcode = barcodeManager.findByBarcode(pos.getBarcode().getBarcode());
if (barcode == null) {
throw new ValidateException("smfcode.msd.noPos", "未找到可开封的物料");
}
DateTime dateTime = new DateTime();
pos.getBarcode().setOpenTime(dateTime);
barcode.setOpenTime(dateTime);
storagePosManager.save(pos);
barcodeManager.saveBarcode(barcode);
return ResultBean.newOkResult("");
}
@ApiOperation("追溯数据查询")
@GetMapping("/history")
@PreAuthorize("@el.check('msd')")
public PageData<TaskDto> history(TaskQueryCondition criteria, Pageable pageable) {
//只查询出库已完成
criteria.setType(2);
criteria.setStatus(OP_STATUS.FINISHED.name());
// String un_End = "UN_END";
// boolean unEnd = false;
// if (criteria.getStatus() != null && criteria.getStatus().equals(un_End)) {
// criteria.setStatus(null);
// unEnd = true;
// }
Query query = QueryHelp.getQuery(criteria);
// if (unEnd) {
// query.addCriteria(Criteria.where("status").nin(OP_STATUS.END.name(), OP_STATUS.FINISHED.name()));
// }
PageData<DataLog> taskList = dataLogManager.findByPage(query, pageable);
List<TaskDto> dtos = taskMapper.toDto(taskList.getContent());
for (TaskDto dto :
dtos) {
Random r = new Random();
String[] levels = new String[]{"1", "2", "2a", "3", "4", "5", "5a", "6"};
int num = r.nextInt(levels.length);
MSDAppendInfo appendInfo = new MSDAppendInfo();
appendInfo.setMsl(levels[num]);
int thickness = r.nextInt(3);
appendInfo.setThickness(thickness + "");
appendInfo.setOpenTime(new Date());
dto.setMsdAppendInfo(appendInfo);
}
// PageData<TaskDto> result= taskMapper.toDto(taskList);
return new PageData<>(dtos, taskList.getTotalElements());
}
}
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!