Commit b1868acc zshaohui

1.呼叫空箱bug修改

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