HTML/views/ASNSetting/ArrivalNotice.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HTML/views/ASNSetting/LabelPrint.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HTML/views/ASNSetting/LabelPrintSelect.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Model/ModelDto/BllAsnDto/LabelBoxDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllAsnServer/BllLabelBoxNoServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.Entity/BllAsnEntity/BllLabelBoxNo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.IBLL/IBllAsnServer/IBllLabelBoxNoServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/BllAsnController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HTML/views/ASNSetting/ArrivalNotice.html
@@ -1144,6 +1144,7 @@ //明细表操作栏事件 table.on('tool(LAY-app-content-list2)', function (obj) { var data = obj.data; var id = data.Id; switch(obj.event) { case "del" : @@ -1179,7 +1180,7 @@ title: '生成标签', content: 'LabelPrintSelect.html', maxmin: true, area: ['460px', '460px'], area: ['480px', '615px'], btn: ['确定','取消'], yes: function(index, layero){ var iframeWindow = window['layui-layer-iframe'+ index] @@ -1190,20 +1191,13 @@ var field = data.field; //获取提交的字段 console.log(field); //提交 Ajax 成功后,静态更新表格中的数据 var param = { Id: data.Id, Reset: field.reset, //重置批号 Level: field.level, //标签级别 1/2级 Type:field.type, //关系层级 有/无层级 ArriveQty:field.arriveQty, //到货数量 BoxType:field.boxType ,// 箱支类型 箱/支 Qty:field.qty //箱/支数量 }; console.log(param); //"&Level="+field.level+"&Type="+field.type+"&BoxType="+field.boxType+"&Qty="+field.qty+ var str = "Id="+id+"&Reset="+field.reset+"&ArriveQty="+field.arriveQty+"&ProductionTime="+field.productionTime+"&ExpirationTime="+field.expirationTime+"&StoreTime="+field.storeTime; layer.open({ type: 2, title: '生成标签', content: 'LabelPrint.html', content: 'LabelPrint.html?'+str, maxmin: true, area: ['660px', '660px'], btn: ['取消'], HTML/views/ASNSetting/LabelPrint.html
@@ -27,6 +27,16 @@ <body> <div style="width:100%;text-align: center;"> <div style="padding-top: 10px;text-align: left; margin-left: 5%;" id="button"> <div class="layui-inline"> <button id="btnAdd" class="layui-btn layui-btn-sm" lay-event="Add2"><i class="layui-icon"></i>生成标签</button> </div> <div class="layui-inline"> <button id="btnPrint" class="layui-btn layui-btn-sm" lay-event="Add"><i class="layui-icon"></i>打印</button> </div> </div> <div class="layui-form" lay-filter="layuiadmin-app-form-list" id="print" style="width: 100%;height:100%; text-align: right;padding-top: 5px;margin-left: 0%;"> <div> @@ -44,7 +54,7 @@ </tr> <tr> <td>品名</td> <td colspan="3" id="goodName"></td> <td colspan="3" id="SkuName"></td> </tr> <tr> <td>规格/型号</td> @@ -56,7 +66,7 @@ <td>进厂编号</td> <td style="padding: 1px 0px;"></td> <td>物料代码</td> <td style="padding: 1px 0px;"> </td> <td id="SkuNo"> </td> </tr> <tr> <td>原厂批号</td> @@ -80,49 +90,8 @@ </div> <div style="page-break-after: always;"></div> </div> <hr> <div style="padding-top: 10px;text-align: left;" id="button"> <div class="layui-inline" style="margin-right: 10px;"> <span style="padding-right: 5px;">是否重置批次:</span> <span style="padding-right: 5px;">是</span><input type="radio" checked="true" name="isprint" value="1"> <span style="padding-right: 5px;">否</span><input type="radio" name="isprint" value="0"> </div> <div class="layui-inline"> 到货数量:<div class="layui-input-inline"> <input type="text" oninput="value=value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d).*$/,'$1$2.$3')" onafterpaste="this.value=this.value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d).*$/,'$1$2.$3')" name="skuNum" id="skuNum" lay-verify="skuNum" placeholder="" style="width: 100px;" autocomplete="off" class="layui-input InputCss"> </div> </div> <div class="layui-inline"> 箱标签数量:<div class="layui-input-inline"> <input type="text" onkeyup="this.value=this.value.replace(/^0{1,}/g,'')" onafterpaste="this.value=this.value.replace(/^0{1,}/g,'')" name="bQNum" id="bQNum" lay-verify="bQNum" placeholder="" style="width: 100px;" autocomplete="off" class="layui-input InputCss"> </div> </div> <div> <div class="layui-inline" style="padding-top: 5px"> 一级标签必录参数:箱内数量:<div class="layui-input-inline"> <input type="text" oninput="value=value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d).*$/,'$1$2.$3')" onafterpaste="this.value=this.value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d).*$/,'$1$2.$3')" name="number" id="number" lay-verify="number" placeholder="" style="width: 70px;" autocomplete="off" class="layui-input InputCss"> </div> </div> <div class="layui-inline"> <button id="btnPrint" class="layui-btn layui-btn-sm" lay-event="Add"><i class="layui-icon"></i>打印</button> </div> </div> </div> </div> </div> <script src="../../layuiadmin/layui/layui.js"></script> <script src="../../js/public.js"></script> @@ -141,20 +110,22 @@ form = layui.form, layer = layui.layer; var laydate = layui.laydate; laydate.render({ elem: '#ProductionDate' , format: 'yyyy-MM-dd' //可任意组合 }); laydate.render({ elem: '#InspectTime' , format: 'yyyy-MM-dd' //可任意组合 }); laydate.render({ elem: '#ExpirationTime' , format: 'yyyy-MM-dd' //可任意组合 }); var id = getQueryString('id'); var xun = 0; var id = getQueryString('Id'); var reset = getQueryString('Reset'); var arriveQty = getQueryString('ArriveQty'); var productionTime = getQueryString('ProductionTime'); var expirationTime = getQueryString('ExpirationTime'); var storeTime = getQueryString('StoreTime'); // var level = getQueryString('Level'); // var type = getQueryString('Type'); // var boxType = getQueryString('BoxType'); // var qty = getQueryString('Qty'); console.log(productionTime); console.log(expirationTime); console.log(storeTime); $('#btnPrint').on('click', function () { var param = { @@ -204,7 +175,30 @@ id = 0; } else { div(-1, 1, 0); var param = { id: id, }; synData(IP + "/BllAsn/GetLabelBoxModel", param , 'get', function (res) { if (res.code == 0) { //成功 $("#SkuName").html(res.data.SkuName); $("#Standard").html(res.data.Standard); $("#PackageStandard").html(res.data.PackageStandard); $("#SkuNo").html(res.data.SkuNo); $("#SupplierLot").html(res.data.SupplierLot); $("#ExpirationTime").html(expirationTime); $("#StoreTime").html( storeTime); // $("#imgBar").attr("src", res.data[0].imageStr); } else { //不成功 layer.msg(res.msg, { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }, function () { }); } }); // div(-1, 1, 0); } @@ -336,7 +330,7 @@ // 获取传递参数 function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } HTML/views/ASNSetting/LabelPrintSelect.html
@@ -10,6 +10,25 @@ </head> <body> <div class="layui-form" lay-filter="layuiadmin-app-form-list" id="layuiadmin-app-form-list" style="padding: 20px 30px 0 0;"> <div class="layui-form-item"> <label class="layui-form-label">生产日期</label> <div class="layui-input-block"> <input type="text" name="productionTime" id="productionTime" placeholder="请输入生产日期" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">有效期至</label> <div class="layui-input-block"> <input type="text" name="expirationTime" id="expirationTime" placeholder="请输入有效期至" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">储存期至</label> <div class="layui-input-block"> <input type="text" name="storeTime" id="storeTime" placeholder="请输入储存期至" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">重置批号</label> <div class="layui-input-block"> @@ -19,7 +38,7 @@ </select> </div> </div> <div class="layui-form-item"> <!-- <div class="layui-form-item"> <label class="layui-form-label">标签级别</label> <div class="layui-input-block"> <select name="level" id="level" lay-filter="levelFil" lay-verify="required"> @@ -36,14 +55,16 @@ <option value="0">无层级</option> </select> </div> </div> </div> --> <div class="layui-form-item"> <label class="layui-form-label">到货数量</label> <div class="layui-input-block"> <input type="text" name=arriveQty" id="arriveQty" lay-verify="required" placeholder="请输入巷道名称" autocomplete="off" class="layui-input"> <input type="text" name="arriveQty" id="arriveQty" lay-verify="required" placeholder="请输入到货数量" autocomplete="off" class="layui-input" oninput="value=value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3')" onafterpaste="this.value=this.value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3')"> </div> </div> <div class="layui-form-item" id="boxTypeDiv" style="display: none;"> <!-- <div class="layui-form-item" id="boxTypeDiv" style="display: none;"> <label class="layui-form-label">箱支类型</label> <div class="layui-input-block"> <select name="boxType" id="boxType" lay-filter="boxTypeFil" lay-search> @@ -56,9 +77,10 @@ <div class="layui-form-item" id="qtyDiv" style="display: none;"> <label class="layui-form-label">数量</label> <div class="layui-input-block"> <input type="text" name="qty" id="qty" placeholder="请输入巷道名称" autocomplete="off" class="layui-input"> <input type="text" name="qty" id="qty" placeholder="请输入数量" autocomplete="off" class="layui-input" oninput="value=value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3')" onafterpaste="this.value=this.value.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3')"> </div> </div> </div> --> <div class="layui-form-item layui-hide"> <input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="确认添加"> <input type="button" lay-submit lay-filter="layuiadmin-app-form-edit" id="layuiadmin-app-form-edit" value="确认编辑"> @@ -75,64 +97,78 @@ base: '../../layuiadmin/' //静态资源所在路径 }).extend({ index: 'lib/index' //主入口模块 }).use(['index', 'form', 'layer'], function() { }).use(['index', 'form', 'layer', 'laydate'], function() { var $ = layui.$; var form = layui.form; var layer = layui.layer; form.on('select(levelFil)', function(data){ console.log($("#type").val()); var type = $("#type").val(); if (data.value == "1" ) { $("#boxTypeDiv").css("display","none"); form.val("layuiadmin-app-form-list", { "boxType": "" }); $("#boxType").removeAttr("lay-verify"); var laydate = layui.laydate; laydate.render({ elem: '#productionTime' , format: 'yyyy-MM-dd' //可任意组合 }); laydate.render({ elem: '#expirationTime' , format: 'yyyy-MM-dd' //可任意组合 }); laydate.render({ elem: '#storeTime' , format: 'yyyy-MM-dd' //可任意组合 }); $("#qtyDiv").css("display","none"); $("#qty").removeAttr("lay-verify"); $("#qty").val(""); // form.on('select(levelFil)', function(data){ // console.log($("#type").val()); // var type = $("#type").val(); // if (data.value == "1" ) { // $("#boxTypeDiv").css("display","none"); // form.val("layuiadmin-app-form-list", { // "boxType": "" // }); // $("#boxType").removeAttr("lay-verify"); form.render('select'); } if (data.value == "2" && type == "0") { $("#boxTypeDiv").css("display","block"); $("#boxType").attr("lay-verify","required"); // $("#qtyDiv").css("display","none"); // $("#qty").removeAttr("lay-verify"); // $("#qty").val(""); // form.render('select'); // } // if (data.value == "2" && type == "0") { // $("#boxTypeDiv").css("display","block"); // $("#boxType").attr("lay-verify","required"); } }); form.on('select(typeFil)', function(data){ var level = $("#level").val(); if (data.value == "1") { $("#boxTypeDiv").css("display","none"); // } // }); // form.on('select(typeFil)', function(data){ // var level = $("#level").val(); // if (data.value == "1") { // $("#boxTypeDiv").css("display","none"); form.val("layuiadmin-app-form-list", { "boxType": "" }); $("#boxType").removeAttr("lay-verify"); $("#qtyDiv").css("display","none"); $("#qty").removeAttr("lay-verify"); $("#qty").val(""); form.render('select'); } if (data.value == "0" && level == "2") { $("#boxTypeDiv").css("display","block"); $("#boxType").attr("lay-verify","required"); // form.val("layuiadmin-app-form-list", { // "boxType": "" // }); // $("#boxType").removeAttr("lay-verify"); } }); form.on('select(boxTypeFil)', function(data){ if (data.value == "1") { //箱 $("#qtyDiv").css("display","none"); $("#qty").removeAttr("lay-verify"); $("#qty").val(""); } if (data.value == "2" ) { $("#qtyDiv").css("display","block"); $("#qty").attr("lay-verify","required"); } }); // $("#qtyDiv").css("display","none"); // $("#qty").removeAttr("lay-verify"); // $("#qty").val(""); // form.render('select'); // } // if (data.value == "0" && level == "2") { // $("#boxTypeDiv").css("display","block"); // $("#boxType").attr("lay-verify","required"); // } // }); // form.on('select(boxTypeFil)', function(data){ // if (data.value == "1") { //箱 // $("#qtyDiv").css("display","none"); // $("#qty").removeAttr("lay-verify"); // $("#qty").val(""); // } // if (data.value == "2" ) { // $("#qtyDiv").css("display","block"); // $("#qty").attr("lay-verify","required"); // } // }); }) Wms/Model/ModelDto/BllAsnDto/LabelBoxDto.cs
@@ -18,6 +18,9 @@ public decimal Qty { get; set; } public string SkuNo { get; set; } public string SkuName { get; set; } public string Standard { get; set; } public string PackageStandard { get; set; } public DateTime? StoreTime { get; set; } public string LotNo { get; set; } public string LotText { get; set; } public string SupplierName { get; set; } @@ -41,5 +44,12 @@ public DateTime CreateTime { get; set; } public DateTime? UpdateTime { get; set; } /// <summary> /// 生成一维码图片路径 /// </summary> public string ImgStr { get; set; } } } Wms/WMS.BLL/BllAsnServer/BllLabelBoxNoServer.cs
@@ -1,10 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using Model.ModelDto.BllAsnDto; using Model.ModelVm.BllAsnVm; using SqlSugar; using Utility.Tools; using WMS.DAL; using WMS.Entity.BllAsnEntity; using WMS.Entity.Context; @@ -47,6 +49,9 @@ Qty = a.Qty, SkuNo = a.SkuNo, SkuName = a.SkuName, Standard = a.Standard, PackageStandard = a.PackageStandard, StoreTime = a.StoreTime, LotNo = a.LotNo, LotText = a.LotText, SupplierName = a.SupplierName, @@ -79,5 +84,625 @@ throw new Exception(e.Message); } } //获取标签模板根据入库单明细ID public LabelBoxDto GetLabelBoxModel(int id) { try { var asnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == id && m.IsDel == "0"); if (asnDetail == null) { throw new Exception("未查询到单据明细信息,请核实"); } var packInfo = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnDetail.PackagNo); if (packInfo == null) { throw new Exception("未查询到单据明细中的物料包装信息"); } var str = ""; if (!string.IsNullOrWhiteSpace(packInfo.L1Name)) { str += packInfo.L1Num + "/" + packInfo.L1Name; } if (!string.IsNullOrWhiteSpace(packInfo.L2Name)) { str += "-" + packInfo.L2Num + "/" + packInfo.L2Name; } if (!string.IsNullOrWhiteSpace(packInfo.L3Name)) { str += "-" + packInfo.L3Num + "/" + packInfo.L3Name; } if (!string.IsNullOrWhiteSpace(packInfo.L4Name)) { str += "-" + packInfo.L4Num + "/" + packInfo.L4Name; } if (!string.IsNullOrWhiteSpace(packInfo.L5Name)) { str += "-" + packInfo.L5Num + "/" + packInfo.L5Name; } var data = new LabelBoxDto(); data.SkuNo = asnDetail.SkuNo; data.SkuName = asnDetail.SkuName; data.Standard = asnDetail.Standard; data.SupplierLot = asnDetail.SupplierLot; data.PackageStandard = str; return data; } catch (Exception e) { throw new Exception(e.Message); } } //获取标签信息(生成标签) public List<LabelBoxDto> AddLabelBoxReturn(int imId, string isReset,decimal arriveQty, string skuName, string standard, string packStandard, string skuNo, string supplierLot, string productionTime, string expirationTime, string storeTime, int userId) { try { #region 必填验证 //if (string.IsNullOrWhiteSpace(productionDate)) //{ // throw new Exception("生产日期需必填,不能为空"); //} //var twoSeletOne = true;//有效期、复验期二选一 //if (string.IsNullOrWhiteSpace(expirationTime)) //{ // twoSeletOne = false; //} //if (string.IsNullOrWhiteSpace(inspectTime)) //{ // twoSeletOne = false; //} //if (twoSeletOne) //{ // throw new Exception("有效期、复验期最好填写一个"); //} //if (string.IsNullOrWhiteSpace(supplierName)) //{ // throw new Exception("生产厂家需必填,不能为空"); //} //if (string.IsNullOrWhiteSpace(supplierLot)) //{ // throw new Exception("厂家批号需必填,不能为空"); //} //if (bQNum <= 0) //{ // throw new Exception("外箱标签数量不能为空或小于等于0"); //} #endregion #region 单据、物料、包装、标签信息获取 var asnList = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == imId && m.IsDel == "0"); if (asnList == null) { throw new Exception("未查询到单据明细信息"); } var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0"); if (asn == null) { throw new Exception("未查询到单据信息"); } //物料 var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == asnList.SkuNo); var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnList.PackagNo); if (pack == null) { throw new Exception("未查询到当前单据中物料的包装信息"); } //标签表 var label = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == imId).ToList(); #endregion #region 包装查询 var bNum = 0;//箱物品数量 var zNum = 0;//支物品数量 var packLevel = 0; var isGo = true; if (pack.L5Num.HasValue) { if (pack.L5Name != "托") { isGo = false; packLevel = 5; bNum = Convert.ToInt32(pack.L5Num); } } if (pack.L4Num.HasValue && isGo) { if (pack.L4Name != "托") { isGo = false; packLevel = 4; bNum = Convert.ToInt32(pack.L4Num); } } if (pack.L3Num.HasValue && isGo) { if (pack.L4Name != "托") { isGo = false; packLevel = 3; bNum = Convert.ToInt32(pack.L3Num); } } if (pack.L2Num.HasValue) { packLevel = 2; 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级标签打印 { packLevel = 1; } #endregion if (packLevel == 1) { #region 一级包装 // 根据用户输入的箱数量计算需要的条码数 var labQty = label.Sum(m => m.Qty); var qty = asnList.Qty - labQty;//当前单据剩余需要打印的物料数量(不是标签数量) if (qty <= 0) { throw new Exception("当前单据物料标签已打印完毕,如有需要请补打"); } #region 到货数量 if (arriveQty - qty > 0) { throw new Exception("到货数量大于未打标签数量,请重新输入到货数量并核实!"); } else { qty = arriveQty; } #endregion int labelNum = 1; //生产条码数量 if (zNum > 0) { labelNum = int.Parse(Math.Ceiling(qty / zNum).ToString());//标签数量 } else { throw new Exception("当前单据物料是一级包装,未查询到一级包装信息"); } #region 获取/生成批次号 string maxLotNoStr = ""; //批次号 string maxBoxCode = ""; //箱码号 // 生成自编批号 string toDayTime = DateTime.Now.ToString("yyyyMMdd"); var diJiJian = 0; var maxLotNo = label.Max(a => a.LotNo); var maxBoxNo = label.Max(a => a.BoxNo); if (isReset == "0") { maxLotNoStr = maxLotNo; maxBoxCode = maxBoxNo; if (string.IsNullOrWhiteSpace(maxLotNoStr)) { maxLotNoStr = toDayTime.Substring(2, 6) + "0001"; } } else { var maxCode = Db.Queryable<BllLabelBoxNo>().Max(a => a.LotNo); // 获取今天最大批次号 if (string.IsNullOrWhiteSpace(maxCode)) { maxLotNoStr = toDayTime.Substring(2, 6) + "0001"; } else { var lotStr = maxCode.Substring(0, 6); var timeStr = toDayTime.Substring(2, 6); if (lotStr == timeStr) { maxLotNoStr = toDayTime.Substring(2, 6) + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0'); } else { maxLotNoStr = timeStr + "0001"; } } } #endregion var modelList = new List<LabelBoxDto>(); for (int i = 1; i <= labelNum; i++) { // 物料条码信息赋值 LabelBoxDto model = new LabelBoxDto(); model.AsnDetailNo = imId; model.SkuNo = asnList.SkuNo; model.SkuName = asnList.SkuName; model.SupplierName = asn.CustomerName; // 供应商 model.Standard = asnList.Standard; // 规格 model.PackageStandard = packStandard; model.SupplierLot = supplierLot; // 厂家批号 model.LotNo = maxLotNoStr; //批次 model.ProductionTime = DateTime.Parse(productionTime); // 生产日期 model.StoreTime = DateTime.Parse(storeTime); // 储存期至 model.ExpirationTime = DateTime.Parse(expirationTime); // 有效期至/贮存期 if (i == labelNum) { // 最后一个条码 var s = zNum * (i - 1); if (zNum > qty - s) { model.Qty = qty - s;// 数量 } else { model.Qty = zNum;// 数量 } } else { model.Qty = zNum; // 数量 } if (maxBoxCode == "") { var str = model.LotNo + "000001"; model.BoxNo = str; // 支号 批号+ 流水 2302010001000001 maxBoxCode = model.BoxNo; } else { model.BoxNo = maxBoxCode.Substring(0, 10) + (int.Parse(maxBoxCode.Substring(10, 6)) + 1).ToString().PadLeft(6, '0'); maxBoxCode = model.BoxNo; } model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 80, 50); // 添加到list集合 modelList.Add(model); // 将条码保存到原料条码表 var labelModel = new BllLabelBoxNo() { ASNNo = asnList.ASNNo, ASNDetailNo = asnList.Id, BoxNo = model.BoxNo, ParentBoxNo = "", Qty = model.Qty, SkuNo = model.SkuNo, SkuName = model.SkuName, Standard = model.Standard, PackageStandard = model.PackageStandard, LotNo = model.LotNo, SupplierName = asn.CustomerName, ProductionTime = model.ProductionTime, SupplierLot = model.SupplierLot, StoreTime = model.StoreTime, ExpirationTime = model.ExpirationTime, IsUse = "0", Level = "1", CreateUser = userId, CreateTime = DateTime.Now, }; Db.Insertable(labelModel).ExecuteCommand(); } #endregion } else //(packLevel == 2) { #region 二级包装 // 根据用户输入的箱数量计算需要的条码数 var labQty = label.Sum(m => m.Qty); var qty2 = asnList.Qty - labQty; if (qty2 <= 0) { throw new Exception("当前单据物料标签已打印完毕,如有需要请补打"); } #region 增加到货数量 if (arriveQty - qty2 > 0) { throw new Exception("到货数量大于未打标签数量,请重新输入到货数量!"); } else { qty2 = arriveQty; } #endregion 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 = ""; //支码 // 生成自编批号 string toDayTime2 = DateTime.Now.ToString("yyyyMMdd"); if (isReset == "0") { var maxCode = label.Max(a => a.LotNo); var boxCode1 = label.Where(m=>m.Level == "1").Max(a => a.BoxNo);//箱号 var boxCode2 = label.Where(m => m.Level == "2").Max(a => a.BoxNo);//支号 maxCodestr2 = maxCode; maxboxcode2 = boxCode1; maxboxcode3 = boxCode2; if (string.IsNullOrWhiteSpace(maxCodestr2)) { maxCodestr2 = toDayTime2.Substring(2, 6) + "0001"; } } else { var maxCode = Db.Queryable<BllLabelBoxNo>().Max(a => a.LotNo); // 获取今天最大批次号 if (string.IsNullOrWhiteSpace(maxCode)) { maxCodestr2 = toDayTime2.Substring(2, 6) + "0001"; } else { var lotStr = maxCode.Substring(0, 6); var timeStr = toDayTime2.Substring(2, 6); if (lotStr == timeStr) { maxCodestr2 = timeStr + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0'); } else { maxCodestr2 = timeStr + "0001"; } } } #endregion var modelList = new List<LabelBoxDto>(); for (int i = 1; i <= labelNum2; i++)//箱码标签 { // 物料条码信息赋值 LabelBoxDto model = new LabelBoxDto(); model.AsnDetailNo = imId; model.SkuNo = asnList.SkuNo; model.SkuName = asnList.SkuName; model.Standard = asnList.Standard; // 规格 model.PackageStandard = packStandard; model.SupplierLot = supplierLot; // 厂家批号 model.LotNo = maxCodestr2; //批次 model.ProductionTime = DateTime.Parse(productionTime); // 生产日期 model.StoreTime = DateTime.Parse(storeTime); // 储存期至 model.ExpirationTime = DateTime.Parse(expirationTime); // 有效期至/贮存期 if (i == labelNum2) { // 最后一个条码 var s = bNum * (i - 1); if (bNum > qty2 - s) { model.Qty = qty2 - s;// 数量 } else { model.Qty = bNum;// 数量 } } else { model.Qty = bNum; // 数量 } if (maxboxcode2 == "") { maxboxcode2 = model.LotNo +"000001"; model.BoxNo = maxboxcode2; // 箱号 批号+第几箱 maxboxcode2 = model.BoxNo; } else { model.BoxNo = maxboxcode2.Substring(0, 10) + (int.Parse(maxboxcode2.Substring(10, 6)) + 1).ToString().PadLeft(6, '0'); maxboxcode2 = model.BoxNo; } model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 80, 50); // 添加到list集合 modelList.Add(model); if (i == labelNum2) { var isGo2 = false; var sl = 0; for (int j = 1; j <= labelNumZ2; j++) { if (isGo2) { break; } var d = zNum; if (i == labelNum2) { var s = bNum * (i - 1); var s2 = zNum * (j - 1); if (zNum >= qty2 - s - s2) { d = (int)(qty2 - s - s2); // 数量 isGo2 = true; } } sl++; } labelNumZ2 = sl; } for (int j = 1; j <= labelNumZ2; j++)//最小单位标签 { if (isGo) { break; } var d = zNum; if (i == labelNum2) { var s = bNum * (i - 1); var s2 = zNum * (j - 1); if (zNum >= qty2 - s - s2) { d = (int)(qty2 - s - s2); // 数量 isGo = true; } } //// 物料条码信息赋值 //LabelPrint5Model model2 = new LabelPrint5Model(); //model2.ImportId = imId; //model2.OuterBillCode = list.OuterBillCode; //model2.ImportBillCode = list.ImportBillCode; //model2.SkuNo = list.GoodsCode; //model2.SkuName = list.GoodsName; //model2.QtyCount = (int)labelNumZ2; // 总件数(int)labelNumZ2 //model2.SupplierName = supplierName; // 生产厂家 //model2.ProductionDate = productionDate; // 生产日期 //model2.SapSkuNo = sapNo; // SAP代码 //model2.Standard = good.GoodsStandard; // 规格 //model2.SupplierLot = supplierLot; // 厂家批号 //model2.LotNo = maxCodestr2; //批次 //model2.InspectTime = inspectTime; // 复验期至 //model2.ExpirationTime = expirationTime; // 有效期至/贮存期 //model2.ExpirationType = good.GoodsTemp; // 贮存条件 //model2.Qty = d; // 数量 //model2.QtyOrd = j; // 第几件 //if (maxboxcode3 == "") //{ // var str = mesGood.PadRight(16, ' ') + model.LotNo.PadRight(12, ' ') + "0001"; // model2.BoxCode = str; // 支号 批号+第几箱 // maxboxcode3 = model2.BoxCode; //} //else //{ // model2.BoxCode = maxboxcode3.Substring(0, 28) + (int.Parse(maxboxcode3.Substring(28, 4)) + 1).ToString().PadLeft(4, '0'); // maxboxcode3 = model2.BoxCode; //} //model2.imageStr = Utility.Extra.BarcodeHelper.GetQrCodeBase64(model2.BoxCode, 85, 85); //// 添加到list集合 //if (printModel.Count(m => m.BoxCode.Length > 17) <= 100)//排除待箱码判断支码是否小于100 //{ // printModel.Add(model2); //} //var guid = Guid.NewGuid().ToString("N"); //// 将条码保存到原料条码表 //var LabelModel2 = new LabelPrint //{ // LabelID = guid, // LabelStream = model.BoxCode, // BoxCode1 = model2.BoxCode, // GoodsCode = model2.SkuNo, // GoodsName = model2.SkuName, // GoodsStandard = model2.Standard, // ImportLotNo = model2.LotNo, // SupplierName = model2.SupplierName, // ImportId = model2.ImportId, // OuterBillCode = model2.OuterBillCode, // ImportBillCode = model2.ImportBillCode, // ProductionDate = model2.ProductionDate, // SapSkuNo = model2.SapSkuNo, // Qty = model2.Qty, // SupplierLot = model2.SupplierLot, // InspectTime = model2.InspectTime, // ExpirationTime = model2.ExpirationTime, // QtyCount = model2.QtyCount, // QtyOrd = model2.QtyOrd, // ExpirationType = model2.ExpirationType, // BoxNum = bNum,//model.Qty, // BulkTank = model.Qty == bNum ? 0 : 1,//零头箱 // BulkCase = 0,//零头盒 // CreateUser = createUser, // CreateTime = DateTime.Now, // IsUse = 0 //}; //DataContext.LabelPrint.InsertOnSubmit(LabelModel2); } } #endregion } //return printModel; throw new NotImplementedException(); } catch (Exception e) { throw new Exception(e.Message); } } } } Wms/WMS.Entity/BllAsnEntity/BllLabelBoxNo.cs
@@ -61,6 +61,27 @@ public string SkuName { get; set; } /// <summary> /// Desc:物料规格 /// Default: /// Nullable:True /// </summary> public string Standard { get; set; } /// <summary> /// Desc:包装规格 /// Default: /// Nullable:True /// </summary> public string PackageStandard { get; set; } /// <summary> /// Desc:储存期至 /// Default: /// Nullable:True /// </summary> public DateTime? StoreTime { get; set; } /// <summary> /// Desc:批次号 /// Default: /// Nullable:True Wms/WMS.IBLL/IBllAsnServer/IBllLabelBoxNoServer.cs
@@ -16,5 +16,48 @@ /// <param name="count">数量</param> /// <returns>标签箱码信息</returns> List<LabelBoxDto> GetLabelBoxList(LabelBoxVm model, out int count); /// <summary> /// 获取标签模板根据入库单明细ID /// </summary> /// <param name="id">入库单明细ID</param> /// <returns>标签信息模板</returns> LabelBoxDto GetLabelBoxModel(int id); ///// <summary> ///// 获取物料标签信息JC06 ///// </summary> ///// <param name="imId"></param> ///// <param name="isPrint">是否重新生成自有批次 0:否 1:是 </param> ///// <param name="createUser">创建人</param> ///// <param name="number">箱内数量(一级标签必填)</param> ///// <param name="productionDate">生产日期</param> ///// <param name="supplierName">生产厂家</param> ///// <param name="supplierLot">生产厂家批号</param> ///// <param name="inspectTime">有效期</param> ///// <param name="expirationTime">保质期</param> ///// <param name="bQNum">外箱标签数量</param> ///// <param name="skuNum">到货数量</param> ///// <returns></returns> /// <summary> /// 获取标签信息(生成标签) /// </summary> /// <param name="imId">入库单明细ID</param> /// <param name="isReset">是否重新生成自有批次 0:否 1:是</param> /// <param name="arriveQty">到货数量</param> /// <param name="skuName">物料名称</param> /// <param name="standard">规格/型号</param> /// <param name="packStandard">包装规格</param> /// <param name="skuNo">物料编码</param> /// <param name="supplierLot">供应商批次</param> /// <param name="productionTime">生产日期</param> /// <param name="expirationTime">有效期至</param> /// <param name="storeTime">储存期至</param> /// <param name="userId">操作人</param> /// <returns></returns> List<LabelBoxDto> AddLabelBoxReturn(int imId, string isReset, decimal arriveQty, string skuName,string standard,string packStandard,string skuNo, string supplierLot, string productionTime, string expirationTime, string storeTime,int userId); } } Wms/Wms/Controllers/BllAsnController.cs
@@ -862,6 +862,21 @@ } } [HttpGet] public IActionResult GetLabelBoxModel(int id) { try { var list = _labelBox.GetLabelBoxModel(id); return Ok(new { code = 0, msg = "箱码模板信息", data = list }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion }