Commit 1536edf5 LN

工单合单修改。执行工单出库时必须先绑定箱子

1 个父辈 8464247b
...@@ -11,6 +11,7 @@ import com.neotel.smfcore.core.device.util.DataCache; ...@@ -11,6 +11,7 @@ import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.OrderPnCache; import com.neotel.smfcore.core.order.OrderPnCache;
import com.neotel.smfcore.core.order.bean.OrderBoxInfo;
import com.neotel.smfcore.core.order.bean.OrderPnInfo; import com.neotel.smfcore.core.order.bean.OrderPnInfo;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS; import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto; import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto;
...@@ -403,6 +404,20 @@ public class OrderController { ...@@ -403,6 +404,20 @@ public class OrderController {
} }
LiteOrder liteOrder = orderList.get(0); LiteOrder liteOrder = orderList.get(0);
//判断是否绑定过箱子
boolean isbind=false;
if(liteOrder.getBoxInfos()!=null){
for (OrderBoxInfo boxInfo:
liteOrder.getBoxInfos()) {
if(boxInfo.getOperater().equals(user.getUsername())){
isbind=true;
}
}
}
if(!isbind){
return ResultBean.newErrorResult(-1, "smfcore.order.noBind", "操作失败,请先为工单{0}绑定箱子",new String[]{liteOrder.getOrderNo()});
}
//设置此工单的任务可以发送给料架 //设置此工单的任务可以发送给料架
List<DataLog> taskList = getOrderTaskByUser(user, liteOrder, true); List<DataLog> taskList = getOrderTaskByUser(user, liteOrder, true);
for (DataLog datalog : for (DataLog datalog :
......
...@@ -125,8 +125,10 @@ public class OrderSheetController { ...@@ -125,8 +125,10 @@ public class OrderSheetController {
} }
Query query = QueryHelp.getQuery(criteria); Query query = QueryHelp.getQuery(criteria);
//查询所有出库中或关闭的 //查询所有出库中或关闭的
query.addCriteria(Criteria.where("status").in(new Integer[]{LITEORDER_STATUS.EXECUTING, LITEORDER_STATUS.CLOSED,LITEORDER_STATUS.EXECUTING_END,LITEORDER_STATUS.ADDOUTBOUND})); query.addCriteria(Criteria.where("status").in(new Integer[]{LITEORDER_STATUS.EXECUTING, LITEORDER_STATUS.CLOSED}));
query.addCriteria(Criteria.where("sheetEnd").ne(true)); query.addCriteria(Criteria.where("sheetEnd").ne(true));
query.addCriteria(Criteria.where("boxInfos").ne(null));//必须绑定箱子
query.addCriteria(Criteria.where("shortageOut").ne(true));//非欠料出库
PageData<LiteOrder> orderList = liteOrderManager.findByPage(query, pageable); PageData<LiteOrder> orderList = liteOrderManager.findByPage(query, pageable);
PageData<OrderDto> resultList = orderMapper.toDto(orderList); PageData<OrderDto> resultList = orderMapper.toDto(orderList);
...@@ -147,7 +149,6 @@ public class OrderSheetController { ...@@ -147,7 +149,6 @@ public class OrderSheetController {
if (dataLog == null) { if (dataLog == null) {
throw new ValidateException("smfcore.orderSheet.barcode", "未找到料盘{0}的工单信息",new String[]{barcodeInfo.getBarcode()} ); throw new ValidateException("smfcore.orderSheet.barcode", "未找到料盘{0}的工单信息",new String[]{barcodeInfo.getBarcode()} );
} }
//TODO 判断任务是否已结束,未结束不能绑定位置
LiteOrder liteOrder= liteOrderManager.findByOrderNo(dataLog.getSourceName()); LiteOrder liteOrder= liteOrderManager.findByOrderNo(dataLog.getSourceName());
if(liteOrder==null){ if(liteOrder==null){
...@@ -228,19 +229,23 @@ public class OrderSheetController { ...@@ -228,19 +229,23 @@ public class OrderSheetController {
@PreAuthorize("@el.check('workOrder')") @PreAuthorize("@el.check('workOrder')")
public ResultBean endOrderSheet(@RequestBody Map<String, Object> mapValues) { public ResultBean endOrderSheet(@RequestBody Map<String, Object> mapValues) {
String orderNo = mapValues.get("orderNo").toString(); String orderNo = mapValues.get("orderNo").toString();
LiteOrder liteOrder= liteOrderManager.findByOrderNo(orderNo); LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo);
if(liteOrder==null){ if (liteOrder == null) {
throw new ValidateException("smfcore.orderSheet.barcode", "未找到工单{0}",new String[]{orderNo} ); throw new ValidateException("smfcore.orderSheet.barcode", "未找到工单{0}", new String[]{orderNo});
} }
if(liteOrder.getBoxNum()<=0){ if(liteOrder.getBoxNum()<=0){
throw new ValidateException("smfcore.orderSheet.noBox", "工单{0}还未绑定箱子",new String[]{liteOrder.getOrderNo()} ); throw new ValidateException("smfcore.orderSheet.noBox", "工单{0}还未绑定箱子",new String[]{liteOrder.getOrderNo()} );
} }
//判断工单是否完成
if(liteOrder.isClosed() ){
throw new ValidateException("smfcore.orderSheet.end.error", "操作失败,工单{0}还未出库完成", new String[]{orderNo});
}
if(liteOrder.getCurrBoxNum()<liteOrder.getBoxNum()){ if (liteOrder.getCurrBoxNum() < liteOrder.getBoxNum()) {
throw new ValidateException("smfcore.orderSheet.endOrderSheet.error", "工单{0}合单进度未完成",new String[]{orderNo} ); throw new ValidateException("smfcore.orderSheet.endOrderSheet.error", "工单{0}合单进度未完成", new String[]{orderNo});
} }
log.info("工单合单:工单号["+liteOrder.getOrderNo()+"]完成合单"); log.info("工单合单:工单号[" + liteOrder.getOrderNo() + "]完成合单");
liteOrder.setSheetEnd(true); liteOrder.setSheetEnd(true);
liteOrderManager.save(liteOrder); liteOrderManager.save(liteOrder);
liteOrderCache.addOrderToMap(liteOrder); liteOrderCache.addOrderToMap(liteOrder);
......
...@@ -159,7 +159,7 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -159,7 +159,7 @@ public class LiteOrder extends BasePo implements Serializable {
/** /**
* 当前箱子数 * 当前箱子数
*/ */
private Integer currBoxNum; private Integer currBoxNum=0;
/** /**
* 工单是否完成合单 * 工单是否完成合单
......
...@@ -260,6 +260,9 @@ smfcore.posNotDel=\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u5148\u5220\u9664[{0}]\u7 ...@@ -260,6 +260,9 @@ smfcore.posNotDel=\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u5148\u5220\u9664[{0}]\u7
smfcore.orderShortage.hasOut=\u8BF7\u7B49\u5F85\u5DE5\u5355[{0}]\u6B20\u6599\u51FA\u5E93\u7ED3\u675F smfcore.orderShortage.hasOut=\u8BF7\u7B49\u5F85\u5DE5\u5355[{0}]\u6B20\u6599\u51FA\u5E93\u7ED3\u675F
smfcore.orderShortage.statusError=\u64CD\u4F5C\u5931\u8D25\uFF0C{0}\u975E\u5DE5\u5355\u6B20\u6599\u72B6\u6001 smfcore.orderShortage.statusError=\u64CD\u4F5C\u5931\u8D25\uFF0C{0}\u975E\u5DE5\u5355\u6B20\u6599\u72B6\u6001
smfcore.orderSheet.taskNotEnd=\u64CD\u4F5C\u5931\u8D25\uFF0C\u5DE5\u5355\u51FA\u5E93\u4EFB\u52A1[{0}][{1}}]\u8FD8\u672A\u7ED3\u675F smfcore.orderSheet.taskNotEnd=\u64CD\u4F5C\u5931\u8D25\uFF0C\u5DE5\u5355\u51FA\u5E93\u4EFB\u52A1[{0}][{1}}]\u8FD8\u672A\u7ED3\u675F
smfcore.orderSheet.end.error=\u64CD\u4F5C\u5931\u8D25\uFF0C\u5DE5\u5355{0}\u8FD8\u672A\u51FA\u5E93\u5B8C\u6210
smfcore.order.noBind=\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u5148\u4E3A\u5DE5\u5355{0}\u7ED1\u5B9A\u7BB1\u5B50
#smfcore.order.out.short=\u5DE5\u5355\u51FA\u5E93\u5931\u8D25\uFF0C\u5DE5\u5355\u7F3A\u6599 #smfcore.order.out.short=\u5DE5\u5355\u51FA\u5E93\u5931\u8D25\uFF0C\u5DE5\u5355\u7F3A\u6599
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0} #smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!