From 2c4c080fc6e90d8c92355d779372cd24ae67b02e Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期一, 26 五月 2025 16:13:51 +0800
Subject: [PATCH] 线边库标签打印

---
 Pda/View/AsnSetting/printLabels.html     |  312 ++++++++++++++++++++++++
 Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs |    8 
 Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs  |   14 +
 Wms/Wms/Controllers/PdaAsnController.cs  |   57 ++++
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs |  370 +++++++++++++++++++++++++++
 5 files changed, 746 insertions(+), 15 deletions(-)

diff --git a/Pda/View/AsnSetting/printLabels.html b/Pda/View/AsnSetting/printLabels.html
new file mode 100644
index 0000000..526b603
--- /dev/null
+++ b/Pda/View/AsnSetting/printLabels.html
@@ -0,0 +1,312 @@
+
+<!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="../login.html">閲嶆柊鐧诲綍</a></li>
+					</ul>
+				</div>
+				<div>
+					<button id="click" class="layout-btn" type="button" style="background-color: #999; width: 100%;text-align: center; margin-top: 2px;">杩炴帴钃濈墮</button>
+				</div>
+				<div id="zongDiv2" class="layout-bill-info" style="height: 255px;">
+                    <form class="layui-form" id="form2" action="">
+                        <div id="" class="layui-form-item layout-input">
+                            <label class="layui-form-label" lang>鐗╂枡缂栫爜锛�</label>
+                            <div class="layui-input-block">
+								<input id="skuNo" type="text" placeholder="" autocomplete="off" class="layui-input" >
+                            </div>
+                        </div>  
+
+						<div class="layui-form-item layout-input" style="margin-top: 10px;">
+                            <label class="layui-form-label">鐗╂枡鍚嶇О锛�</label>
+                            <div class="layui-input-block">
+								<input id="skuName" type="text" placeholder=""
+								autocomplete="off" class="layui-input" >
+                            </div>
+                        </div>
+						<div class="layui-form-item layout-input" style="margin-top: 10px;">
+                            <label class="layui-form-label">鎵规鍙�:</label>
+                            <div class="layui-input-block">
+								<input id="lotNo" type="text" placeholder=""
+								autocomplete="off" class="layui-input" >
+                            </div>
+                        </div>
+						<div class="layui-form-item layout-input" style="margin-top: 10px;">
+                            <label class="layui-form-label">鐢熶骇鏃ユ湡:</label>
+                            <div class="layui-input-block">
+								<input id="timeFrom" type="date"  placeholder="璇烽�夋嫨鏃ユ湡"
+								autocomplete="off" class="measureDate" style="padding-left: 0px;">
+                            </div>
+                        </div>
+						<div class="layui-form-item layout-input" style="margin-top: 10px;">
+                            <label class="layui-form-label">鏈夋晥鏈�:</label>
+                            <div class="layui-input-block">
+								<input id="timeEnd" type="date" placeholder="璇烽�夋嫨鏃ユ湡"
+								autocomplete="off" class="measureDate" style="padding-left: 0px;">
+                            </div>
+                        </div>
+						<div class="layui-form-item layout-input" style="margin-top: 10px;">
+                            <label class="layui-form-label">绠卞唴鏁伴噺:</label>
+                            <div class="layui-input-block">
+								<input id="skuNum" type="text" placeholder=""
+								autocomplete="off" class="layui-input" >
+                            </div>
+                        </div>
+
+                        <table class="layout-tbl-submit" border="" cellspacing="" cellpadding="">
+                            <tr>
+                                <td style="width: 23%;"></td>
+                                <td>
+                                    <button id="click2" class="layout-btn layout-btn-red" lang type="button" lay-submit
+                                        lay-filter="formBind">鎵撳嵃鏍囩</button>
+                                </td>
+                                <td style="width: 33%;"></td>
+
+                            </tr>
+                        </table>
+                    </form>
+                </div>
+				<div id="" class="layout-bill-info">
+				</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 type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
+
+		<script type="text/javascript">
+			let date = new Date();
+			let yyyy = date.getFullYear();
+			let MM = (date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : (date.getMonth() + 1);
+			let dd = date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate();
+			// let HH = date.getHours() < 10 ? ("0" + date.getHours()) : date.getHours();
+			// let mm = date.getMinutes() < 10 ? ("0" + date.getMinutes()) : date.getMinutes();
+			let curDay = yyyy + '-' + MM + '-' + dd ;//+ 'T' + HH + ':' + mm;
+			$('.measureDate').val(curDay);
+			console.log(curDay);
+		</script>
+
+        <script>
+			var dataLists;
+			layui.use(['form', 'jquery'], function() {
+				var form = layui.form
+				// 閾炬帴钃濈墮
+				$("#menuImg").click(function(e){
+					e.stopPropagation()
+					
+					if($("#menuList").is(":hidden")){
+						$("#menuList").show()
+					}else{
+						$("#menuList").hide()
+					}
+				})
+				$('body').click(function(){
+					$("#menuList").hide()
+				})
+
+
+				//鐗╂枡缂栫爜澶卞幓鐒︾偣浜嬩欢
+				$("#skuNo").on('blur',function (e) {
+                    if ($("#skuNo").val() == "") {
+                        layer.msg('璇疯緭鍏ョ墿鏂欑紪鐮�', {
+                            icon: 2,
+                            time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                        });
+                        return
+                    }
+
+                    getSkuInfo();
+            	});
+
+
+				//鐗╂枡鍚嶇О澶卞幓鐒︾偣浜嬩欢
+				$("#skuName").on('blur',function (e) {
+                    if ($("#skuName").val() == "") {
+                        layer.msg('璇疯緭鍏ョ墿鏂欑紪鐮佸悕绉�', {
+                            icon: 2,
+                            time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                        });
+                        return
+                    }
+
+                    getSkuInfo();
+            	});
+
+				// 楠岃瘉鑾峰彇鐗╂枡淇℃伅
+				function getSkuInfo(){
+					var param = {
+						SkuNo:$("#skuNo").val(),
+						SkuName:$("#skuName").val()
+					}
+
+					synData(IP + "/PdaAsn/getSkuInfo", param, 'post', function (res) {
+						console.log(JSON.stringify(res))
+						if (res.code == 0 && res.data != null) { //鎴愬姛
+							console.log(res.data);
+							$("#skuNo").val(res.data.SkuNo);
+							$("#skuName").val(res.data.SkuName);							
+						}else{
+							layer.msg(res.msg, {
+									icon: 2,
+									time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+								});
+								return;
+						}
+
+					});
+				}
+			})
+
+			document.addEventListener("UniAppJSBridgeReady", function () {
+					document.getElementById("click").addEventListener("click", function () {
+						let data = {
+							type: "search"
+						};
+						console.log("缁� uni-app 鍙戦�佹暟鎹�", data);
+
+						uni.postMessage({
+							data: data,
+						});
+					});
+					document.getElementById("click2").addEventListener("click", function () {
+						// 楠岃瘉蹇呭~椤�
+						if ($("#skuNo").val() == "") {
+							layer.msg('鐗╂枡缂栫爜涓嶅彲涓簄ull', {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							});
+                        	return;
+                    	}
+
+						if ($("#skuName").val() == "") {
+							layer.msg('鐗╂枡鍚嶇О涓嶅彲涓簄ull', {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							});
+                        	return;
+                    	}
+
+						if ($("#lotNo").val() == "") {
+							layer.msg('鎵规鍙蜂笉鍙负null', {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							});
+                        	return;
+                    	}
+
+						if ($("#skuNum").val() == "") {
+							layer.msg('绠卞唴鏁伴噺涓嶅彲涓簄ull', {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							});
+                        	return;
+                    	}
+
+						// 鍙傛暟
+						var param = {
+							SkuNo:$("#skuNo").val(),
+							SkuName:$("#skuName").val(),
+							LotNo:$("#lotNo").val(),
+							TimeFrom:$("#timeFrom").val(),
+							TimeEnd:$("#timeEnd").val(),
+							SkuNum:$("#skuNum").val()
+						}
+
+						// 瀛樺偍鏂版爣绛�
+						synData(IP + "/PdaAsn/AddLabels", param, 'post', function (res) {
+							console.log(JSON.stringify(res))
+							if (res.code == 0 && res.data != null) { //鎴愬姛
+								console.log(res.data);
+								dataLists = res.data;						
+							}else{
+								layer.msg(res.msg, {
+										icon: 2,
+										time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+									});
+									return;
+							}
+
+						});
+
+						let data = {
+							type: "print",
+							listData:dataLists
+							// {
+							// 	SkuNo:'541100554848',
+							// 	SkuName:'钁¤悇绯栬憽钀勭硸钁¤悇绯栬憽钀勭硸钁¤悇绯�',
+							// 	LotNo:'120326',
+							// 	Date1:'2025-04-10',
+							// 	Date2:'2026-04-10',
+							// 	BoxNo:['T2300001','T2300002','T2300003'],
+							// }
+							// lstData: {
+							//     name: "Iuhuy",
+							//     avatar:
+							//         "http://thirdwx.qlogo.cn/mmopen/vi_32/EURpungADj4vP3UczBVvD1DcEUt9q7WFqc6mZlSZoXoS9PyaPicnX8pjmic0rLbmwYCSa247gibINd1dWr0ic1QTvw/132",
+							// },
+						};
+						console.log("缁� uni-app 鍙戦�佹暟鎹�", data);
+
+						uni.postMessage({
+							data: data,
+						});
+					});
+				});
+			
+		</script>
+		<script type="text/javascript">
+            // window.jsfunction = function (data) {
+            //     let canshutype = typeof data;
+            //     let mes = typeof data == "object" ? JSON.stringify(data) : data;
+            //     alert("鏀跺埌鍙傛暟" + canshutype);
+            //     document.getElementById("messageText").innerHTML =
+            //         "鎭枩浣狅紝鎺ユ敹鍒颁綘鐨勫弬鏁癨n锛屽弬鏁版槸" + canshutype + "鍙傛暟濡備笅:\n" + mes;
+            //     console.log("data", data);
+            // };
+			
+
+            
+        </script>
+	</body>
+</html>
+
+ 
\ No newline at end of file
diff --git a/Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs b/Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs
index 8e89c84..90d717e 100644
--- a/Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs
+++ b/Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs
@@ -222,4 +222,18 @@
 
     }
 
