From 7642a3e183b5a584d1da5eb6b48e0f9cb2b5c68c Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期一, 17 三月 2025 10:39:13 +0800
Subject: [PATCH] 修改问题
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 1158 ++++++++++++++++++++++++++++++++++++++++++
Pda/View/HouseDataSetting/BoxDevanning.html | 159 +++++
Wms/Wms/Controllers/PdaCrController.cs | 37 +
Wms/WMS.Entity/LogEntity/LogTask.cs | 2
Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs | 28 +
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs | 7
Wms/WMS.BLL/BllSoServer/WaveMageServer.cs | 8
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs | 85 +++
HTML/views/SOSetting/ExportNotice.html | 78 --
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs | 8
Wms/Wms/Controllers/DownApiController.cs | 21
11 files changed, 1,510 insertions(+), 81 deletions(-)
diff --git a/HTML/views/SOSetting/ExportNotice.html b/HTML/views/SOSetting/ExportNotice.html
index e10b7b3..88b2f83 100644
--- a/HTML/views/SOSetting/ExportNotice.html
+++ b/HTML/views/SOSetting/ExportNotice.html
@@ -130,7 +130,7 @@
</div>
<!-- 纭鍑哄簱鍙e脊绐� -->
<div class="layui-inline" id="divPickingArea" style="display: none; padding-top: 10px;">
- <div class="layui-inline">
+ <!-- <div class="layui-inline">
<label class="layui-form-label">鎷嗗灈鏂瑰紡</label>
<div class="layui-input-inline" style="width: 220px;">
<select name="UnstackWay" id="UnstackWay" lay-filter="UnstackWay" lay-search>
@@ -138,7 +138,7 @@
<option value="1">PDA鎷嗗灈</option>
</select>
</div>
- </div>
+ </div> -->
<!-- <div class="layui-inline DivLoadingArea" style="margin-top: 10px;">
<label class="layui-form-label">瑁呰溅鍙�</label>
<div class="layui-input-inline" style="width: 220px;">
@@ -158,8 +158,6 @@
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
- <option value="3">3</option>
- <option value="4">4</option>
</select>
</div>
</div>
@@ -340,7 +338,11 @@
</script>
<!-- #endregion -->
</div>
-
+<!-- if(d.Type == "1" && (d.Status == '2' || d.Status == '3')){
+ html += `<a class="layui-btn layui-btn-normal layui-btn-xs outClass" lay-event="beiLiaoOutKu">
+ <i class="layui-icon layui-icon-ok"></i>澶囨枡
+ </a>`;
+ } -->
<script type="text/html" id="table-content-list">
{{# function GetBtn1(d){
var html = '';
@@ -365,11 +367,7 @@
<i class="layui-icon layui-icon-delete"></i>鍙栨秷鍒嗛厤
</a>`;
}
- if(d.Type == "1" && (d.Status == '2' || d.Status == '3')){
- html += `<a class="layui-btn layui-btn-normal layui-btn-xs outClass" lay-event="beiLiaoOutKu">
- <i class="layui-icon layui-icon-ok"></i>澶囨枡
- </a>`;
- }
+
if( d.Status == '2' || d.Status == '3'){
html += `<a class="layui-btn layui-btn-normal layui-btn-xs outClass" lay-event="outKu">
<i class="layui-icon layui-icon-ok"></i>鍑哄簱
@@ -1274,50 +1272,8 @@
area: ['1200px', '90%'],
});
} else if (obj.event === 'outKu') {
- $("#UnstackWay").val(0)
- $("#UnstackWay").attr("disabled", false);
- //$("#LoadingArea").val('')
- $("#PickingArea").val('')
- $('.DivLoadingArea').show()
- form.render('select');
- var param = {
- soNo: SoNo
- };
- if (orderType == "0") {
- // 鍒ゆ柇鏄惁闇�瑕佹媶绠憋紝闇�瑕佹媶绠卞氨闇�瑕侀�夋嫨鍑哄簱鍙�
- sendData(IP + "/BllSo/IsNeedUnpack", param, 'get', function (res) {
- if (res.code == 0) { //鎴愬姛
- if (res.data == "1") {
- isNeedUnpack = '1'
- $('.DivPickingArea2').show()
- } else {
- isNeedUnpack = '0'
- $('.DivPickingArea2').hide()
- }
- if ($('#UnstackWay').val() == '1') {
- $('.DivPickingArea2').show()
- }
-
- outFunction(data.SONo)
- } else { //涓嶆垚鍔�
- layer.msg(res.msg, {
- icon: 2,
- time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
- }, function () {
- return;
- });
- }
- });
- } else {
- $("#UnstackWay").val(1)
- $("#UnstackWay").attr("disabled", true);
- form.render('select');
-
- $('.DivLoadingArea').hide()
-
- outFunction(data.SONo)
- }
-
+ $("#PickingArea").val('');
+ outFunction(data.SONo);
} else if (obj.event === 'beiLiaoOutKu') {
if (orderType != "1") {
@@ -1430,6 +1386,7 @@
//閫夋嫨鍑哄簱鍙e脊绐楁柟娉�
function outFunction(soNo) {
+
layer.open({
type: 1,
title: '纭鍑哄簱鍙�',
@@ -1449,16 +1406,7 @@
});
return;
}
- // if ($('#UnstackWay').val() == '0') {
- // if ($('#LoadingArea').val() == '') {
- // layer.msg("璇烽�夋嫨瑁呰溅鍙�", {
- // icon: 2,
- // time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
- // });
- // isChongFu = true;
- // return;
- // }
- // }
+
console.log($("#PickingArea").val())
if ($("#PickingArea").val() == '') {
layer.msg("璇烽�夋嫨鍑哄簱鍙�", {
@@ -1470,7 +1418,7 @@
}
var param = {
soNo: soNo,
- unstackingMode: $('#UnstackWay').val(),
+ //unstackingMode: $('#UnstackWay').val(),
outMode: pa,
//loadingAddre: $('#LoadingArea').val()
};
diff --git a/Pda/View/HouseDataSetting/BoxDevanning.html b/Pda/View/HouseDataSetting/BoxDevanning.html
new file mode 100644
index 0000000..f2c18f5
--- /dev/null
+++ b/Pda/View/HouseDataSetting/BoxDevanning.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="user-scalable=0,width=device-width,initial-scale=1.0" />
+ <!-- <meta name="viewport" content="width=device-width, initial-scale=0.665, minimum-scale=0.5, maximum-scale=2.0, user-scalable=no" /> -->
+ <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+ <title>Boxline PDA</title>
+
+ <link rel="stylesheet" href="/layui/css/layui.css" />
+ <link rel="stylesheet" href="/css/style.css" />
+ <script src="/js/adaptive.js"></script>
+ <link rel="stylesheet" href="/css/my.css" />
+ <link rel="stylesheet" href="/css/adapter.css" />
+ <style type="text/css">
+ .layout-bill-info {
+ height: 255px;
+ }
+ .layout-tbl-submit {
+ margin-top: 10px;
+ }
+ </style>
+ </head>
+ <body>
+ <div id="" class="main-content">
+ <div id="" class="layout-title">
+ <table border="" cellspacing="" cellpadding="">
+ <tr>
+ <td class="img-back"><a href="../index.html"><img src="/assets/back.jpg" ></a></td>
+ <td class="title-text">鎷嗙鎹㈡爣</td>
+ <td class="title-menu-icon"><img id="menuImg" src="/assets/menu.jpg" ></td>
+ </tr>
+ </table>
+ </div>
+ <div id="" class="layout-sub-content">
+ <div id="menuList" class="menu">
+ <ul class="" style="text-align: center;">
+ <li><a href="../index.html">涓婚〉</a></li>
+ <!-- <li><a href="productEnterConfirm.html">鍏ュ簱淇℃伅纭</a></li> -->
+ <li><a href="../login.html">閲嶆柊鐧诲綍</a></li>
+ </ul>
+ </div>
+
+ <div id="" class="layout-bill-info">
+ <form class="layui-form" action="">
+ <div id="BOX" class="layui-form-item layout-input">
+ <label class="layui-form-label" lang>澶栫鏉$爜锛�</label>
+ <div class="layui-input-block">
+ <input id="BOXCODE" type="text" lay-verify="required" lang langholder
+ placeholder="璇锋壂鎻忓绠辨潯鐮�" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ <div id="layout-boxcode" class="layui-form-item layout-input">
+ <label class="layui-form-label">鎷嗙鏁伴噺锛�</label>
+ <div class="layui-input-block">
+ <input id="devanQty" type="number" lang langholder
+ placeholder="璇疯緭鍏ユ媶绠辨暟閲�" autocomplete="off" class="layui-input"
+ oninput="value=value.replace(/^(0+)|[^\d]+/g,'')">
+ </div>
+ </div>
+ <table class="layout-tbl-submit" border="" cellspacing="" cellpadding="">
+ <tr>
+ <td style="width: 23%;"></td>
+ <td>
+ <button class="layout-btn layout-btn-red" lang type="button" lay-submit
+ lay-filter="formUnbind">鎷嗙</button>
+ </td>
+ <td style="width: 33%;"></td>
+
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+
+
+ <script src="/js/jquery-3.5.1.min.js"></script>
+ <script src="/layui/layui.js"></script>
+ <script src="/js/public.js"></script>
+ <script src="/js/jquery.cookie.js"></script>
+ <script>
+ layui.use(['form', 'jquery'], function() {
+ var form = layui.form
+
+ $("#menuImg").click(function(e){
+ //console.log("menuImg")
+ e.stopPropagation()
+
+ if($("#menuList").is(":hidden")){
+ $("#menuList").show()
+ }else{
+ $("#menuList").hide()
+ }
+ })
+ $('body').click(function(){
+ // //console.log("body")
+ $("#menuList").hide()
+ })
+
+
+ var isChongFu = true;
+ form.on('submit(formUnbind)', function(data) {
+ if (!$("#devanQty").val()) {
+ layer.msg('璇锋壂鎻忔墭鐩樻潯鐮�', {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ });
+ return;
+ }
+ if (!$("#BOXCODE").val()) {
+ layer.msg('璇锋壂鎻忓绠辨潯鐮�', {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ });
+ return;
+ }
+ if (isChongFu == true) {
+ isChongFu = false;
+ var param = {
+ "DevanQty": $("#devanQty").val(),
+ "BoxNo": $("#BOXCODE").val(),
+ }
+ sendData(IP + "/PdaCr/AddLableByDevanning", param, 'post', function(res) {
+ if (res.code == 0) { //鎴愬姛
+ layer.msg("瑙g粦鎴愬姛", {
+ icon: 1,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ }, function () {
+ tableData = null
+ $("#devanQty").val('')
+ $("#BOXCODE").val('')
+
+ isChongFu = true;
+ });
+ } else { //涓嶆垚鍔�
+ layer.msg(res.msg, {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ }, function() {isChongFu = true;});
+ }
+ });
+ return false; //闃绘琛ㄥ崟璺宠浆銆傚鏋滈渶瑕佽〃鍗曡烦杞紝鍘绘帀杩欐鍗冲彲銆�
+ }else{
+ layer.msg("璇峰嬁閲嶅鐐瑰嚮", {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ });
+ }
+
+ });
+
+ // form.verify({
+ // stock: [/^[\S]{6}$/, '鎵樼洏鏉$爜蹇呴』涓哄叚浣嶅瓧绗�']
+ // });
+ })
+ </script>
+ </body>
+</html>
diff --git a/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs b/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
index 1e79eb3..fd24b15 100644
--- a/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
+++ b/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
@@ -75,4 +75,11 @@
public string PalletNo { get; set; }
public string BoxNo { get; set; }
}
+
+
+ public class PdaDevaningVm
+ {
+ public decimal DevanQty { get; set; }
+ public string BoxNo { get; set; }
+ }
}
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
index 2c3e986..96924c1 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -1,8 +1,10 @@
锘縰sing System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
+using Dm;
using Model.ModelDto.BllCheckDto;
using Model.ModelDto.PdaDto;
using SqlSugar;
@@ -1164,5 +1166,88 @@
}
}
#endregion
+
+ #region 绠辩爜鎷嗙璐存爣
+ /// <summary>
+ /// 鎷嗙娣诲姞鏍囩
+ /// </summary>
+ /// <param name="boxNo"></param>
+ /// <param name="devanQty"></param>
+ /// <param name="userId"></param>
+ public void AddLableByDevanning(string boxNo, decimal devanQty, int userId)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(boxNo))
+ {
+ throw new Exception("绠辩爜涓嶈兘涓虹┖");
+ }
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+
+ //搴撳瓨绠辨敮鏄庣粏淇℃伅
+ var boxList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo).ToList();
+ if (boxList.Count != 1)
+ {
+ throw new Exception("璇ョ鐮佷俊鎭敊璇紝瀛樺湪澶氫釜姝ょ鐮佷俊鎭�");
+ }
+ var boxInfo = boxList.First();
+ if (boxInfo.Qty<=devanQty)
+ {
+ throw new Exception("鎷嗙鏁伴噺澶х瓑浜庡綋鍓嶇鍐呮暟閲�");
+ }
+
+ boxInfo.Qty -= devanQty;
+ boxInfo.BitBoxMark = "1";
+ //鏇存柊绠辩爜搴撳瓨琛�
+ Db.Updateable(boxInfo).ExecuteCommand();
+
+ var boxStr = boxInfo.BoxNo.Substring(0, boxInfo.BoxNo.Length - 6);//鑾峰彇绠辩爜鍓嶇紑-闄ゅ悗鍏綅娴佹按澶�
+ var maxBoxCode = Db.Queryable<BllBoxInfo>().Where(m => m.BoxNo.Contains(boxStr) && m.IsDel == "0" && m.Origin == "WMS鐢熸垚").Max(a => a.BoxNo);
+ var boxNoNew = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
+
+ // 娣诲姞鏂扮鐮佷俊鎭�
+ var boxModel = new DataBoxInfo()
+ {
+ StockDetailId = boxInfo.StockDetailId,
+ PalletNo = boxInfo.PalletNo,
+ BoxNo = boxNoNew,
+ Qty = devanQty,
+ FullQty = boxInfo.FullQty,
+
+ Status = "2",//0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ LotNo = boxInfo.LotNo,
+ LotText = boxInfo.LotText,
+ SkuNo = boxInfo.SkuNo,
+ SkuName = boxInfo.SkuName,
+ Standard = boxInfo.Standard,
+
+ SupplierLot = boxInfo.SupplierLot,
+ InspectStatus = boxInfo.InspectStatus,
+ InspectMark = boxInfo.InspectMark,
+ BitBoxMark = "1",
+ ProductionTime = boxInfo.ProductionTime,
+ ExpirationTime = boxInfo.ExpirationTime,
+
+ CreateUser = 0,
+ CreateTime = DateTime.Now
+ };
+
+ Db.Insertable(boxModel).ExecuteCommand();
+
+ //娣诲姞鎿嶄綔鏃ュ織
+ new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "鎿嶄綔鏃ュ織", boxNo, "缂栬緫", $"鎷嗙璐存爣锛氬師绠辩爜锛歿boxNo}鎷嗙锛屾坊鍔犳柊绠辩爜{boxNoNew}", userId);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+ }
+ catch (Exception e)
+ {
+ //鍥炴粴浜嬪姟
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+ #endregion
+
}
}
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index a8be286..e0f4851 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -26,12 +26,16 @@
using System.Runtime.Intrinsics.X86;
using ZXing.OneD;
using System.Threading.Tasks;
+using System.Diagnostics;
+using System.Drawing.Drawing2D;
+using Model.ModelDto.LogDto;
namespace WMS.BLL.BllSoServer
{
public class ExportNoticeServer : DbHelper<BllExportNotice>, IExportNoticeServer
{
private static readonly SqlSugarScope Db = DataContext.Db;
+ private readonly object IssueOutLock = new object();
public ExportNoticeServer() : base(Db)
{
}
@@ -2419,12 +2423,9 @@
Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
var qty = 0m;
var house = "";
- if (notice.Type == "0")
- {
- house = "W01";
- }
+
//鍒嗛厤璐х墿
- qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, house);
+ qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, notice.WareHouseNo);
foreach (var sc in stockQtyDic)
{
var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key);
@@ -2967,6 +2968,1153 @@
#endregion
+ #region 涓嬪彂鍑哄簱銆佸嚭搴撳畬鎴愩�侀噸鏂颁笅鍙戜换鍔°�佸彇娑堜换鍔°�佸紓甯稿鐞�
+
+ public string GetHouseBySo(string soNo)
+ {
+ try
+ {
+ var notcie = Db.Queryable<BllExportNotice>().First(m=>m.IsDel == "0" && m.SONo == soNo);
+ if (notcie == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曚俊鎭�");
+ }
+ return notcie.WareHouseNo;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
+
+ public List<OutCommandDto> IssueOutHouseLk(string soNo, string outMode, int userId, string url, out string str)
+ {
+ try
+ {
+ var outDto1 = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚堬紙娣卞害涓�1鐨勫偍浣嶏級
+ //璁板綍閿欒淇℃伅鐨勯泦鍚� //1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱
+ var flagList = new List<int>();
+
+ var com = new Common();
+ var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0");
+ if (notice == null)
+ {
+ throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�");
+ }
+ if (notice.WareHouseNo != "W02")
+ {
+ throw new Exception("浠撳簱鍙烽敊璇�");
+ }
+ //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�)
+ var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "2")).ToList();
+ if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按
+ {
+ throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
+ }
+
+ #region 闆嗗悎
+ //瑕佸嚭搴撶殑鎵樼洏闆嗗悎
+ var outLpnList = list.Select(m => m.PalletNo).ToList();
+ //瑕佸嚭搴撶殑鏄庣粏闆嗗悎
+ var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
+ //鐗╂枡缂栫爜琛�
+ var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+ //鍖呰琛�
+ var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
+ Db.BeginTran();
+ try
+ {
+ List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴�
+ //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
+ foreach (var item in list)
+ {
+ var taskNoStr = "";
+
+ // 鍌ㄤ綅鍙�
+ var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
+
+ #region 鍒ゆ柇
+
+ //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+ if (string.IsNullOrWhiteSpace(locateNo)) //搴撳
+ {
+ //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑
+ var imBl = com.GetImTask(item.PalletNo);
+ if (imBl != null)
+ {
+ flagList.Add(4);
+ continue;
+ }
+ //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑锛�
+ if (item.Status == "0")
+ {
+ //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚
+ item.Status = "2";//鐘舵��
+ item.OutMode = outMode;//鍑哄簱鍙�
+ Db.Updateable(item).ExecuteCommand();
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+ if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+ {
+ noticeDetail.FactQty += item.Qty;
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+ {
+ var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+ if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+ {
+ notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ }
+ }
+ flagList.Add(0);
+ continue;
+ }
+
+ var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
+ if (locate == null)
+ {
+ flagList.Add(2);
+ continue;
+ }
+ //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧�
+ if (locate.Flag == "2")
+ {
+ flagList.Add(3);
+ continue;
+ }
+
+ #endregion
+
+ if (locate.Status == "1") //鏈夌墿鍝�
+ {
+ #region 娣诲姞鍑哄簱浠诲姟
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locate.LocatNo,//璧峰浣嶇疆
+ EndLocat = outMode,//鐩爣浣嶇疆
+ PalletNo = item.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ };
+ Db.Insertable(exTask).ExecuteCommand();
+ logTaskList.Add(exTask);
+
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = item.PalletNo,//鎵樼洏鍙�
+ StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+ StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
+ EndLocate = outMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉�
+ OutMode = outMode, //鍑哄簱鍙�
+ Order = 1,
+
+ //UnstackingMode = "unstackingMode2",//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑� 1 浜哄伐鎷h揣鍑�
+ //CompleteQty = outCount2, //鎷嗙殑浠舵暟
+ //BoxexQty = outCount, //鎬讳欢鏁�
+ });
+ taskNoStr = exTask.TaskNo;
+
+ #endregion
+
+ #region 鏀瑰彉鏁版嵁
+ if (item.Status == "0")//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩�
+ {
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+ if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+ {
+ noticeDetail.FactQty += item.Qty;
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+ {
+ var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+ if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+ {
+ notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ }
+ }
+ locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
+ Db.Updateable(locate).ExecuteCommand();
+
+ item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
+ item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛�
+ //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
+ item.OutMode = outMode;//鍑哄簱鍙�
+ //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
+ Db.Updateable(item).ExecuteCommand();
+
+ #endregion
+
+ flagList.Add(0);
+ }
+ else if (locate.Status == "3") //鍑哄簱涓�
+ {
+ #region 鏀瑰彉鏁版嵁
+ //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+ if (item.Status == "0")
+ {
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+ if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+ {
+ noticeDetail.FactQty += item.Qty;
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+ {
+ var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+ if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+ {
+ notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ }
+ }
+ var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
+ if (taskNo == null)
+ {
+ taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
+ }
+ if (taskNo == null)
+ {
+ throw new Exception($"鎵樼洏鍙凤細{item.PalletNo},鍑哄簱寮傚父");
+ }
+ item.TaskNo = taskNo.TaskNo;
+ item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛�
+ item.OutMode = item.OutMode;//鍑哄簱鍙�
+ //item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡
+ Db.Updateable(item).ExecuteCommand();
+ flagList.Add(0);
+ #endregion
+ }
+ else if (locate.Status == "5") //绉诲嚭涓�
+ {
+ flagList.Add(1);
+ }
+ }
+
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
+ Db.CommitTran();
+
+ str = string.Empty;
+ if (flagList.Count(m => m == 0) > 0)
+ {
+ str += "0.涓嬪彂鎴愬姛銆�";
+ }
+ if (flagList.Count(m => m == 1) > 0)
+ {
+ str += "1.褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�";
+ }
+ if (flagList.Count(m => m == 2) > 0)
+ {
+ str += "2.鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�";
+ }
+ if (flagList.Count(m => m == 3) > 0)
+ {
+ str += "4.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
+ }
+ if (flagList.Count(m => m == 4) > 0)
+ {
+ str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
+ }
+ if (flagList.Count(m => m == 5) > 0)
+ {
+ str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鎷嗘墭璇风◢鍚庝笅鍙戙��";
+ }
+ if (outDto1.Count > 0)
+ {
+ // 姝e紡杩愯绋嬪簭鏀惧紑
+ var list2 = outDto1.Select(m => m.TaskNo).ToList();
+ var jsonData = JsonConvert.SerializeObject(outDto1);
+ string response = "";
+
+ try
+ {
+ var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+ //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+ var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+ //////瑙f瀽杩斿洖鏁版嵁
+ //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+ //if (wcsModel.StatusCode == 0)
+ //{
+ // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+ new TaskServer().EditTaskIssueOk(list2, time1, time2);
+ str += "涓嬪彂鎴愬姛";
+ //}
+ //if (wcsModel.StatusCode == -1)
+ //{
+ // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
+ // throw new Exception(wcsModel.Msg);
+ //}
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+
+ }
+
+ return outDto1;
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+
+
+ #endregion
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
+
+ public List<OutCommandDto> IssueOutHouseMk(string soNo, string outMode, int userId, string url, out string str)
+ {
+ try
+ {
+ #region 闆嗗悎
+
+ var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級
+ var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級
+ var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎
+ //璁板綍閿欒淇℃伅鐨勯泦鍚�
+ var flagList = new List<int>();//1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱
+
+ #endregion
+ var com = new Common();
+
+ var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0");
+ if (notice == null)
+ {
+ throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�");
+ }
+ //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�)
+ var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "2")).ToList();
+ if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按
+ {
+ throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
+ }
+
+ #region 闆嗗悎
+ //瑕佸嚭搴撶殑鎵樼洏闆嗗悎
+ var outLpnList = list.Select(m => m.PalletNo).ToList();
+ //瑕佸嚭搴撶殑鏄庣粏闆嗗悎
+ var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
+ //鎵�鏈夎鍑哄簱鐨勫偍浣嶉泦鍚�
+ var locateListStrs = outStockDetail.Where(m=> !string.IsNullOrWhiteSpace(m.LocatNo)).Select(m => m.LocatNo).Distinct().ToList();
+ //鐗╂枡缂栫爜琛�
+ var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+ //鍖呰琛�
+ var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
+ Db.BeginTran();
+ try
+ {
+ List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴�
+ //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
+ foreach (var item in list)
+ {
+ var taskNoStr = "";
+ string toLocation = string.Empty;//鐩爣浣嶇疆
+
+ // 鍌ㄤ綅鍙�
+ var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
+
+ #region 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+
+ //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+ if (string.IsNullOrWhiteSpace(locateNo)) //搴撳
+ {
+ if (notice.Type == "0")
+ {
+ flagList.Add(5);
+ continue;
+ }
+ //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑
+ var imBl = com.GetImTask(item.PalletNo);
+ if (imBl != null)
+ {
+ flagList.Add(4);
+ continue;
+ }
+ //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+ if (item.Status == "0")
+ {
+ //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚
+ item.Status = "2";//鐘舵��
+ item.OutMode = outMode;//鍑哄簱鍙�
+ Db.Updateable(item).ExecuteCommand();
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+ if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+ {
+ noticeDetail.FactQty += item.Qty;
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+ {
+ var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+ if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+ {
+ notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ }
+ }
+ flagList.Add(0);
+ continue;
+ }
+
+ //鍒ゆ柇鍌ㄤ綅
+ var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
+ if (locate == null)
+ {
+ flagList.Add(2);
+ continue;
+ }
+ //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧�
+ if (locate.Flag == "2")
+ {
+ flagList.Add(3);
+ continue;
+ }
+
+ #endregion
+
+
+
+ if (locate.Status == "1") //鏈夌墿鍝�
+ {
+ var row1 = int.Parse(locate.LocatNo.Substring(2,2));
+ var row2 = int.Parse(locate.AisleOne.Substring(2, 2));
+ //闇�瑕佺Щ搴撶殑淇℃伅
+ var NeedMoveInfo = IsNeedMoveLocate(locate, locateListStrs, out int isOut);
+ if (isOut == 1)
+ {
+ //宸烽亾缁勪腑鏈夊叆搴撴垨绉诲叆鐨勫偍浣嶏紝鎴栬�呮槸褰撳墠鍌ㄤ綅鍓嶆湁鍌ㄤ綅鏈笅鍙戞垚鍔熺殑浠诲姟
+ flagList.Add(2);
+ continue;
+ }
+ if (NeedMoveInfo.Count > 0)//闇�瑕佺Щ搴�
+ {
+ //鍒ゆ柇搴撳唴绌哄偍浣嶆槸鍚﹀
+ var okRoad = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0" && m.WareHouseNo == notice.WareHouseNo).Select(m => m.RoadwayNo).ToList();
+ var nullSlotNum = Db.Queryable<SysStorageLocat>().Count(m => m.RoadwayNo != locate.RoadwayNo && okRoad.Contains(m.RoadwayNo) && m.Status == "0");
+ //鍒ゆ柇绌哄偍浣嶇殑鏁伴噺鏄惁澶т簬闇�瑕佺Щ搴撶殑鏁伴噺
+ if (nullSlotNum >= NeedMoveInfo.Count)
+ {
+ var isYk = false;
+ foreach (var s in NeedMoveInfo)
+ {
+ //鍌ㄤ綅鍒�
+ var rows = int.Parse(s.Substring(2,2));
+
+ //鑾峰彇绉诲簱鍌ㄤ綅
+ var moveAddress = GetMiJiMoveAddress(s, locate.AisleOne);
+ var tary = Db.Queryable<DataStockDetail>().First(m => m.LocatNo == s);
+ if (string.IsNullOrWhiteSpace(moveAddress)) // 鍒ゆ柇鏄惁鑾峰彇鍒扮Щ搴撶殑搴撲綅
+ {
+ isYk = true;
+ flagList.Add(5);//鍑哄簱鍓嶆湁璐х墿锛岄渶绉诲簱浣嗘湭鏌ヨ鍒扮┖鍌ㄤ綅
+ break; //娌℃湁绉诲簱鐨勫簱浣嶄簡
+ }
+ else
+ {
+ //鍒ゆ柇鎵樼洏鏈夋病鏈夊洖绉荤殑浠诲姟
+ //var hy = GetHyTask(item.ExportStockCode);
+ //if (hy != null)
+ //{
+ // var hyentity = dataContext.WmsExportTask.FirstOrDefault(m => m.TaskId == hy.TaskId);
+ // if (hyentity != null)
+ // {
+ // isYk = true;
+ // msgList.Add(6);//鍑哄簱鍓嶆湁璐х墿锛岄渶绉诲簱浣嗘槸鍥炵Щ鎵樼洏
+ // break; //娌℃湁绉诲簱鐨勫簱浣嶄簡
+ // }
+ //}
+ var ykTaskNo = new Common().GetMaxNo("TK");
+ var ykTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = ykTaskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = s,//璧峰浣嶇疆
+ EndLocat = moveAddress,//outMode,//鐩爣浣嶇疆
+ PalletNo = tary.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ };
+ Db.Insertable(ykTask).ExecuteCommand();
+ logTaskList.Add(ykTask);
+
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = item.PalletNo,//鎵樼洏鍙�
+ StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+ StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
+ EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆
+ TaskNo = ykTaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉�
+ Order = Math.Abs(row2 - rows),
+
+ });
+ var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == s);
+ var slotChange2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == moveAddress);
+
+ slotChange.Status = "5"; //鏀瑰彉鐘舵�侊紙姝e湪鍑哄簱锛�
+ slotChange2.Status = "4"; // 鏀瑰彉鐘舵�侊紙姝e湪绉诲叆锛�
+ Db.Updateable(slotChange).ExecuteCommand();
+ Db.Updateable(slotChange2).ExecuteCommand();
+ }
+ }
+ if (isYk)
+ {
+ break;
+ }
+ }
+ else
+ {
+ flagList.Add(5);
+ break;
+ }
+ }
+ #region 娣诲姞鍑哄簱浠诲姟
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locate.LocatNo,//璧峰浣嶇疆
+ EndLocat = toLocation,//outMode,//鐩爣浣嶇疆
+ PalletNo = item.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ };
+ Db.Insertable(exTask).ExecuteCommand();
+ logTaskList.Add(exTask);
+
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = item.PalletNo,//鎵樼洏鍙�
+ StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+ StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
+ EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉�
+ OutMode = toLocation, //鍑哄簱鍙�
+ Order = Math.Abs(row2 - row1),
+
+ });
+ taskNoStr = exTask.TaskNo;
+
+ #endregion
+
+ #region 鏀瑰彉鏁版嵁
+ if (item.Status == "0")//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩�
+ {
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+ if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+ {
+ noticeDetail.FactQty += item.Qty;
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+ {
+ var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+ if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+ {
+ notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ }
+ }
+ locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
+ Db.Updateable(locate).ExecuteCommand();
+
+ item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
+ item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛�
+ //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
+ item.OutMode = outMode;//鍑哄簱鍙�
+ //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
+ Db.Updateable(item).ExecuteCommand();
+
+ #endregion
+
+ flagList.Add(0);
+ }
+ else if (locate.Status == "3") //鍑哄簱涓�
+ {
+ #region 鏀瑰彉鏁版嵁
+ //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+ if (item.Status == "0")
+ {
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+ if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+ {
+ noticeDetail.FactQty += item.Qty;
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+ {
+ var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+ if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+ {
+ notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ }
+ }
+ var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
+ if (taskNo == null)
+ {
+ taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
+ }
+ if (taskNo == null)
+ {
+ throw new Exception($"鎵樼洏鍙凤細{item.PalletNo},鍑哄簱寮傚父");
+ }
+ item.TaskNo = taskNo.TaskNo;
+ item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛�
+ item.OutMode = item.OutMode;//鍑哄簱鍙�
+ //item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡
+ Db.Updateable(item).ExecuteCommand();
+ flagList.Add(0);
+ #endregion
+ }
+ else if (locate.Status == "5") //绉诲嚭涓�
+ {
+ flagList.Add(1);
+ }
+ }
+ outDto1.AddRange(moveDto);
+ outDto1.AddRange(outDto2);
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
+ Db.CommitTran();
+
+ str = string.Empty;
+ if (flagList.Count(m => m == 0) > 0)
+ {
+ str += "0.涓嬪彂鎴愬姛銆�";
+ }
+ if (flagList.Count(m => m == 1) > 0)
+ {
+ str += "1.褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�";
+ }
+ if (flagList.Count(m => m == 2) > 0)
+ {
+ str += "2.鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�";
+ }
+ if (flagList.Count(m => m == 3) > 0)
+ {
+ str += "4.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
+ }
+ if (flagList.Count(m => m == 4) > 0)
+ {
+ str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
+ }
+ if (flagList.Count(m => m == 5) > 0)
+ {
+ str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鎷嗘墭璇风◢鍚庝笅鍙戙��";
+ }
+ if (outDto1.Count > 0)
+ {
+ // 姝e紡杩愯绋嬪簭鏀惧紑
+ var list2 = outDto1.Select(m => m.TaskNo).ToList();
+ var jsonData = JsonConvert.SerializeObject(outDto1);
+ string response = "";
+
+ try
+ {
+ //var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+ //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+ //var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+ //////瑙f瀽杩斿洖鏁版嵁
+ //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+ //if (wcsModel.StatusCode == 0)
+ //{
+ // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+ // new TaskServer().EditTaskIssueOk(list2, time1, time2);
+ // str += "涓嬪彂鎴愬姛";
+ //}
+ //if (wcsModel.StatusCode == -1)
+ //{
+ // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
+ // throw new Exception(wcsModel.Msg);
+ //}
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+
+ }
+
+ return outDto1;
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+
+
+ #endregion
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴撴搷浣�
+ /// </summary>
+ /// <param name="oldAddress">瑕佸嚭搴撶殑搴撲綅鍦板潃</param>
+ /// <param name="aisle">閫氶亾鍙�</param>
+ /// <param name="addressList">瑕佸嚭鍙g殑鍌ㄤ綅闆嗗悎</param>
+ /// <param name="isOut">鏄惁鍑哄簱 1:鏈夋湭涓嬪彂鐨勪换鍔″湪鍓嶉潰</param>
+ /// <returns>闇�瑕佺Щ搴撶殑闆嗗悎锛堝鏋滀负绌哄垯涓嶉渶绉诲簱锛�</returns>
+ private List<string> IsNeedMoveLocate(SysStorageLocat lcoate,List<string> locateStrList, out int isOut)
+ {
+ var nowAddress = new List<string>(); //闇�瑕佺Щ搴撶殑闆嗗悎
+ // 010101 娲惧垪灞�
+ //var bol = String.CompareOrdinal(lcoate.LocatNo, lcoate.AisleOne);
+
+ var sArray = lcoate.LocatNo.Substring(4,2);
+ var row = int.Parse(sArray);//鍌ㄤ綅鍒�
+ var sArray2 = lcoate.AisleOne.Substring(4, 2);
+ var row2 = int.Parse(sArray2); //閫氶亾鍙e垪
+
+ isOut = 0;
+
+ var bol = row2 - row > 0;
+
+ //鍚岀粍鐨勫偍浣嶉泦鍚�
+ var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == lcoate.RoadwayNo).ToList();
+ List<string> list;
+
+
+ if (bol)
+ {
+ //鍌ㄤ綅灏忎簬閫氶亾鍙� 鍊掑簭
+ list = slotList.Where(m => m.Column < row2 && m.Column > row).Select(m => m.LocatNo).ToList();
+ }
+ else
+ {
+ //鍌ㄤ綅澶т簬閫氶亾鍙� 姝e簭
+ list = slotList.Where(m => m.Column > row2 && m.Column < row).Select(m => m.LocatNo).ToList();
+ }
+
+ if (list.Any())
+ {
+ //鎺掗櫎鎺夊悓宸烽亾缁勪腑瑕佸嚭搴撶殑鍌ㄤ綅
+ if (locateStrList.Count != 0)
+ {
+ list = list.Where(m => !locateStrList.Contains(m)).ToList();
+ }
+ //鍒ゆ柇鏄惁鏈夊叆搴撲腑鎴栨鍦ㄧЩ鍏ョ殑
+ var s = slotList.Where(m => list.Contains(m.LocatNo) && (m.Status == "2" || m.Status == "4")).Select(m => m.LocatNo).ToList();
+ if (s.Count > 0)
+ {
+ isOut = 1;
+ return nowAddress;
+ }
+ //鍒ゆ柇鏄惁鏈夊湪褰撳墠鍌ㄤ綅鍓嶆湭涓嬪彂鐨勪换鍔★紙闃叉鎾炶溅锛�
+ var w = Db.Queryable<LogTask>().Where(m => list.Contains(m.StartLocat) && m.IsSuccess == 0).Select(m => m.StartLocat).ToList();
+ if (w.Count > 0)
+ {
+ isOut = 1;
+ return nowAddress;
+ }
+ if (bol)
+ {
+ //鍌ㄤ綅灏忎簬閫氶亾鍙� 鍊掑簭
+ nowAddress = slotList.Where(m => list.Contains(m.LocatNo) && m.Status == "1").OrderByDescending(m => m.LocatNo).Select(m => m.LocatNo).ToList();
+ }
+ else
+ {
+ //鍌ㄤ綅澶т簬閫氶亾鍙� 姝e簭
+ nowAddress = slotList.Where(m => list.Contains(m.LocatNo) && m.Status == "1").OrderBy(m => m.LocatNo).Select(m => m.LocatNo).ToList();
+
+ }
+ if (nowAddress.Count > 0)
+ {
+ return nowAddress;
+ }
+ }
+ else
+ {
+ return nowAddress;
+ }
+
+
+ return nowAddress;
+ }
+
+ /// <summary>
+ /// 鑾峰彇绉诲簱鐩爣搴撲綅 瀵嗛泦搴�
+ /// </summary>
+ /// <param name="oldAddress">闇�瑕佺Щ鍔ㄧ殑搴撲綅鍦板潃</param>
+ /// <param name="slotOut">闇�瑕佺Щ鍔ㄧ殑搴撲綅鐨勫嚭鍙d腑杞綅</param>
+ /// <param name="billCode">鍑哄簱鍗曟嵁鎴栨槸娉㈡鍗曟嵁</param>
+ /// <param name="flags">涓浆鍙�</param>
+ /// <param name="refLanWayId">闇�鍥炵Щ鐨勫贩閬搃d</param>
+ /// <param name="refLanOutCode">闇�鍥炵Щ鐨勫贩閬撲腑杞彛</param>
+ /// <returns>鐩爣搴撲綅鍦板潃 涓�"" 鐩存帴涓嬪彂涓ゆ鍑哄簱鎸囦护</returns>
+ public string GetMiJiMoveAddress(string oldAddress, string slotOut)
+ {
+ var newAddress = ""; //鏂板簱浣�
+ var newLaneWayAddress = ""; //鏂板贩閬撳彛搴撲綅
+
+ // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅
+
+ //
+ var sArray = oldAddress.Substring(4,2);
+ var ceng = int.Parse(sArray);
+ //
+ var sArray2 = slotOut.Substring(2, 2);
+ var row2 = sArray2;
+ //鍗佸瓧鍙�
+ var shiKou = new List<string>()
+ {
+ slotOut,
+ "070501",
+ "071301",
+ "070502",
+ "071302",
+ };
+ var shiKou3 = new List<addreClass>();
+ foreach (var item in shiKou)
+ {
+ var a = item.Substring(4, 2);
+ var b = item.Substring(2, 2);
+ if (int.Parse(a) != ceng) continue;
+ var s = Math.Abs(int.Parse(b) - int.Parse(row2));
+ if (shiKou3.Any(m => m.distNum == s)) continue;
+ shiKou3.Add(new addreClass()
+ {
+ slotCode = item,
+ distNum = s
+ });
+ }
+ //鏍规嵁鍗佸瓧鍙e樊鍊兼渶灏忕殑鎺掑簭
+ shiKou3 = shiKou3.OrderBy(m => m.distNum).ToList();
+
+ /**
+ //1 绉诲姩鍒版渶杩戠殑绌哄偍浣嶏紝蹇呴』鍥炵Щ銆�
+ //鏍规嵁鍥涘悜杞︾Щ鍔ㄨ建杩硅绠楀嚭鏈�杩戠┖鍌ㄤ綅銆�
+ //鍑哄簱瀹屾垚鍚庢牴鎹壒娆″彿 鐢熶骇鏃ユ湡 鍑哄彛璁$畻鍥炵Щ鍌ㄤ綅銆�
+
+ //2 绉诲姩閫傚悎瀛樻斁鐨勭粍锛岀郴缁熻嚜鍔ㄨ绠楁槸鍚﹀洖绉汇��
+ //鏍规嵁鎵规鍙� 鐢熶骇鏃ユ湡 鍑哄彛 鐗╂枡绛夎绠楀嚭绉诲簱鐩爣鍌ㄤ綅
+ //鍑哄簱瀹屾垚鍚庯紝鍒ゆ柇鏄惁鏈夋瘮褰撳墠搴撲綅鏇村悎閫傜殑瀛樺偍鍌ㄤ綅锛屾湁绉诲姩锛屾棤涓嶇Щ鍔ㄣ��
+ */
+
+ var oldSlot = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldAddress);
+ if (oldSlot == null)
+ {
+ throw new Exception("鏈兘鎵惧埌鍌ㄤ綅淇℃伅");
+ }
+ #region 1涓嶉渶瑕佸洖绉荤殑
+
+ //鍚庢湡搴撳瓨鎵樼洏琛ㄦ敼浜嗗悗闇�瑕佸姞绛涢�夋潯浠舵墭鐩樼殑鐘舵�侊紙閫�璐�/棰勬嫞锛�
+ var tray1 = Db.Queryable<DataStockDetail>().Where(m => m.LocatNo == oldAddress).ToList();
+ //鏍规嵁鐗╂枡銆佹壒娆°�佹墭鐩樼姸鎬侊紙閫�璐�/棰勬嫞/鏆傚瓨绛夛級鍒嗙粍鍒ゆ柇
+ var d = tray1.GroupBy(m => new { m.SkuNo, m.LotNo, m.PalletTags });
+ var location = string.Empty;
+ if (d.Any())
+ {
+ //鏃у偍浣嶅悓缁勭殑鍌ㄤ綅闆嗗悎
+ var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == oldSlot.RoadwayNo).Select(m => m.LocatNo).ToList();
+ foreach (var item in d)
+ {
+ foreach (var item2 in item)
+ {
+ var okLan = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0").Select(m => m.RoadwayNo).ToList();
+ var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo
+ && m.LotNo == item2.LotNo && !slotList.Contains(m.LocatNo) && m.PalletTags == item2.PalletTags && okLan.Contains(m.RoadwayNo)).ToList();
+ foreach (var s in tray2)
+ {
+ if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃
+ {
+ continue;
+ }
+ var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList();
+ //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑
+ if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0)
+ {
+ continue;
+ }
+ if (lan.Count(m => m.Status == "0") > 0)
+ {
+
+ var bol = GetBecomingLocation(s.RoadwayNo, ref location);
+ if (bol && !string.IsNullOrWhiteSpace(location))
+ {
+ newAddress = location;
+ return newAddress;
+
+ }
+
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+ #region 2闇�瑕佸洖绉荤殑
+
+ ////濡傛灉娌℃湁鎵惧埌鍚堥�傜殑鍌ㄤ綅
+ //if (string.IsNullOrWhiteSpace(newAddress))
+ //{
+ // foreach (var s in shiKou3)
+ // {
+
+ // var r = int.Parse(s.slotCode.Substring(0, 2));
+ // var l = int.Parse(s.slotCode.Substring(2, 2));
+ // var c = int.Parse(s.slotCode.Substring(4, 2));
+ // //鏌ヨ绌哄偍浣�
+ // var sqlString = $@"select LocatNo,Row,Column,Layer,(ABS(Row-{r}) + ABS(Column-{l}) ) as distNum
+ // from SysStorageLocat where (AisleOneRow = {r} or AisleTwoRow = {r}) and Status in (0) and
+ // RoadwayNo !='{oldSlot.RoadwayNo}' and RoadwayNo not in(select RoadwayNo from SysStorageRoadway where Status = 1) order by distNum,SlotCode";
+
+ // var addressModels = dataContext.ExecuteQuery<addreClass>(sqlString).ToList();
+ // foreach (var item in addressModels)
+ // { 銆�
+
+
+ // newAddress = item.slotCode;
+ // var dz = newAddress.Split(new char[] { '-' });
+ // var l1 = dz[1];
+ // var c1 = dz[0];
+ // newLaneWayAddress = $"{c1}-{l1}-{a[2]}";
+ // flags = newLaneWayAddress;
+
+ // var slotModel = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == item.slotCode);
+
+ // var lan = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList();
+ // if (slotModel.SlotRow > int.Parse(a[2]))
+ // {
+ // // 鍙栨渶涓婇潰涓�鎺�
+ // lan = lan.OrderBy(m => m.SlotCode).ToList();
+ // for (int i = 0; i < lan.Count; i++)
+ // {
+ // var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode);
+ // if (slot.SlotStatus == 0)
+ // {
+ // if (i == lan.Count - 1)
+ // {
+ // newAddress = lan[lan.Count - 1].SlotCode;
+
+ // break;
+ // }
+ // else
+ // {
+ // continue;
+ // }
+
+ // }
+ // else
+ // {
+ // newAddress = lan[i - 1].SlotCode;
+ // break;
+ // }
+ // }
+
+ // }
+ // else
+ // {
+ // // 鍙栨渶涓嬮潰涓�鎺�
+ // lan = lan.OrderByDescending(m => m.SlotCode).ToList();
+ // for (int i = 0; i < lan.Count; i++)
+ // {
+ // var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode);
+ // if (slot.SlotStatus == 0)
+ // {
+ // if (i == lan.Count - 1)
+ // {
+ // newAddress = lan[lan.Count - 1].SlotCode;
+ // break;
+ // }
+ // else
+ // {
+ // continue;
+ // }
+
+ // }
+ // else
+ // {
+ // newAddress = lan[i - 1].SlotCode;
+ // break;
+ // }
+ // }
+ // }
+ // //娣诲姞鍥炵Щ浠诲姟
+ // AddHyTask(oldAddress, newAddress, newLaneWayAddress, oldSlot.SlotLanewayId, slotOut, billCode);
+ // refLanWayId = slotModel.SlotLanewayId;
+ // refLanOutCode = newLaneWayAddress;
+ // //9锛氶攣瀹氬偍浣�
+ // var updateSlot = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList();
+ // var newAddressRow = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == newAddress);
+ // if (newAddressRow.SlotRow > int.Parse(a[2]))
+ // {
+ // updateSlot = updateSlot.Where(m => m.SlotRow < newAddressRow.SlotRow && m.SlotRow > int.Parse(a[2])).OrderBy(m => m.SlotCode).ToList();
+ // }
+ // else
+ // {
+ // updateSlot = updateSlot.Where(m => m.SlotRow > newAddressRow.SlotRow && m.SlotRow < int.Parse(a[2])).OrderByDescending(m => m.SlotCode).ToList();
+
+ // }
+ // foreach (var source in updateSlot)
+ // {
+ // if (source.SlotCode == newAddress)
+ // {
+ // continue;
+ // }
+ // if (source.SlotStatus == 0)
+ // {
+ // source.SlotStatus = 8;
+ // }
+ // }
+
+ // if (updateSlot.Count <= 0)
+ // {
+ // refLanWayId = "";
+ // refLanOutCode = "";
+ // }
+ // dataContext.SubmitChanges();
+ // return newAddress;
+
+
+
+ // }
+
+ // }
+
+ //}
+
+ return newAddress;
+ #endregion
+
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇绉诲簱鍚堥�傜殑鍌ㄤ綅 瀵嗛泦搴�
+ /// </summary>
+ /// <param name="laneWayId">鍚堥�傜粍鐨勫贩閬撳彿</param>
+ /// <param name="location">鍒嗛厤鍌ㄤ綅</param>
+ /// <returns>true锛氬瓨鍦ㄥ悎閫傚偍浣� False锛氫笉瀛樺湪鍚堥�傚偍浣�</returns>
+ private bool GetBecomingLocation(string laneWayId, ref string location)
+ {
+ bool bl = false;
+
+ // 寰幆鍒ゆ柇褰撳墠缁勬槸鍚︽湁鍓╀綑鍌ㄤ綅
+ string sqlString = string.Empty;
+ location = "";
+
+ // 鍒ゆ柇鍌ㄤ綅缁勬槸鍚︽湁绌哄偍浣� 鍏宠仈搴撳瓨鏄庣粏琛ㄥ彲闃叉鍌ㄤ綅鐘舵�佷笉鍑嗙‘閬垮厤閫犳垚婊″叆寮傚父//not in ('1','2','4','6','7','8')
+ sqlString = $"select LocatNo,Column,AisleOne from SysStorageLocat where RoadwayNo = {laneWayId} and Status in ('0') and LocatNo not in (select LocatNo from DataStockDetail where RoadwayNo = { laneWayId}) order by Row;";
+ var slotModel =Db.SqlQueryable<LocateInfo>(sqlString).ToList();
+ if (slotModel.Count == 0)
+ {
+ bl = false;
+ }
+ else // 瀛樺湪绌哄偍浣�
+ {
+ // 鍒ゆ柇褰撳墠缁勫悎閫傜殑鍌ㄤ綅鍦板潃
+ var numstr = slotModel[0].AisleOne.Substring(4,2);
+ int aisleRow = int.Parse(numstr);
+
+ if (slotModel[0].Column > aisleRow)
+ {
+ // 鍙栨渶涓婇潰涓�鎺�
+ location = slotModel[0].LocatNo;
+
+ }
+ else
+ {
+ // 鍙栨渶涓嬮潰涓�鎺�
+
+ location = slotModel[slotModel.Count - 1].LocatNo;
+ }
+
+ bl = true;
+ }
+
+
+
+ return bl;
+ }
+
+
+ private class addreClass
+ {
+ public string slotCode { get; set; }
+ public int distNum { get; set; }
+ }
+ public class LocateInfo
+ {
+ public string LocatNo { get; set; }
+ public int Column { get; set; }
+ public string AisleOne { get; set; }
+
+ }
+ #endregion
+
#endregion
diff --git a/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs b/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
index 60f2d6e..f7d417d 100644
--- a/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
@@ -480,12 +480,8 @@
Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁�
//鍒嗛厤璐х墿
//assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic);
- var house = "";
- if (notice.Type == "0")
- {
- house = "W01";
- }
- var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic,"");
+
+ var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic, notice.WareHouseNo);
foreach (var sc in stockQtyDic)
{
diff --git a/Wms/WMS.Entity/LogEntity/LogTask.cs b/Wms/WMS.Entity/LogEntity/LogTask.cs
index fdbd504..6856df2 100644
--- a/Wms/WMS.Entity/LogEntity/LogTask.cs
+++ b/Wms/WMS.Entity/LogEntity/LogTask.cs
@@ -35,7 +35,7 @@
/// <summary>
/// Desc:鏄惁涓嬪彂鎴愬姛
- /// Default:
+ /// Default: 0澶辫触 1鎴愬姛
/// Nullable:True
/// </summary>
public int? IsSuccess {get;set;}
diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
index c5ea03f..fddfb06 100644
--- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -155,6 +155,34 @@
#endregion
//------------------------------------------------------------------------------------------
+
+ /// <summary>
+ /// 鑾峰彇鍑哄簱鍗曠殑浠撳簱淇℃伅
+ /// </summary>
+ /// <param name="soNo">鍑哄簱鍗曞彿</param>
+ /// <returns>鍑哄簱鍗曠殑浠撳簱鍙�</returns>
+ string GetHouseBySo(string soNo);
+
+ /// <summary>
+ /// 涓嬪彂鍑哄簱 绔嬪簱
+ /// </summary>
+ /// <param name="soNo">鍑哄簱鍗�</param>
+ /// <param name="outMode">鍑哄簱鍙�</param>
+ /// <param name="userId">涓嬪彂浜�</param>
+ /// <param name="url">涓嬪彂璺緞</param>
+ /// <param name="str">杩斿洖鎻愮ずString</param>
+ /// <returns>鍑哄簱闆嗗悎</returns>
+ List<OutCommandDto> IssueOutHouseLk(string soNo, string outMode, int userId, string url, out string str);
+ /// <summary>
+ /// 涓嬪彂鍑哄簱 瀵嗛泦搴�
+ /// </summary>
+ /// <param name="soNo">鍑哄簱鍗�</param>
+ /// <param name="outMode">鍑哄簱鍙�</param>
+ /// <param name="userId">涓嬪彂浜�</param>
+ /// <param name="url">涓嬪彂璺緞</param>
+ /// <param name="str">杩斿洖鎻愮ずString</param>
+ /// <returns>鍑哄簱闆嗗悎</returns>
+ List<OutCommandDto> IssueOutHouseMk(string soNo, string outMode, int userId, string url, out string str);
/// <summary>
/// 涓嬪彂鍑哄簱锛堣皟鐢╟s鎺ュ彛缁欎粬搴撲綅鍦板潃锛�
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
index 2a0e958..9efe0bd 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -150,5 +150,13 @@
/// <param name="userId"></param>
public void LingxingUnbind(string palletNo, string boxNo, int userId);
#endregion
+
+
+ #region 绠辩爜鎷嗙璐存爣
+ //绠辩爜鎷嗙娣诲姞鏍囩淇℃伅
+ void AddLableByDevanning(string boxNo,decimal devanQty, int userId);
+ #endregion
+
+
}
}
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index c1f00c4..bf8ff98 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -19,6 +19,7 @@
using Utility;
using System.Threading.Tasks;
using Model.ModelVm.BllCheckVm;
+using System.Collections.Generic;
namespace Wms.Controllers
{
@@ -101,7 +102,7 @@
/// <returns></returns>
[Authorize]
[HttpGet]
- public IActionResult IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre)
+ public IActionResult IssueOutHouse(string soNo, string outMode)
{
try
{
@@ -121,11 +122,23 @@
//{
// return Ok(new { code = 1, msg = "璇烽�夋嫨鍑哄簱鍙�" });
//}
+ var house = _exNoticeSvc.GetHouseBySo(soNo);
+ if (house == "W01")
+ {
- var list = _exNoticeSvc.IssueOutHouse(soNo, unstackingMode, outMode, loadingAddre, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
+ return Ok(new { code = 0, msg = "str" });
+ }
+ else if (house == "W02")
+ {
+ var list = _exNoticeSvc.IssueOutHouseLk(soNo, outMode, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
- return Ok(new { code = 0, msg = str, data = list });
-
+ return Ok(new { code = 0, msg = str, data = list });
+ }
+ else
+ {
+ return Ok(new { code = 1, msg = "浠撳簱淇℃伅閿欒锛岃鏍稿疄鍗曟嵁淇℃伅"});
+ }
+
}
catch (Exception e)
{
diff --git a/Wms/Wms/Controllers/PdaCrController.cs b/Wms/Wms/Controllers/PdaCrController.cs
index 86c1d5e..616062a 100644
--- a/Wms/Wms/Controllers/PdaCrController.cs
+++ b/Wms/Wms/Controllers/PdaCrController.cs
@@ -282,5 +282,42 @@
}
}
#endregion
+
+ #region 鎷嗙璐存爣
+
+ /// <summary>
+ /// 鎷嗙璐存爣
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ [HttpPost]
+ public IActionResult AddLableByDevanning(PdaDevaningVm model)
+ {
+ try
+ {
+ //鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴稩D
+ var claimsIdentity = this.User.Identity as ClaimsIdentity;
+ if (claimsIdentity == null)
+ {
+ return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
+ }
+ var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
+ if (string.IsNullOrWhiteSpace(userId))
+ {
+ return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
+ }
+
+ var uId = int.Parse(userId);
+ _pdaCrSvc.AddLableByDevanning(model.BoxNo, model.DevanQty,uId);
+
+ return Ok(new { data = "", code = 0, msg = "鎴愬姛" });
+ }
+ catch (Exception e)
+ {
+ return Ok(new { data = "", code = 1, msg = $"寮傚父锛歿e.Message}" });
+ }
+ }
+ #endregion
+
}
}
--
Gitblit v1.8.0