Commit b3d0e6ce 张少辉

结构仓上架测试功能开发

1 个父辈 7dc18a73
......@@ -63,16 +63,9 @@ public class ComponentDto implements Serializable {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("料号")
private String partNumber;
@ApiModelProperty("供应商PN,用于扫码贴标机转换PN")
private String uid;
@ApiModelProperty("物料描述")
private String description;
@ApiModelProperty("单耗")
private String unitCost;
......@@ -88,16 +81,6 @@ public class ComponentDto implements Serializable {
@ApiModelProperty("厂商编号")
private String producerNumber;
@ApiModelProperty("供应商")
private String provider;
@ApiModelProperty("供应商编号")
private String providerNumber;
@ApiModelProperty("物料数量")
private int amount;
@ApiModelProperty("报警值,与贴片机连机时使用,值小于1时为初始数量amount百分比,大于等于1时为数量,小于此值时会根据贴片机信息自动出料")
private float alarmValue = 0.5f;
......@@ -167,6 +150,41 @@ public class ComponentDto implements Serializable {
@ApiModelProperty("安全库存盘数")
private int safetyReelNum=0;
//料件编号
private String partNumber;
//物料描述
private String description;
//供应商代码
private String provider;
//供应商物料编码
private String providerMaterialCode;
//供应商名称
private String providerNumber;
//数量
private int amount;
//收容数
private int containmentAmount;
//工厂
private String plant;
//是否原厂
private String originalFactory;
//是否量产
private String massProduction;
//最小包装数量
private int minimumPackagingQuantity = 0;
/**
* 自定义的附加字段,key=字段名,value=值
*/
......
......@@ -98,12 +98,27 @@ public class ComponentManagerImpl implements IComponentManager {
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()));
map.put("id", component.getId());
map.put("料件编号", component.getPartNumber());
map.put("物料描述", component.getDescription());
map.put("类型", component.getType());
map.put("供应商代码", component.getProvider());
map.put("供应商物料编码", component.getProviderMaterialCode());
map.put("供应商名称", component.getProducerNumber());
map.put("数量", component.getAmount());
map.put("收容数", component.getContainmentAmount());
map.put("工厂", component.getPlant());
map.put("是否原厂", component.getOriginalFactory());
map.put("是否量产", component.getMassProduction());
map.put("最小包装数量", component.getMinimumPackagingQuantity());
map.put("直径", component.getPlateSize());
map.put("厚度", component.getHeight());
map.put("MSL等级", component.getMsl());
map.put("最大库存", component.getMaxStoreNum());
map.put("最小库存", component.getMinStoreNum());
map.put("安全库存", component.getSafetyStoreNum());
map.put("呆滞天数", component.getSluggishDay());
map.put("尺寸是否确认", component.isSizeConfirmed() ? "是" : "否");
list.add(map);
}
FileUtil.downloadExcel(list, response);
......
......@@ -239,6 +239,40 @@ public class Barcode extends BasePo implements Serializable {
private String dateCode;
private String receiptOrder;
//料件编号
//private String partNumber;
//物料描述
private String description;
//供应商代码
//private String provider;
//供应商物料编码
private String providerMaterialCode;
//供应商名称
//private String providerNumber;
//数量
//private int amount;
//收容数
private int containmentAmount;
//工厂
private String plant;
//是否原厂
private String originalFactory;
//是否量产
private String massProduction;
private String rowNumber;
/**
* 自定义的附加信息
*/
......
......@@ -85,7 +85,7 @@ public class Component extends BasePo implements Serializable {
// @NotEmpty(message = "{component.partNumber.empty}")
// @NotNull
private String partNumber;
/**
* 供应商PN,用于扫码贴标机转换PN
......@@ -94,8 +94,6 @@ public class Component extends BasePo implements Serializable {
//uid
private String uid;
//物料描述
private String description;
//单耗
private String unitCost;
//"MSL等级"
......@@ -106,12 +104,6 @@ public class Component extends BasePo implements Serializable {
private String producer;
//"厂商编号"
private String producerNumber;
//"供应商"
private String provider;
//"供应商编号"
private String providerNumber;
private int amount;
/**
* 报警值,与贴片机连机时使用,值小于1时为初始数量amount百分比,大于等于1时为数量,小于此值时会根据贴片机信息自动出料
......@@ -178,15 +170,47 @@ public class Component extends BasePo implements Serializable {
private int validDay = 0;
/**
* 最小包装数量
*/
private int minimumPackagingQuantity = 0;
/**
* 自定义的附加信息
*/
private Map<String,String> appendData = new HashMap<>();
//料件编号
private String partNumber;
//物料描述
private String description;
//供应商代码
private String provider;
//供应商物料编码
private String providerMaterialCode;
//供应商名称
private String providerNumber;
//数量
private int amount;
//收容数
private int containmentAmount;
//工厂
private String plant;
//是否原厂
private String originalFactory;
//是否量产
private String massProduction;
//最小包装数量
private int minimumPackagingQuantity = 0;
public String getPSize(){
if(plateSize == 0 || height == 0){
return "";
......
......@@ -44,6 +44,7 @@ public class InListItem extends BasePo implements Serializable {
private String ReceiveFlag;
private String rowNumber;
/**
......
......@@ -71,7 +71,8 @@ public class AgvDeviceController {
public ResultBean generatePutInTask(HttpServletRequest request) {
String boxStr = request.getParameter("barcode");
String currentLoc = request.getParameter("currentLoc");
log.info("收到获取库位号的接口,料箱为:" + boxStr + ",当前位置为:" + currentLoc);
String cid = request.getParameter("cid");
log.info("收到获取库位号的接口,料箱为:" + boxStr + ",当前位置为:" + currentLoc+",cid为:"+cid);
Map<String, String> resultMap = new HashMap<>();
resultMap.put("boxStr", "");
resultMap.put("posName", "");
......@@ -110,10 +111,10 @@ public class AgvDeviceController {
//如果任务不存在,则创建新任务
List<Storage> storageList = new ArrayList<>();
List<String> cidList = Lists.newArrayList();
for (Storage storage : dataCache.getAllStorage().values()) {
Storage storage = dataCache.getStorage(cid);
storageList.add(storage);
cidList.add(storage.getCid());
}
ReelLockPosUtil.removeReelLockPosInfo(barcode.getBarcode());
StoragePos pos = taskService.findEmptyPosForPutIn(storageList, barcode, "", "");
if (pos == null) {
......@@ -126,7 +127,7 @@ public class AgvDeviceController {
log.info("清理锁定库位:库位号[" + oldLockInfo.getLockPosName() + "]上物料[" + oldLockInfo.getBarcode() + "]锁定的库位");
}
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
ReelLockPosInfo reelLocInfo = new ReelLockPosInfo();
reelLocInfo.setBarcode(barcode.getBarcode());
reelLocInfo.setCid(storage.getCid());
......@@ -142,34 +143,24 @@ public class AgvDeviceController {
String pidBarcode = barcode.getPidBarcode();
if (StringUtils.isNotEmpty(pidBarcode)){
Barcode splitBarcode = barcodeManager.findByBarcode(pidBarcode);
/*SplitContainerRequest splitContainerRequest = new SplitContainerRequest();
splitContainerRequest.setContainerNo(splitBarcode.getBarcode());
splitContainerRequest.setSplitContainerNo(pidBarcode);
splitContainerRequest.setSplitQuantity(barcode.getAmount()+"");
SplitContainerResponse splitContainerResponse = momoApi.splitContainer(splitContainerRequest);
if (!"200".equals(splitContainerResponse.getResult())){
return ResultBean.newErrorResult(-1,"smfcore.splitContainer.error","拆包通知失败[{0}]",new String[]{splitContainerResponse.getMessage()});
}*/
//判断有没有对应的入库单
Collection<InList> aLlInList = inListCache.getALlInList();
if (aLlInList != null && !aLlInList.isEmpty()){
for (InList inList : aLlInList) {
List<InListItem> inListItems = inList.getInListItems();
for (InListItem inListItem : inListItems) {
if (splitBarcode.getBarcode().equals(inListItem.getRi())){
InList inList = inListCache.getInList(barcode.getReceiptOrder());
if (inList != null){
for (InListItem inListItem : inList.getInListItems()) {
if (splitBarcode.getPidBarcode().equals(inListItem.getRi())){
item = inListItem;
break;
}
}
}
}
}
DataLog inTask = BoxUtil.generateInTask(pos, barcode, currentLoc);
inTask.setContainer(barcode.getPidBarcode());
inTask.setStockReturn(barcode.getReceiptOrder());
inTask.setProductName(barcode.getDescription());
inTask.setStockreturnNoLine(barcode.getRowNumber());
if (item != null){
inTask.setStockReturn(item.getName());
inTask.setProductName("");
inTask.setQty(item.getNum());
inTask.setStockreturnNoLine(item.getReceiveFlag());
}
taskService.addTaskToExecute(inTask);
resultMap.put("boxStr", barcode.getBarcode());
......@@ -186,11 +177,13 @@ public class AgvDeviceController {
@ApiOperation("定时获取入库任务")
@RequestMapping("/service/store/agvBox/getPutInTask")
@AnonymousAccess
public ResultBean getPutInTask() {
public ResultBean getPutInTask(String cid) {
List<CtuPutInTask> putInTaskList = new ArrayList<>();
List<DataLog> allTasks = taskService.getAllTasks();
Storage storage = dataCache.getStorage(cid);
if (storage != null) {
for (DataLog dataLog : allTasks) {
if (dataLog.isPutInTask() && !dataLog.isFinished() && !dataLog.isCancel()){
if (dataLog.isPutInTask() && !dataLog.isFinished() && !dataLog.isCancel() && storage.getId().equals(dataLog.getStorageId())) {
CtuPutInTask putInTask = new CtuPutInTask();
putInTask.setStatus(dataLog.getStatus());
putInTask.setPosName(dataLog.getPosName());
......@@ -199,6 +192,7 @@ public class AgvDeviceController {
putInTaskList.add(putInTask);
}
}
}
return ResultBean.newOkResult(putInTaskList);
}
......@@ -286,9 +280,13 @@ public class AgvDeviceController {
@RequestMapping(value = "/service/store/agvBox/getOutTask")
@AnonymousAccess
public ResultBean getOutTask(HttpServletRequest request) {
List<CtuCheckOutTask> ctuCheckOutTaskList = new ArrayList<>();
String cid = request.getParameter("cid");
Storage storage = dataCache.getStorage(cid);
if (storage != null) {
Collection<DataLog> queueTasks = taskService.getQueueTasks();
queueTasks = queueTasks.stream().sorted(Comparator.comparing(DataLog::getPosName)).collect(Collectors.toList());
List<CtuCheckOutTask> ctuCheckOutTaskList = new ArrayList<>();
for (DataLog queueTask : queueTasks) {
if (queueTask.isWait() && queueTask.isCheckOutTask()) {
CtuCheckOutTask ctuCheckOutTask = new CtuCheckOutTask();
......@@ -303,6 +301,7 @@ public class AgvDeviceController {
ctuCheckOutTaskList.add(ctuCheckOutTask);
}
}
}
return ResultBean.newOkResult(ctuCheckOutTaskList);
}
......
......@@ -14,7 +14,6 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -50,7 +49,6 @@ public class MaterialOperationController {
*/
@ApiOperation("人工上架")
@RequestMapping("/generatePutawayTask")
@AnonymousAccess
public ResultBean generatePutawayTask(@RequestBody Map<String, String> paramMap) {
String code = paramMap.get("code");
String posName = paramMap.get("posName");
......@@ -131,7 +129,6 @@ public class MaterialOperationController {
*/
@ApiOperation("人工下架")
@RequestMapping("/generatePickingTask")
@AnonymousAccess
public ResultBean generatePickingTask(@RequestBody Map<String, String> paramMap) {
String code = paramMap.get("code");
log.info("[人工下架] 开始处理,code: {}", code);
......
......@@ -113,6 +113,7 @@ public class MaterialUnpackingController {
barcode.setHeight(2);
barcode.setAmount(item.getNum() - item.getInNum());
barcode.setLabelAmount(item.getNum());
barcode.setReceiptOrder(receiptOrder);
barcodeManager.save(barcode);
log.info("条码[" + barcode.getBarcode() + "]验证通过,入库数:" + item.getInNum() + ",需求数:" + item.getNum());
......@@ -253,19 +254,35 @@ public class MaterialUnpackingController {
Barcode newBarcode = new Barcode();
newBarcode.setBarcode(data);
newBarcode.setPidBarcode(barcode.getBarcode());
newBarcode.setReceiptOrder(barcode.getReceiptOrder());
newBarcode.setPlateSize(2);
newBarcode.setHeight(2);
newBarcode.setPartNumber(barcode.getPartNumber());
newBarcode.setAmount(component.getMinimumPackagingQuantity());
newBarcode.setBatch(barcode.getBatch());
newBarcode.setDateCode(barcode.getDateCode());
newBarcode.setDescription(component.getDescription());
newBarcode.setProvider(barcode.getProvider());
newBarcode.setProviderMaterialCode(component.getProviderMaterialCode());
newBarcode.setProviderNumber(barcode.getProviderNumber());
newBarcode.setAmount(component.getMinimumPackagingQuantity());
newBarcode.setContainmentAmount(component.getContainmentAmount());
newBarcode.setPlant(component.getPlant());
newBarcode.setOriginalFactory(component.getOriginalFactory());
newBarcode.setMassProduction(component.getMassProduction());
newBarcode.setRowNumber(item.getRowNumber());
barcodeManager.saveBarcode(newBarcode);
return ResultBean.newOkResult(newBarcode);
} else {
barcode.setAmount(remainNum);
barcode.setPidBarcode(barcode.getBarcode());
barcode.setDescription(component.getDescription());
barcode.setProviderMaterialCode(component.getProviderMaterialCode());
barcode.setAmount(component.getMinimumPackagingQuantity());
barcode.setContainmentAmount(component.getContainmentAmount());
barcode.setPlant(component.getPlant());
barcode.setOriginalFactory(component.getOriginalFactory());
barcode.setMassProduction(component.getMassProduction());
barcode.setRowNumber(item.getRowNumber());
barcodeManager.saveBarcode(barcode);
return ResultBean.newOkResult(barcode);
}
......@@ -327,10 +344,12 @@ public class MaterialUnpackingController {
}
//拆分
if (!barcode.getBarcode().equals(barcode.getPidBarcode())){
SplitContainerResponse splitContainerResponse = momoApi.splitContainer(new SplitContainerRequest(barcode.getPidBarcode(), barcode.getBarcode(), barcode.getAmount() + "", "WMS"));
if (!"200".equals(splitContainerResponse.getResult())) {
return ResultBean.newErrorResult(-1, "smfcore.splitContainer.error", "拆包通知失败[{0}]", new String[]{splitContainerResponse.getMessage()});
}
}
item.setInNum(item.getInNum() + barcode.getAmount());
inListItems.set(index, item);
......@@ -346,9 +365,16 @@ public class MaterialUnpackingController {
boxBarcode.setDateCode(barcode.getDateCode());
boxBarcode.setProvider(barcode.getProvider());
boxBarcode.setProviderNumber(barcode.getProviderNumber());
boxBarcode.setReceiptOrder(barcode.getReceiptOrder());
boxBarcode.setDescription(barcode.getDescription());
boxBarcode.setProviderMaterialCode(barcode.getProviderMaterialCode());
boxBarcode.setContainmentAmount(barcode.getContainmentAmount());
boxBarcode.setPlant(barcode.getPlant());
boxBarcode.setOriginalFactory(barcode.getOriginalFactory());
boxBarcode.setMassProduction(barcode.getMassProduction());
//生成任务
barcodeManager.save(boxBarcode);
DataLog dataLog = new DataLog();
dataLog.setBarcode(barcode.getBarcode());
dataLog.setPartNumber(barcode.getPartNumber());
......
package com.neotel.smfcore.custom.aiqingzhiyin1643.controller;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.system.util.TaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* 合并料箱接口
*/
@Api(tags = "合并料箱")
@Slf4j
@RestController
@RequestMapping("/mergeMaterialBox")
public class MergeMaterialBoxController {
@Autowired
private CodeResolve codeResolve;
@Autowired
private TaskService taskService;
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private DataCache dataCache;
/**
* 合并料箱
*/
@ApiOperation("合并料箱")
@RequestMapping("/merge")
public ResultBean merge(@RequestBody Map<String, String> paramMap) {
String currentBox = paramMap.get("currentBox");
String s = paramMap.get("");
return ResultBean.newOkResult("");
}
}
\ No newline at end of file
......@@ -53,7 +53,11 @@ public class MomoApi extends BaseSmfApiListener {
List<Map<String,Object>> RKContainer = new ArrayList<>();
Map<String,Object> rkContainerMap = new HashMap<>();
rkContainerMap.put("CQty",task.getNum());
if (StringUtils.isNotEmpty(task.getContainer())){
rkContainerMap.put("Container",task.getContainer());
} else {
rkContainerMap.put("Container",task.getBarcode());
}
RKContainer.add(rkContainerMap);
detailMap.put("RKContainer",RKContainer);
......
......@@ -129,6 +129,7 @@ public class MomoController {
item.setLotNo(detail.getLotNo());
item.setNum((int) Double.parseDouble(detail.getQty()));
item.setReceiveFlag(detail.getReceiveFlag());
item.setRowNumber(material.getRowNumber());
inListItem.add(item);
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!