+    /// <summary>
+    /// 绾胯竟搴撶墿鏂欐爣绛�
+    /// </summary>
+    public class LabelsVm 
+    {
+        public string SkuNo { get; set; }
+        public string SkuName { get; set; }
+        public string LotNo { get; set; }
+        public string TimeFrom { get; set; }
+        public string TimeEnd { get; set; }
+        public string SkuNum { get; set; }
+        public int? userId { get; set; }
+    }
+
 }
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index ad302b4..d4719d4 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -25,6 +25,10 @@
 using System.Security.Policy;
 using Newtonsoft.Json; 
 using Utility.Tools;
+using Model.ModelDto.SysDto;
+using Model.ModelVm.SysVm;
+using System.Security.Cryptography.X509Certificates;
+using AutoMapper.Configuration.Annotations;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -2410,13 +2414,6 @@
         }
 
         #endregion
-
-
-
-
-
-
-
         // 鑾峰彇鍗曟嵁鍒楄〃
         public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model)
         {
@@ -2451,11 +2448,6 @@
                 throw ex;
             }
         }
-
-       
-
-
-        
 
         // 鏍规嵁绠辩爜鎴栨墭鐩樺彿鑾峰彇绠辨敮淇℃伅   liudl 
         public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model)
@@ -6354,5 +6346,359 @@
 
         #endregion
 
