Commit b1868acc zshaohui

1.呼叫空箱bug修改

2.工单出库bug修改
3.入库时增加重量字段
1 个父辈 5444868a
......@@ -169,6 +169,12 @@ public class Barcode extends BasePo implements Serializable {
* 是否要出库,true是出库
*/
private boolean isOut = false;
/**
* 重量
*/
private String weight;
/**
* 是否是锡膏
*/
......@@ -476,7 +482,7 @@ public class Barcode extends BasePo implements Serializable {
return null;
}
public void UpdateSubCode(Barcode barcode) {
public synchronized void UpdateSubCode(Barcode barcode) {
if (subCodeList == null) {
subCodeList = Lists.newArrayList();
......
......@@ -88,7 +88,7 @@ public class Component extends BasePo implements Serializable {
* 供应商PN,用于扫码贴标机转换PN
*/
// private String supplierPn;
//uid
//
private String uid;
//物料描述
......
......@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.bean.BarcodeRule;
import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
......@@ -51,6 +52,15 @@ public class CodeResolve {
* 解析条码为单个 Barcode,自动保存到数据库
*/
public CodeBean resolveSingleCode(String barcodeItemStr,int type){
log.info("解析条码传值为:"+barcodeItemStr);
//判断是否包含 || ,如果包含就把第二个设置成重量
String weight = "";
if (barcodeItemStr.contains("//")) {
weight = barcodeItemStr.split("//")[1];
if (!barcodeItemStr.contains("http")) {
barcodeItemStr = barcodeItemStr.split("//")[0];
}
}
if(barcodeRuleList == null || barcodeRuleList.isEmpty()){
CodeBean codeBean = new CodeBean();
......@@ -129,7 +139,7 @@ public class CodeResolve {
Barcode barcodeFromRule = codeBeanFromRule.getBarcode();
if(barcodeFromRule != null){
boolean needUpdate = false;
int lastLabelAmount = barcode.getLabelAmount();
/*int lastLabelAmount = barcode.getLabelAmount();
int currentLabelAmount = barcodeFromRule.getAmount();
if(currentLabelAmount != lastLabelAmount){
//本次解析出来的数量与上次条码解析出来的数量不一样,重新设置数量
......@@ -137,7 +147,7 @@ public class CodeResolve {
barcode.setAmount(currentLabelAmount);
barcode.setLabelAmount(currentLabelAmount);
needUpdate = true;
}
}*/
Date produceDate = barcodeFromRule.getProduceDate();
if(produceDate != null){
//抓取到了生产日期,未抓取到过期日期,重新设置过期日期
......@@ -151,7 +161,6 @@ public class CodeResolve {
}
}
}
if(needUpdate){
try {
barcodeManager.save(barcode);
......@@ -160,7 +169,11 @@ public class CodeResolve {
}
}
}
//判断重量是否为空
if (StringUtils.isNotBlank(weight)){
barcode.setWeight(weight);
barcodeManager.save(barcode);
}
codeBeanFromRule.setError(null,null);
codeBeanFromRule.setCodeStr(barcode.getBarcode());
codeBeanFromRule.setBarcode(barcode);
......@@ -245,8 +258,10 @@ public class CodeResolve {
barcodeManager.save(barcodeFromRule);
}
}
//设置重量
if (StringUtils.isNotBlank(weight)){
barcodeFromRule.setWeight(weight);
}
barcode = barcodeManager.save(barcodeFromRule);
codeBeanFromRule.setCodeStr(barcode.getBarcode());
......
......@@ -713,6 +713,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
barcode.setCheckOutDate(new Date(), task.getOperator());
barcode.setPosName("");
barcode.setOut(false);
barcode.setOrderItemId("");
barcodeManager.save(barcode);
task.setBatchInfo(barcode.getBatch());
......
......@@ -239,7 +239,10 @@ public class LiteOrderCache {
*/
private synchronized void finishedOrderTask(DataLog task) throws ValidateException {
if (OP.CHECKOUT == task.getType()) {
//2位的partNumber是料箱,跳过
if (task.getPartNumber().length() == 2) {
return;
}
//更新工单状态
String orderNo = task.getSourceName();
if (!Strings.isNullOrEmpty(orderNo)) {
......
package com.neotel.smfcore.core.storage.bean;
import lombok.Data;
@Data
public class PosUseItem {
private int size;
private long weight;
private String posName;
}
package com.neotel.smfcore.core.storage.rest;
import cn.hutool.core.convert.Convert;
import com.google.common.collect.Maps;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
......@@ -23,6 +24,7 @@ import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.bean.PosUseItem;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
......@@ -172,6 +174,7 @@ public class MaterialBoxController {
int newAmount = oldAmount - opQty;
subBarcode.setAmount(newAmount);
subBarcode.setOut(false);
subBarcode.setOrderItemId(null);
subBarcode = barcodeManager.save(subBarcode);
finishTask(barcode, OP.CHECKOUT, null, subBarcode, opQty);
......@@ -477,10 +480,33 @@ public class MaterialBoxController {
if (StringUtils.isNotBlank(storageId)) {
c.and("storageId").is(storageId);
}
Query query = new Query(c).with(Sort.by(Sort.Direction.ASC, "barcode.amount")).limit(1);
List<StoragePos> storagePoss = storagePosManager.findByQuery(query);
if (storagePoss != null && !storagePoss.isEmpty()) {
return storagePoss.get(0);
//判断有没有空料箱
if (StringUtils.isBlank(partNumber)) {
Query query = new Query(c).addCriteria(Criteria.where("barcode.subCodeList").exists(false));
StoragePos pos = storagePosManager.findByQueryOne(query);
if (pos != null) {
return pos;
}
}
Query query = new Query(c);
List<StoragePos> storagePosList = storagePosManager.findByQuery(query);
if (storagePosList != null && !storagePosList.isEmpty()) {
List<PosUseItem> posUseItemList = storagePosList.stream().map(item -> {
PosUseItem posUseItem = new PosUseItem();
int size = item.getBarcode().getSubCodeList() == null ? 0 : item.getBarcode().getSubCodeList().size();
String weight = item.getBarcode().getWeight();
String posName = item.getPosName();
posUseItem.setSize(size);
posUseItem.setPosName(posName);
posUseItem.setWeight(StringUtils.isBlank(weight) ? 999 : Double.valueOf(weight).intValue());
return posUseItem;
}).collect(Collectors.toList());
posUseItemList = posUseItemList.stream().sorted(Comparator.comparing(PosUseItem::getWeight).thenComparing(PosUseItem::getSize)).collect(Collectors.toList());
PosUseItem posUseItem = posUseItemList.get(0);
List<StoragePos> newPosNameList = storagePosList.stream().filter(item -> {
return item.getPosName().equals(posUseItem.getPosName());
}).collect(Collectors.toList());
return newPosNameList.get(0);
}
return null;
}
......
......@@ -331,22 +331,22 @@ public class StoragePosController {
@GetMapping(value = "/find/download")
@PreAuthorize("@el.check('checkOut')")
public void download(HttpServletResponse response, StoragePosFindCriteria criteria,Pageable pageable, HttpServletRequest request) throws IOException {
Query query=getPosFindCriteria(criteria);
Query query = getPosFindCriteria(criteria);
FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
@Override
public List<List<String>> getHeader() {
List<List<String>> header = new ArrayList<>();
Locale locale = request.getLocale();
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.barcode",locale,"条码编号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.partNumber",locale,"物料编号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.proDate",locale,"生产日期")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.expireDate",locale,"过期时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.posName",locale,"库位号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.amount",locale,"数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.putInTime",locale,"首次入库时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.putInDate",locale,"入库时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.barcode", locale, "条码编号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.partNumber", locale, "物料编号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.proDate", locale, "生产日期")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.expireDate", locale, "过期时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.posName", locale, "库位号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.lockName", locale, "工单号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.amount", locale, "数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.putInTime", locale, "首次入库时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.putInDate", locale, "入库时间")));
header.add(Lists.newArrayList("箱号"));
return header;
}
......@@ -355,28 +355,52 @@ public class StoragePosController {
List<List<Object>> dataList = new ArrayList<>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Map<String, Object>> list = new ArrayList<>();
List<StoragePos> storagePos = storagePosManager.findByQuery(query,pageable);
List<StoragePos> storagePos = storagePosManager.findByQuery(query, pageable);
for (StoragePos pos : storagePos) {
String proDate = pos.getBarcode().getProduceDate() == null ? "" : dateFormat.format(pos.getBarcode().getProduceDate());
String expireDate = pos.getBarcode().getExpireDate() == null ? "" : dateFormat.format(pos.getBarcode().getExpireDate());
String putInTime = (pos.getBarcode().getPutInTime() == -1) ? "" : dateFormat.format(new Date(pos.getBarcode().getPutInTime()));
if(ObjectUtil.isNotEmpty(putInTime)){
putInTime=dateFormat.format(pos.getBarcode().getPutInDate());
Barcode barcode = pos.getBarcode();
List<Barcode> subCodeList = barcode.getSubCodeList();
if (subCodeList != null && !subCodeList.isEmpty()) {
for (Barcode subCode : subCodeList) {
List<Object> data = new ArrayList<>();
data.add(subCode.getBarcode());
data.add(subCode.getPartNumber());
String proDate = subCode.getProduceDate() == null ? "" : dateFormat.format(subCode.getProduceDate());
data.add(proDate);
String expireDate = subCode.getExpireDate() == null ? "" : dateFormat.format(subCode.getExpireDate());
data.add(expireDate);
data.add(pos.getPosName());
data.add(subCode.getLockName());
data.add(subCode.getAmount());
String putInTime = (barcode.getPutInTime() == -1) ? "" : dateFormat.format(new Date(barcode.getPutInTime()));
if (ObjectUtil.isNotEmpty(putInTime)) {
putInTime = dateFormat.format(barcode.getPutInDate());
}
data.add(putInTime);
data.add(dateFormat.format(barcode.getPutInDate()));
data.add(barcode.getBarcode());
dataList.add(data);
}
} else {
String proDate = pos.getBarcode().getProduceDate() == null ? "" : dateFormat.format(pos.getBarcode().getProduceDate());
String expireDate = pos.getBarcode().getExpireDate() == null ? "" : dateFormat.format(pos.getBarcode().getExpireDate());
String putInTime = (pos.getBarcode().getPutInTime() == -1) ? "" : dateFormat.format(new Date(pos.getBarcode().getPutInTime()));
if (ObjectUtil.isNotEmpty(putInTime)) {
putInTime = dateFormat.format(pos.getBarcode().getPutInDate());
}
List<Object> data = new ArrayList<>();
data.add(pos.getBarcode().getBarcode());
data.add(pos.getBarcode().getPartNumber());
data.add(proDate);
data.add(expireDate);
data.add(pos.getPosName());
data.add(pos.getBarcode().getLockName());
data.add(pos.getBarcode().getAmount());
data.add(putInTime);
data.add(dateFormat.format(pos.getBarcode().getPutInDate()));
data.add("");
dataList.add(data);
}
List<Object> data = new ArrayList<>();
data.add(pos.getBarcode().getBarcode());
data.add(pos.getBarcode().getPartNumber());
data.add(proDate);
data.add(expireDate);
data.add(pos.getPosName());
data.add(pos.getBarcode().getLockName());
data.add(pos.getBarcode().getAmount());
data.add(putInTime);
data.add(dateFormat.format(pos.getBarcode().getPutInDate()));
dataList.add(data);
}
return dataList;
}
......
......@@ -41,6 +41,6 @@ public class HumitureManagerImpl implements IHumitureManager {
@Override
public List<Humiture> findByQuery(Query query) {
return null;
return humitureDao.findByQuery(query);
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!