+        #region 绾胯竟鏍囩
+        /// <summary>
+        /// 鏍规嵁鐗╂枡缂栫爜銆佸悕绉拌幏鍙栫墿鏂欎俊鎭�
+        /// </summary>
+        /// <param name="model">缂栫爜 鍚嶇О</param>
+        /// <returns>鐗╂枡璇︾粏淇℃伅</returns>
+        public MaterialsDto GetSkuInfo(GetMaterialsVm model) 
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(model.SkuNo) && string.IsNullOrEmpty(model.SkuName))
+                {
+                    throw new Exception("璇疯緭鍏ョ墿鏂欑紪鐮佹垨鐗╂枡鍚嶇О!");
+                }
+
+                var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select< MaterialsDto>().ToList();
+                if (skuModels.Count <= 0) 
+                {
+                    throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+                }
+
+                return skuModels.First();
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
+        /// <summary>
+        /// 鐢熸垚鏉$爜鏍囩
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public List<BllBoxInfo> AddLabels(LabelsVm model) 
+        {
+            try
+            {
+                if (decimal.TryParse(model.SkuNum, out decimal skuQty))
+                {
+                    if (skuQty <= 0) 
+                    {
+                        throw new Exception("绠卞唴鏁伴噺涓嶈兘灏忎簬绛変簬0");
+                    }
+                }
+                else 
+                {
+                    throw new Exception("绠卞唴鏁伴噺璇疯緭鍏ユ暟瀛楋紒");
+                }
+
+                // 楠岃瘉鐗╂枡淇℃伅鏄惁瀛樺湪
+                var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select<MaterialsDto>().ToList();
+                if (skuModels.Count <= 0)
+                {
+                    throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+                }
+
+
+                #region 
+                var skuModel = skuModels.First();
+                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuModel.PackagNo);
+                if (pack == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌褰撳墠鐗╂枡鐨勫寘瑁呬俊鎭�");
+                }
+
+                var packStr = "";
+                if (!string.IsNullOrWhiteSpace(pack.L1Name))
+                {
+                    packStr += pack.L1Num + "/" + pack.L1Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L2Name))
+                {
+                    packStr += "-" + pack.L2Num + "/" + pack.L2Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L3Name))
+                {
+                    packStr += "-" + pack.L3Num + "/" + pack.L3Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L4Name))
+                {
+                    packStr += "-" + pack.L4Num + "/" + pack.L4Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L5Name))
+                {
+                    packStr += "-" + pack.L5Num + "/" + pack.L5Name;
+                }
+                #endregion
+
+                #region 鍖呰鏌ヨ
+
+                var bNum = 0;//绠辩墿鍝佹暟閲�
+                var zNum = 0;//鏀墿鍝佹暟閲�
+                var packLevel = 0;
+
+                if (pack.L2Num.HasValue)
+                {
+                    if (pack.L2Name != "鎵�")
+                    {
+                        packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛�
+                        bNum = Convert.ToInt32(pack.L2Num);
+                    }
+                }
+                if (pack.L1Num.HasValue)
+                {
+                    if (packLevel == 0)
+                    {
+                        packLevel = 1;
+                        bNum = Convert.ToInt32(pack.L1Num);
+                    }
+                    zNum = Convert.ToInt32(pack.L1Num);
+                }
+
+                if (packLevel < 1)//鍖呰绛夌骇灏忎簬1锛屾寜鐓�1绾ф爣绛炬墦鍗�
+                {
+                    throw new Exception("鍖呰淇℃伅鏈夎锛屽皬浜庝竴绾�");
+                }
+
+                if (skuQty > bNum * 5)
+                {
+                    throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+                }
+                #endregion
+                var modelList = new List<BllBoxInfo>();
+                var label = Db.Queryable<BllBoxInfo>().Where(m => m.LotNo == model.LotNo && m.SkuNo == model.SkuNo && m.IsDel == "0").ToList();
+
+                Db.BeginTran();
+                if (packLevel == 1)
+                {
+                    #region 涓�绾у寘瑁�
+                    int labelNum = 1; 
+                    labelNum = int.Parse(Math.Ceiling(skuQty / bNum).ToString());//鏍囩鏁伴噺
+
+
+                    #region 鑾峰彇/鐢熸垚鎵规鍙�
+                    string maxLotNoStr = ""; //鎵规鍙�
+                    string maxBoxCode = ""; //绠辩爜鍙�
+
+                    maxLotNoStr = model.LotNo;
+                    maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
+                    #endregion
+
+                    for (int i = 1; i <= labelNum; i++)
+                    {
+                        decimal boxQty = 0;
+                        if (i == labelNum)
+                        {
+                            // 鏈�鍚庝竴涓潯鐮�
+                            var s = bNum * (i - 1);
+                            if (bNum > skuQty - s)
+                            {
+                                boxQty = skuQty - s;// 鏁伴噺
+                            }
+                            else
+                            {
+                                boxQty = bNum;// 鏁伴噺
+                            }
+                        }
+                        else
+                        {
+                            boxQty = bNum;         // 鏁伴噺
+                        }
+
+                        //鑾峰彇绠辩爜
+                        if (string.IsNullOrWhiteSpace(maxBoxCode))
+                        {
+                            var str = "B" + maxLotNoStr + "000001"; //鎵瑰彿+ 娴佹按  B 230201 0001  000001
+                            maxBoxCode = str;
+                        }
+                        else
+                        {
+                            maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
+                        }
+
+                        // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+                        var labelModel = new BllBoxInfo()
+                        {
+                            BoxNo = maxBoxCode,
+                            Qty = boxQty,
+                            FullQty = bNum,
+                            Status = "0",
+                            SkuNo = model.SkuNo,
+                            SkuName = model.SkuName,
+                            LotNo = maxLotNoStr,
+                            Standard = skuModel.Standard,
+                            PackageStandard = packStr,
+                            InspectMark = "0",
+                            BitBoxMark = bNum > boxQty ? "1" : "0",
+                            InspectStatus = "0",
+
+                            ProductionTime = DateTime.Parse(model.TimeFrom),
+                            StoreTime = DateTime.Parse(model.TimeEnd),
+                            ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+                            Origin = "WMS鐢熸垚",
+                            CreateUser = (int)model.userId,
+                            CreateTime = DateTime.Now,
+                        };
+
+                        Db.Insertable(labelModel).ExecuteCommand();
+                        modelList.Add(labelModel);
+                    }
+
+                    #endregion
+                }
+                else //(packLevel == 2)
+                {
+                    #region 浜岀骇鍖呰
+
+                    if (skuQty > bNum * 5)
+                    {
+                        throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+                    }
+
+                    var qty2 = skuQty;
+                    int labelNum2 = 1; //鐢熶骇绠辨潯鐮佹暟閲�
+
+                    labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
+
+                    var ss = bNum / zNum; //姣忕鏀爣绛炬暟閲�
+                    var labelNumZ2 = Math.Ceiling((decimal)ss);
+
+                    #region 鑾峰彇/鐢熸垚鎵规鍙�
+
+                    string maxCodestr2 = "";    //鎵规
+                    string maxboxcode2 = "";    //绠辩爜
+                    string maxboxcode3 = "";    //鏀爜
+
+                    maxCodestr2 = model.LotNo;
+                    maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);
+                    maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿
+                    #endregion
+
+                    for (int i = 1; i <= labelNum2; i++)//绠辩爜鏍囩
+                    {
+                        //绠卞唴鏁伴噺
+                        decimal boxQty = 0;
+                        if (i == labelNum2)
+                        {
+                            // 鏈�鍚庝竴涓潯鐮�
+                            var s = bNum * (i - 1);
+                            if (bNum > qty2 - s)
+                            {
+                                boxQty = qty2 - s;// 鏁伴噺
+                            }
+                            else
+                            {
+                                boxQty = bNum;// 鏁伴噺
+                            }
+                        }
+                        else
+                        {
+                            boxQty = bNum;                                                         // 鏁伴噺
+                        }
+
+                        //鑾峰彇绠辩爜
+                        if (string.IsNullOrWhiteSpace(maxboxcode2))
+                        {
+                            maxboxcode2 = "B" + maxCodestr2 + "000001"; // 绠卞彿     鎵瑰彿+绗嚑绠�
+                        }
+                        else
+                        {
+                            maxboxcode2 = maxboxcode2.Substring(0, 11) + (int.Parse(maxboxcode2.Substring(11, 6)) + 1).ToString().PadLeft(6, '0');
+                        }
+                        //鑾峰彇绠卞唴鏀爣绛炬暟閲�
+                        if (i == labelNum2)
+                        {
+                            var isGo2 = false;
+                            var sl = 0;
+                            for (int j = 1; j <= labelNumZ2; j++)
+                            {
+                                if (isGo2)
+                                {
+                                    break;
+                                }
+                                var s = bNum * (i - 1);
+                                var s2 = zNum * (j - 1);
+                                if (zNum >= qty2 - s - s2)
+                                {
+                                    isGo2 = true;
+                                }
+                                sl++;
+                            }
+                            labelNumZ2 = sl;
+                        }
+
+                        for (int j = 1; j <= labelNumZ2; j++)//鏈�灏忓崟浣嶆爣绛�
+                        {
+
+                            decimal d = zNum;
+                            if (i == labelNum2)
+                            {
+                                var s = bNum * (i - 1);
+                                var s2 = zNum * (j - 1);
+                                if (zNum >= qty2 - s - s2)
+                                {
+                                    d = qty2 - s - s2;    // 鏁伴噺
+                                }
+                            }
+
+                            if (string.IsNullOrWhiteSpace(maxboxcode3))
+                            {
+                                maxboxcode3 = "Z" + maxCodestr2 + "0001"; // 鏀彿     鎵瑰彿+绗嚑绠� 
+                            }
+                            else
+                            {
+                                maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0');
+                            }
+
+                            // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+                            var labelModel = new BllBoxInfo()
+                            {
+                                BoxNo = maxboxcode2,
+                                BoxNo3 = maxboxcode3,
+                                Qty = d,
+                                FullQty = bNum,
+                                Status = "0",
+                                SkuNo = model.SkuNo,
+                                SkuName = skuModel.SkuName,
+                                LotNo = maxCodestr2,
+                                Standard = skuModel.Standard,
+                                PackageStandard = packStr,
+                                InspectMark = "0",
+                                BitBoxMark = bNum > boxQty ? "1" : "0",
+                                InspectStatus = "0",
+
+                                ProductionTime = DateTime.Parse(model.TimeFrom),
+                                StoreTime = DateTime.Parse(model.TimeEnd),
+                                ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+                                Origin = "WMS鐢熸垚",
+                                CreateUser = (int)model.userId,
+                                CreateTime = DateTime.Now,
+                            };
+
+                            Db.Insertable(labelModel).ExecuteCommand();
+                            modelList.Add(labelModel);
+                        }
+                    }
+                    #endregion
+                }
+                Db.CommitTran();
+
+                return modelList;
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
+        #endregion
+
     }
 }
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs
index 4d1624b..5df16db 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs
@@ -7,6 +7,8 @@
 using Model.ModelDto.PdaDto;
 using WMS.Entity.BllAsnEntity;
 using Model.ModelDto.DataDto;
+using Model.ModelDto.SysDto;
+using Model.ModelVm.SysVm;
 
 namespace WMS.IBLL.IPdaServer
 {
@@ -32,6 +34,12 @@
         #endregion
 
 
+        // 鏍规嵁鐗╂枡缂栫爜銆佸悕绉拌幏鍙栫墿鏂欎俊鎭��
+        MaterialsDto GetSkuInfo(GetMaterialsVm model);
+
+        // 鐢熸垚绾胯竟搴撶鐮侊紝杩斿洖绠辩爜淇℃伅銆�
+        List<BllBoxInfo> AddLabels(LabelsVm model);
+
         // 鑾峰彇鍗曟嵁鍒楄〃
         List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model);
 
diff --git a/Wms/Wms/Controllers/PdaAsnController.cs b/Wms/Wms/Controllers/PdaAsnController.cs
index 3987256..699280a 100644
--- a/Wms/Wms/Controllers/PdaAsnController.cs
+++ b/Wms/Wms/Controllers/PdaAsnController.cs
@@ -8,6 +8,7 @@
 using Model.ModelVm;
 using Model.ModelVm.BllAsnVm;
 using Model.ModelVm.PdaVm;
+using Model.ModelVm.SysVm;
 using Newtonsoft.Json;
 using System;
 using System.Security.Claims;
@@ -269,8 +270,6 @@
 
 
         #endregion
-
-
 
         #region 鍏敤鏂规硶
         /// <summary>
@@ -704,7 +703,6 @@
 
         #endregion
          
-
         #region 骞冲簱鍏ュ簱
         /// <summary>
         /// 骞冲簱纭鍏ュ簱
@@ -822,5 +820,58 @@
 
 
         #endregion
+
+        #region 绾跨紪鏍囩
+        /// <summary>
+        /// 骞冲簱纭鍏ュ簱
+        /// </summary>
+        /// <param name="model">鐗╂枡缂栫爜锛涚墿鏂欏悕绉�</param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult GetSkuInfo(GetMaterialsVm model)
+        {
+            try
+            {
+                var models = _PdaAsnSvc.GetSkuInfo(model);
+
+                return Ok(new { code = 0, msg = "鑾峰彇鐗╂枡淇℃伅鎴愬姛!", data = models });
+            }
+            catch (Exception e)
+            {
+                return Ok(new { code = 1, msg = e.Message });
+            }
+        }
+
+        /// <summary>
+        /// 鐢熸垚鏂版爣绛� 骞惰繑鍥炴墦鍗版暟鎹�
+        /// </summary>
+        /// <param name="model">鏍囩淇℃伅</param>
+        /// <returns>鎵撳嵃鏁版嵁</returns>
+        [HttpPost]
+        public IActionResult AddLabels(LabelsVm model) 
+        {
+            try
+            {
+                var claimsIdentity = this.User.Identity as ClaimsIdentity;
+                if (claimsIdentity == null)
+                {
+                    throw new Exception("鏈幏鍙栧埌鐢ㄦ埛淇℃伅");
+                }
+                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
+                if (string.IsNullOrWhiteSpace(UserId))
+                {
+                    throw new Exception("鏈幏鍙栧埌鐢ㄦ埛淇℃伅");
+                }
+                model.userId = int.Parse(UserId);
+                var models = _PdaAsnSvc.AddLabels(model);
+
+                return Ok(new { code = 0, msg = "绠辩爜鐢熸垚鎴愬姛!", data = models });
+            }
+            catch (Exception e)
+            {
+                return Ok(new { code = 1, msg = e.Message });
+            }
+        }
+        #endregion
     }
 }

--
Gitblit v1.8.0