| | |
| | | .layui-table-mend { |
| | | position: relative; |
| | | } |
| | | |
| | | .input-dis { |
| | | position: absolute; /* 设置为绝对定位 */ |
| | | top: -25%; /* 顶部对齐 */ |
| | | right: 0; /* 右侧对齐 */ |
| | | bottom: 0; /* 底部对齐 */ |
| | | left: 0; /* 左侧对齐 */ |
| | | width: 100%; /* 宽度设置为100% */ |
| | | height: 150%; /* 高度设置为100% */ |
| | | position: absolute; |
| | | /* 设置为绝对定位 */ |
| | | top: -25%; |
| | | /* 顶部对齐 */ |
| | | right: 0; |
| | | /* 右侧对齐 */ |
| | | bottom: 0; |
| | | /* 底部对齐 */ |
| | | left: 0; |
| | | /* 左侧对齐 */ |
| | | width: 100%; |
| | | /* 宽度设置为100% */ |
| | | height: 150%; |
| | | /* 高度设置为100% */ |
| | | background-color: transparent; |
| | | border: none; |
| | | text-align: center; |
| | |
| | | <label class="layui-form-label">单据类型</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="Type" id="Type" lay-filter="Type" lay-search> |
| | | <!-- JC23 --> |
| | | <option value="0">成品入库</option> |
| | | <option value="1">采购入库</option> |
| | | <option value="4">车间余料退回入库</option> |
| | | <option value="5">其它入库</option> |
| | | <option value="6">代储入库</option> |
| | | <!-- <option value=""></option> --> |
| | | <!-- JC24 --> |
| | | <!-- <option value="0" selected>成品入库</option> |
| | | <option value="1">采购入库</option> |
| | | <option value="2">中间品入库</option> --> |
| | | <!-- <option value="3">退货入库</option> --> |
| | | <!-- <option value="4">车间余料退回入库</option> |
| | | <option value="5">其它入库</option> |
| | | <option value="6">代储入库</option> |
| | | <option value="7">寄存入库</option> --> |
| | | <!-- JC08 --> |
| | | <!-- <option value="0">成品入库</option> |
| | | <option value="1">原料入库</option> |
| | | <option value="2">退货入库</option> --> |
| | | <option value="2">中间品入库</option> |
| | | <option value="3">退货入库</option> |
| | | <option value="4">余料退回入库</option> |
| | | </select> |
| | | </div> |
| | | |
| | |
| | | if (elem.data('value') != '' && elem.data('value') != undefined) { |
| | | elem.val(elem.data('value')).parents('table.layui-table-cell').css('overflow', 'visible'); |
| | | } |
| | | }); |
| | | }); |
| | | form.render(); |
| | | //自定义列宽 |
| | | SetTableColW('LAY-app-content-list', 'BllAsn/GetArrivalNoticeDetailList2', TotalColsSysArr); |
| | |
| | | } |
| | | } |
| | | }) |
| | | |
| | | // var IsBaleValue = ""; |
| | | // form.on('switch(IsBaleDemo)', function (obj) { |
| | | // layer.tips(this.value + ' ' + this.name + ':' + obj.elem.checked, obj.othis); |
| | | // if (obj.elem.checked) { |
| | | // IsBaleValue = "1"; |
| | | // } else { |
| | | // IsBaleValue = "0"; |
| | | // } |
| | | // }); |
| | | |
| | | // table.on('row(LAY-app-content-list)', function (obj) { |
| | | // if (IsBaleValue != "") { |
| | | // for (var j in arr) { |
| | | // if (obj.data.SkuNo == arr[j].SkuNo) { |
| | | // arr[j].IsBale = IsBaleValue; |
| | | // IsBaleValue = "" |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // }) |
| | | |
| | | // 删除入库单明细 |
| | | table.on('tool(LAY-app-content-list)', function (obj) { |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title>选择物料信息</title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> |
| | | <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-card"> |
| | | <div class="layui-form layui-card-header layuiadmin-card-header-auto"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">关键字</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" id="Msg" name="Msg" placeholder="编码/名称/规格" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">单据类型</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="Type" id="Type" lay-filter="Type" disabled="disabled" |
| | | lay-search> |
| | | <option value="0">成品入库</option> |
| | | <option value="1">采购入库</option> |
| | | <option value="2">中间品入库</option> |
| | | <option value="3">退货入库</option> |
| | | <option value="4">车间余料退回入库</option> |
| | | <option value="5">其它入库</option> |
| | | <option value="6">代储入库</option> |
| | | <option value="7">寄存入库</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索 |
| | | </button> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" data-type="setParent">确定</button> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title>选择物料信息</title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" |
| | | content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> |
| | | <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> |
| | | </head> |
| | | |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-card"> |
| | | <div class="layui-form layui-card-header layuiadmin-card-header-auto"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">关键字</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" id="Msg" name="Msg" placeholder="编码/名称/规格" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-card-body"> |
| | | <table id="goods-list" lay-filter="goods-list"></table> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">单据类型</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="Type" id="Type" lay-filter="Type" disabled="disabled" lay-search> |
| | | <option value="0">成品入库</option> |
| | | <option value="1">采购入库</option> |
| | | <option value="2">中间品入库</option> |
| | | <option value="3">退货入库</option> |
| | | <option value="4">余料退回入库</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit |
| | | lay-filter="LAY-app-contlist-search"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索 |
| | | </button> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list" data-type="setParent">确定</button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-card-body"> |
| | | <table id="goods-list" lay-filter="goods-list"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script src="../../layuiadmin/layui/layui.js"></script> |
| | | <script src="../../js/jquery-3.5.1.min.js"></script> |
| | | <script src="../../js/jquery.cookie.js"></script> |
| | | <script src="../../js/public.js"></script> |
| | | |
| | | <script> |
| | | layui.config({ |
| | | base: '../../layuiadmin/' //静态资源所在路径 |
| | | }).extend({ |
| | | index: 'lib/index' //主入口模块 |
| | | }).use(['index', 'table', 'laypage', 'layer'], function() { |
| | | var table = layui.table, |
| | | form = layui.form, |
| | | laypage = layui.laypage, |
| | | index1 = parent.layer.getFrameIndex(window.name), |
| | | layer = layui.layer; |
| | | <script src="../../layuiadmin/layui/layui.js"></script> |
| | | <script src="../../js/jquery-3.5.1.min.js"></script> |
| | | <script src="../../js/jquery.cookie.js"></script> |
| | | <script src="../../js/public.js"></script> |
| | | |
| | | <script> |
| | | layui.config({ |
| | | base: '../../layuiadmin/' //静态资源所在路径 |
| | | }).extend({ |
| | | index: 'lib/index' //主入口模块 |
| | | }).use(['index', 'table', 'laypage', 'layer'], function () { |
| | | var table = layui.table, |
| | | form = layui.form, |
| | | laypage = layui.laypage, |
| | | index1 = parent.layer.getFrameIndex(window.name), |
| | | layer = layui.layer; |
| | | |
| | | |
| | | // 获取上游页面的传值 |
| | | getQueryString('type'); |
| | | |
| | | // 获取上游页面的传值 |
| | | getQueryString('type'); |
| | | |
| | | function getQueryString(name) { |
| | | var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); |
| | | var r = window.location.search.substr(1).match(reg); |
| | | |
| | | if (r != null) |
| | | { |
| | | // $("#Type").empty(); |
| | | // if (unescape(r[2]) == 0) |
| | | // { |
| | | // $("#Type").append('<option value ="0" Selected >标准物料</option>'); |
| | | // $("#Type").append('<option value ="1">非标物料</option>'); |
| | | // } |
| | | // if (unescape(r[2]) == 1) |
| | | // { |
| | | // $("#Type").append('<option value ="0">标准物料</option>'); |
| | | // $("#Type").append('<option value ="1" Selected >非标物料</option>'); |
| | | // } |
| | | function getQueryString(name) { |
| | | var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); |
| | | var r = window.location.search.substr(1).match(reg); |
| | | |
| | | |
| | | $("#Type").val(unescape(r[2])); // "optionValue"为需要被选中的选项的value属性值 |
| | | form.render('select'); |
| | | } |
| | | if (r != null) { |
| | | |
| | | //return null; |
| | | $("#Type").val(unescape(r[2])); // "optionValue"为需要被选中的选项的value属性值 |
| | | form.render('select'); |
| | | } |
| | | |
| | | //return null; |
| | | } |
| | | |
| | | refreshTable(); |
| | | |
| | | var active = { |
| | | setParent: function(){ |
| | | var checkStatus = table.checkStatus('goods-list'); |
| | | var id = '#LAY-app-content-list',goods = $('#goods-list'); |
| | | if(checkStatus.data.length == 0) |
| | | { |
| | | parent.layer.msg('请选择待入库的物料!'); |
| | | return true; |
| | | refreshTable(); |
| | | |
| | | var active = { |
| | | setParent: function () { |
| | | var checkStatus = table.checkStatus('goods-list'); |
| | | var id = '#LAY-app-content-list', goods = $('#goods-list'); |
| | | if (checkStatus.data.length == 0) { |
| | | parent.layer.msg('请选择待入库的物料!'); |
| | | return true; |
| | | } |
| | | window.parent.success(checkStatus.data); |
| | | parent.layer.close(index1); |
| | | } |
| | | }; |
| | | $('.layui-inline .layui-btn').on('click', function(){ |
| | | var othis = $(this) |
| | | ,type = othis.data('type'); |
| | | active[type] && active[type].call(this); |
| | | }); |
| | | |
| | | |
| | | var tableIns; |
| | | function refreshTable() { |
| | | var param = { |
| | | SkuNo: $("#Msg").val(), |
| | | Type: $("#Type").val() |
| | | }; |
| | | |
| | | sendData(IP + "/BllAsn/GetMaterialsList", param, 'post', function(res) { |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | $.extend(infoOptions, { |
| | | data: list |
| | | }); |
| | | infoOptions.page = { |
| | | curr: 1 |
| | | } |
| | | tableIns = table.render(infoOptions); |
| | | } else { //不成功 |
| | | layer.msg('获取物料信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {}); |
| | | } |
| | | }); |
| | | |
| | | parent.layer.close(index1); |
| | | } |
| | | // 表单需要的变量 |
| | | var infoOptions = { |
| | | elem: '#goods-list', |
| | | height: 'full-100', |
| | | id: 'goods-list', |
| | | page: true, |
| | | limit: pageCnt, |
| | | limits: pageLimits, |
| | | cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | cols: [ |
| | | [{ |
| | | field: 'SkuId', |
| | | title: 'Id', |
| | | type: 'checkbox', |
| | | width: 100, |
| | | sort: true, |
| | | fixed: 'left' |
| | | }, { |
| | | field: 'SkuNo', |
| | | title: '物料编码', |
| | | width: 100, |
| | | fixed: 'left' |
| | | }, { |
| | | field: 'SkuName', |
| | | title: '物料名称', |
| | | width: 180, |
| | | },{ |
| | | field: 'Standard', |
| | | title: '规格', |
| | | align: 'center', |
| | | width: 180 |
| | | }, { |
| | | field: 'Type', |
| | | title: '类型', |
| | | width: 100, |
| | | templet: function (d) { |
| | | switch (d.Type) { |
| | | case "0" : return "原料"; |
| | | case "1" : return "包材"; |
| | | case "2" : return "成品"; |
| | | case "3" : return "耗材"; |
| | | case "4" : return "半成品"; |
| | | default : return ""; |
| | | } |
| | | } |
| | | }, { |
| | | field: 'IsControlled', |
| | | title: '是否标准', |
| | | // JC08 title: '是否受控', |
| | | width: 100, |
| | | // JC09 |
| | | templet: function (d) { |
| | | switch (d.IsControlled) { |
| | | case "0" : return "标准"; |
| | | case "1" : return "非标"; |
| | | default : return ""; |
| | | } |
| | | }, |
| | | // JC08 |
| | | // templet: function (d) { |
| | | // switch (d.IsBale) { |
| | | // case "0" : return "受控"; |
| | | // case "1" : return "非受控"; |
| | | // default : return ""; |
| | | // } |
| | | // } |
| | | },{ |
| | | field: 'IsInspect', |
| | | title: '是否免检', |
| | | width: 100, |
| | | templet: function (d) { |
| | | switch (d.IsInspect) { |
| | | case "0" : return "否"; |
| | | case "1" : return "是"; |
| | | default : return ""; |
| | | } |
| | | }, |
| | | },{ |
| | | field: 'Origin', |
| | | title: '来源', |
| | | width: 120 |
| | | },{ |
| | | field: 'UnitName', |
| | | title: '计量单位', |
| | | width: 100, |
| | | }, { |
| | | field: 'PackagName', |
| | | title: '包装名称', |
| | | width: 120 |
| | | }, { |
| | | field: 'Environment', |
| | | title: '存储环境', |
| | | width: 120, |
| | | templet: function (d) { |
| | | switch (d.Environment) { |
| | | case "0" : return "常温"; |
| | | case "1" : return "低温"; |
| | | case "3" : return "干燥通风"; |
| | | default : return ""; |
| | | } |
| | | }, |
| | | }, { |
| | | field: 'Weight', |
| | | title: '理论重量', |
| | | width: 100 |
| | | }, |
| | | // { |
| | | // field: 'Price', |
| | | // title: '理论单价', |
| | | // width: 100, |
| | | // hide:true |
| | | // }, |
| | | { |
| | | field: 'Warranty', |
| | | title: '保质期(天)', |
| | | width: 100 |
| | | },{ |
| | | field: 'GoodsRemark', |
| | | title: '备注', |
| | | width: 160 |
| | | } |
| | | ] |
| | | ], |
| | | |
| | | }; |
| | | $('.layui-inline .layui-btn').on('click', function () { |
| | | var othis = $(this) |
| | | , type = othis.data('type'); |
| | | active[type] && active[type].call(this); |
| | | }); |
| | | |
| | | |
| | | var tableIns; |
| | | function refreshTable() { |
| | | var param = { |
| | | SkuNo: $("#Msg").val(), |
| | | Type: $("#Type").val() |
| | | }; |
| | | |
| | | //监听搜索 |
| | | form.on('submit(LAY-app-contlist-search)', function(data) { |
| | | refreshTable(); |
| | | sendData(IP + "/BllAsn/GetMaterialsList", param, 'post', function (res) { |
| | | if (res.code == 0) { //成功 |
| | | var list = res.data; |
| | | $.extend(infoOptions, { |
| | | data: list |
| | | }); |
| | | infoOptions.page = { |
| | | curr: 1 |
| | | } |
| | | tableIns = table.render(infoOptions); |
| | | } else { //不成功 |
| | | layer.msg('获取物料信息失败!', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | // 表单需要的变量 |
| | | var infoOptions = { |
| | | elem: '#goods-list', |
| | | height: 'full-100', |
| | | id: 'goods-list', |
| | | page: true, |
| | | limit: pageCnt, |
| | | limits: pageLimits, |
| | | cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增 |
| | | cols: [ |
| | | [{ |
| | | field: 'SkuId', |
| | | title: 'Id', |
| | | type: 'checkbox', |
| | | width: 100, |
| | | sort: true, |
| | | fixed: 'left' |
| | | }, { |
| | | field: 'SkuNo', |
| | | title: '物料编码', |
| | | width: 100, |
| | | fixed: 'left' |
| | | }, { |
| | | field: 'SkuName', |
| | | title: '物料名称', |
| | | width: 180, |
| | | }, { |
| | | field: 'Standard', |
| | | title: '规格', |
| | | align: 'center', |
| | | width: 180 |
| | | }, { |
| | | field: 'Type', |
| | | title: '类型', |
| | | width: 100, |
| | | templet: function (d) { |
| | | switch (d.Type) { |
| | | case "0": return "原料"; |
| | | case "1": return "包材"; |
| | | case "2": return "成品"; |
| | | case "3": return "耗材"; |
| | | case "4": return "半成品"; |
| | | default: return ""; |
| | | } |
| | | } |
| | | }, { |
| | | field: 'IsControlled', |
| | | title: '是否标准', |
| | | // JC08 title: '是否受控', |
| | | width: 100, |
| | | // JC09 |
| | | templet: function (d) { |
| | | switch (d.IsControlled) { |
| | | case "0": return "标准"; |
| | | case "1": return "非标"; |
| | | default: return ""; |
| | | } |
| | | }, |
| | | // JC08 |
| | | // templet: function (d) { |
| | | // switch (d.IsBale) { |
| | | // case "0" : return "受控"; |
| | | // case "1" : return "非受控"; |
| | | // default : return ""; |
| | | // } |
| | | // } |
| | | }, { |
| | | field: 'IsInspect', |
| | | title: '是否免检', |
| | | width: 100, |
| | | templet: function (d) { |
| | | switch (d.IsInspect) { |
| | | case "0": return "否"; |
| | | case "1": return "是"; |
| | | default: return ""; |
| | | } |
| | | }, |
| | | }, { |
| | | field: 'Origin', |
| | | title: '来源', |
| | | width: 120 |
| | | }, { |
| | | field: 'UnitName', |
| | | title: '计量单位', |
| | | width: 100, |
| | | }, { |
| | | field: 'PackagName', |
| | | title: '包装名称', |
| | | width: 120 |
| | | }, { |
| | | field: 'Environment', |
| | | title: '存储环境', |
| | | width: 120, |
| | | templet: function (d) { |
| | | switch (d.Environment) { |
| | | case "0": return "常温"; |
| | | case "1": return "低温"; |
| | | case "3": return "干燥通风"; |
| | | default: return ""; |
| | | } |
| | | }, |
| | | }, { |
| | | field: 'Weight', |
| | | title: '理论重量', |
| | | width: 100 |
| | | }, |
| | | // { |
| | | // field: 'Price', |
| | | // title: '理论单价', |
| | | // width: 100, |
| | | // hide:true |
| | | // }, |
| | | { |
| | | field: 'Warranty', |
| | | title: '保质期(天)', |
| | | width: 100 |
| | | }, { |
| | | field: 'GoodsRemark', |
| | | title: '备注', |
| | | width: 160 |
| | | } |
| | | ] |
| | | ], |
| | | |
| | | }; |
| | | |
| | | //监听搜索 |
| | | form.on('submit(LAY-app-contlist-search)', function (data) { |
| | | refreshTable(); |
| | | }); |
| | | </script> |
| | | </body> |
| | | </html> |
| | | }); |
| | | </script> |
| | | </body> |
| | | |
| | | </html> |
| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using Model.ModelVm.BllAsnVm; |
| | | using Newtonsoft.Json; |
| | | using Utility.Tools; |
| | | using System.Threading.Tasks; |
| | | using WMS.BLL.LogServer; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllAsnEntity; |
| | | using WMS.Entity.BllSoEntity; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllAsnServer; |
| | | using WMS.Entity.BllSoEntity; |
| | | using WMS.Entity.DataEntity; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | CustomerName = tb1.CustomerName, |
| | | LotNo = tb1.LotNo, |
| | | LotText = tb1.LotText, |
| | | CheckTime = tb1.CheckTime.ToString(), |
| | | CheckTime = ((DateTime)tb1.CheckTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CheckUserName = tb5.RealName, |
| | | SupplierLot = tb1.SupplierLot, |
| | | Demo = tb1.Demo, |
| | |
| | | CompleteTime = tb1.CompleteTime, |
| | | CreateTime = tb1.CreateTime, |
| | | CreateUserName = tb3.RealName, |
| | | UpdateTime = tb1.UpdateTime.ToString(), |
| | | UpdateTime = ((DateTime)tb1.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | UpdateUserName = tb4.RealName |
| | | |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | |
| | | CompleteTime = tb1.CompleteTime, |
| | | CreateTime = tb1.CreateTime, |
| | | CreateUserName = tb3.RealName, |
| | | UpdateTime = tb1.UpdateTime.ToString(), |
| | | UpdateUserName = tb4.RealName |
| | | UpdateTime = ((DateTime)tb1.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | UpdateUserName = tb4.RealName |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | return modelList; |
| | |
| | | { |
| | | string skuType = string.Empty; |
| | | int IsPack = 2; // 0:不贴 1:贴 2:不管 |
| | | /** |
| | | * 成品贴 0 |
| | | * 采购可贴可不贴 1 |
| | | /** model.type (单据类型) |
| | | * 成品入库 0 |
| | | * 采购入库 1 |
| | | * 中间品不贴 2 |
| | | * 退货贴 3 |
| | | * 余料退回可贴可不贴 4 |
| | | * 其它可贴可不贴 5 |
| | | * 代储不贴 6 |
| | | * 寄存不贴 7 |
| | | * 退货入库 3 |
| | | * 余料退回入库 4 |
| | | */ |
| | | switch (model.Type)//0:原料 1:包材 2:成品 3:耗材 4:半成品 |
| | | { |
| | | case "0"://成品入库 |
| | | skuType = "(2)"; |
| | | IsPack = 1; //贴 |
| | | break; |
| | | case "1"://采购入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "2"://中间品入库 |
| | | skuType = "(4)"; |
| | | IsPack = 0; //不贴 |
| | | break; |
| | | case "3"://退货入库 |
| | | skuType = "(0,2)"; |
| | | IsPack = 1; //贴 |
| | | skuType = "(2)"; |
| | | break; |
| | | case "4"://车间余料退回入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "5"://其它入库 |
| | | skuType = "(0,1,2,3,4)"; |
| | | break; |
| | | case "6"://代储入库 |
| | | skuType = "(2)"; |
| | | IsPack = 0; //不贴 |
| | | break; |
| | | case "7"://寄存入库 |
| | | //skuType = "(3)"; |
| | | IsPack = 0; //不贴 |
| | | skuType = "(0,1,2,3)"; |
| | | break; |
| | | default: //其它 |
| | | //skuType = "(0,1,2,3,4)"; |
| | | skuType = "(0,1,2,3,4)"; |
| | | break; |
| | | } |
| | | |
| | |
| | | .Includes(x => x.UnitInfo) |
| | | .Includes(x => x.PackagInfo) |
| | | .ToList(); |
| | | |
| | | |
| | | |
| | | return data.Select(m => new MaterialsDto() |
| | | { |
| | |
| | | public string AddArrivalNotice(ArrivalNoticeVm model) |
| | | { |
| | | string strMessage = ""; |
| | | string sqlString = string.Empty; |
| | | string sqlDetailStr = string.Empty; |
| | | //0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | var TypeLot = "1, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | /** model.type (单据类型) |
| | | * 成品入库 0 |
| | | * 采购入库 1 |
| | | * 中间品不贴 2 |
| | | * 退货入库 3 |
| | | * 余料退回入库 4 |
| | | */ |
| | | var TypeLot = "1, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | lock (AsnLock) |
| | | { |
| | | sqlString += "Insert into BllArrivalNotice (ASNNo,Type,Origin,CustomerNo,"; |
| | | sqlString += "CustomerName,LotNo,LotText,SupplierLot,CreateUser) values ( "; |
| | | sqlString += $"'{model.ASNNo}','{model.Type}','{model.Origin}','{model.CustomerNo}', "; |
| | | sqlString += $"'{model.CustomerName}','{model.LotNo}','{model.LotText}','{model.SupplierLot}','{model.CreateUser}');"; |
| | | // 总表实体赋值 |
| | | BllArrivalNotice ASNModel = new BllArrivalNotice() |
| | | { |
| | | ASNNo = model.ASNNo, |
| | | Type = model.Type, |
| | | Origin = model.Origin, |
| | | CustomerNo = model.CustomerNo, |
| | | CustomerName = model.CustomerName, |
| | | Status = "0", |
| | | LotNo = model.LotNo, |
| | | LotText = model.LotText, |
| | | SupplierLot = model.SupplierLot, |
| | | CreateUser = (int)model.CreateUser |
| | | }; |
| | | |
| | | var detailModels = model.AsnDetail; |
| | | |
| | | foreach (ArrivalNoticeDetailVm detailModel in detailModels) |
| | | List<BllArrivalNoticeDetail> details = new List<BllArrivalNoticeDetail>(); |
| | | foreach (ArrivalNoticeDetailVm detailModel in model.AsnDetail) |
| | | { |
| | | if (string.IsNullOrEmpty(detailModel.SkuNo)) |
| | | { |
| | |
| | | strMessage = "-1:数量必须大于0;"; |
| | | continue; |
| | | } |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | |
| | | if (model.Type == "1" || model.Type == "5" || model.Type == "6" || model.Type == "7") |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(detailModel.LotNo)) |
| | |
| | | throw new Exception("当前单据类型批次不可为空!"); |
| | | } |
| | | } |
| | | |
| | | // 判断是否已存在当前明细 |
| | | string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' "; |
| | | sqlCount += $"and SkuNo ='{detailModel.SkuNo}' and LotNo = '{detailModel.LotNo}' and id != '{detailModel.Id}' and isdel = '0';"; |
| | | var com = new Common().GetRowCount(sqlCount); |
| | | int com = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.ASNNo == model.ASNNo |
| | | && m.SkuNo == detailModel.SkuNo |
| | | && m.LotNo == detailModel.LotNo |
| | | && m.Id != (int)detailModel.Id |
| | | && m.IsDel == "0").ToList().Count(); |
| | | if (com > 0) |
| | | { |
| | | strMessage = "-1:物料和批次号重复;"; |
| | |
| | | } |
| | | // 计算出总金额 |
| | | detailModel.Money = detailModel.Price * detailModel.Qty; |
| | | sqlDetailStr += "Insert into BllArrivalNoticeDetail (ASNNo,SkuNo,SkuName,Standard,"; |
| | | sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,IsSampling,InspectStatus,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( "; |
| | | sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', "; |
| | | sqlDetailStr += $"'{detailModel.LotNo.Trim()}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', "; |
| | | sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','0','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');"; |
| | | } |
| | | BllArrivalNoticeDetail detail = new BllArrivalNoticeDetail() |
| | | { |
| | | ASNNo = model.ASNNo, |
| | | SkuNo = detailModel.SkuNo, |
| | | SkuName = detailModel.SkuName, |
| | | Standard = detailModel.Standard, |
| | | LotNo = detailModel.LotNo.Trim(), |
| | | LotText = detailModel.LotText, |
| | | Qty = (decimal)detailModel.Qty, |
| | | PackagNo = detailModel.PackagNo, |
| | | FactQty = 0, // 已组数量 |
| | | CompleteQty = 0, // 完成数量 |
| | | Price = detailModel.Price, |
| | | Money = detailModel.Money, |
| | | IsBale = detailModel.IsBale, |
| | | IsBelt = detailModel.IsBelt, |
| | | SupplierLot = detailModel.SupplierLot, |
| | | Status = "0", |
| | | IsSampling = "0", |
| | | InspectStatus = "0", |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | | UDF4 = detailModel.UDF4, |
| | | UDF5 = detailModel.UDF5, |
| | | CreateUser = (int)model.CreateUser, |
| | | }; |
| | | |
| | | if (sqlDetailStr == string.Empty) |
| | | details.Add(detail); |
| | | } |
| | | |
| | | // 判断是否存在被过滤掉的明细 |
| | | if (details.Count <= 0) |
| | | { |
| | | return strMessage; |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | var rowDetailCount = 1; |
| | | if (sqlDetailStr.Length > 0) |
| | | var rowCount = Db.Insertable(ASNModel).ExecuteCommand(); |
| | | |
| | | var rowDetailCount = 0; |
| | | if (details.Count > 0) |
| | | { |
| | | rowDetailCount = Db.Ado.ExecuteCommand(sqlDetailStr); |
| | | rowDetailCount = Db.Insertable(details).ExecuteCommand(); |
| | | } |
| | | Db.Ado.CommitTran(); |
| | | |
| | | if (rowCount > 0 && rowDetailCount > 0) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "添加", $"添加了单据号为{model.ASNNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | |
| | | //7 必须为空 |
| | | var TypeLot = "1, 5, 6, 7"; //批次为生成批次单据类型 |
| | | |
| | | //if (model.Origin != "录入") |
| | | //{ |
| | | // strMessage = "-1:上游系统下发的单据,不可编辑;"; |
| | | // return strMessage; |
| | | //} |
| | | |
| | | sqlString += $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isDel = '0';"; |
| | | var asnInfo = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | var asnInfo = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0"); |
| | | if (asnInfo == null) |
| | | { |
| | | strMessage = "-1:单号不存在,或已删除!;"; |
| | | return strMessage; |
| | | } |
| | | if (asnInfo.Status != "0") |
| | | { |
| | | strMessage = "-1:单据状态变更,不可编辑;"; |
| | | return strMessage; |
| | | } |
| | | |
| | | sqlString = "UPDATE BllArrivalNotice SET "; |
| | | sqlString += $"CustomerNo = '{model.CustomerNo}',CustomerName = '{model.CustomerName}',"; |
| | | sqlString += $"LotNo = '{model.LotNo}',LotText = '{model.LotText}',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}'"; |
| | | var dateTime = DateTime.Now; |
| | | // 编辑总单 |
| | | asnInfo.CustomerNo = model.CustomerNo; |
| | | asnInfo.CustomerName = model.CustomerName; |
| | | asnInfo.LotNo = model.LotNo; |
| | | asnInfo.LotText = model.LotText; |
| | | asnInfo.UpdateTime = dateTime; |
| | | asnInfo.UpdateUser = model.CreateUser; |
| | | |
| | | var detailModels = model.AsnDetail; |
| | | sqlDetailStr += $"SELECT * FROM BllArrivalNoticeDetail WHERE ASNNo = '{model.ASNNo}' and isDel = '0';"; |
| | | var dbDetailModels = DataContext.Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sqlDetailStr); |
| | | //var dbDetailModels = DataContext.Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sqlDetailStr); |
| | | var dbDetailModels = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0").ToList(); |
| | | |
| | | sqlDetailStr = string.Empty; |
| | | // 处理已删除的明细 |
| | |
| | | { |
| | | if (detailModels.Count(it => it.Id == dbDetailModel.Id) == 0) |
| | | { |
| | | sqlDetailStr += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlDetailStr += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlDetailStr += $"WHERE Id = {dbDetailModel.Id};"; |
| | | dbDetailModel.IsDel = "1"; |
| | | dbDetailModel.UpdateTime = dateTime; |
| | | dbDetailModel.UpdateUser = model.CreateUser; |
| | | } |
| | | } |
| | | string toDayTime = DateTime.Now.ToString("yyyyMMdd"); |
| | | |
| | | // 处理修改和添加的明细 |
| | | string toDayTime = dateTime.ToString("yyyymmdd"); |
| | | List<BllArrivalNoticeDetail> addDetails = new List<BllArrivalNoticeDetail>(); |
| | | List<BllArrivalNoticeDetail> editDetails = new List<BllArrivalNoticeDetail>(); |
| | | foreach (ArrivalNoticeDetailVm detailModel in detailModels) |
| | | { |
| | | if (string.IsNullOrEmpty(detailModel.SkuNo)) |
| | |
| | | } |
| | | |
| | | // 判断是否已存在当前明细 |
| | | string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' "; |
| | | sqlCount += $"and SkuNo ='{detailModel.SkuNo}' and LotNo = '{detailModel.LotNo}' and id != '{detailModel.Id}' and isdel = '0';"; |
| | | var com = new Common().GetRowCount(sqlCount); |
| | | var com = dbDetailModels.Where(m => m.SkuNo == detailModel.SkuNo && m.LotNo == detailModel.LotNo && m.Id != detailModel.Id && m.IsDel == "0").Count(); |
| | | if (com > 0) |
| | | { |
| | | strMessage = "-1:物料和批次号重复;"; |
| | |
| | | } |
| | | // 计算出总金额 |
| | | detailModel.Money = detailModel.Price * detailModel.Qty; |
| | | sqlDetailStr += "Insert into BllArrivalNoticeDetail (ASNNo,SkuNo,SkuName,Standard,"; |
| | | sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( "; |
| | | sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', "; |
| | | sqlDetailStr += $"'{detailModel.LotNo.Trim()}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', "; |
| | | sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');"; |
| | | |
| | | |
| | | |
| | | BllArrivalNoticeDetail addModel = new BllArrivalNoticeDetail() |
| | | { |
| | | ASNNo = model.ASNNo, |
| | | SkuNo = detailModel.SkuNo, |
| | | SkuName = detailModel.SkuName, |
| | | Standard = detailModel.Standard, |
| | | LotNo = detailModel.LotNo.Trim(), |
| | | LotText = detailModel.LotText, |
| | | Qty = (decimal)detailModel.Qty, |
| | | PackagNo = detailModel.PackagNo, |
| | | Price = detailModel.Price, |
| | | Money = detailModel.Money, |
| | | FactQty = 0, // 已组数量 |
| | | CompleteQty = 0, // 完成数量 |
| | | IsBale = detailModel.IsBale, |
| | | IsBelt = detailModel.IsBelt, |
| | | SupplierLot = detailModel.SupplierLot, |
| | | Status = "0", |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | | UDF4 = detailModel.UDF4, |
| | | UDF5 = detailModel.UDF5, |
| | | CreateUser=(int)model.CreateUser |
| | | }; |
| | | addDetails.Add(addModel); |
| | | } |
| | | else |
| | | { |
| | |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | var dbDetail = dbDetailModels.First(m => m.Id == detailModel.Id); |
| | | if (TypeLot.Contains(model.Type)) |
| | | { |
| | | var dbDetail = dbDetailModels.First(m=>m.Id == detailModel.Id); |
| | | if (!string.IsNullOrWhiteSpace(dbDetail.LotNo)) |
| | | { |
| | | if (dbDetail.LotNo != detailModel.LotNo) |
| | |
| | | } |
| | | // 计算出总金额 |
| | | detailModel.Money = detailModel.Price * detailModel.Qty; |
| | | sqlDetailStr += $"UPDATE BllArrivalNoticeDetail SET "; |
| | | sqlDetailStr += $"Qty = '{detailModel.Qty}',LotNo = '{detailModel.LotNo.Trim()}',Money='{detailModel.Money}', "; |
| | | sqlDetailStr += $"LotText = '{detailModel.LotText}',SupplierLot = '{detailModel.SupplierLot}', "; |
| | | sqlDetailStr += $"IsBale = '{detailModel.IsBale}',IsBelt = '{detailModel.IsBelt}', "; |
| | | sqlDetailStr += $"UDF1 = '{detailModel.UDF1}',UDF2 = '{detailModel.UDF2}',UDF3 = '{detailModel.UDF3}',UDF4 = '{detailModel.UDF4}',UDF5 = '{detailModel.UDF5}',"; |
| | | sqlDetailStr += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlDetailStr += $"WHERE Id = {detailModel.Id};"; |
| | | |
| | | dbDetail.Qty = (decimal)detailModel.Qty; |
| | | dbDetail.LotNo = detailModel.LotNo; |
| | | dbDetail.Money = detailModel.Money; |
| | | dbDetail.LotText = detailModel.LotText; |
| | | dbDetail.SupplierLot = detailModel.SupplierLot; |
| | | dbDetail.IsBale = detailModel.IsBale; |
| | | dbDetail.UDF1 = detailModel.UDF1; |
| | | dbDetail.UDF2 = detailModel.UDF2; |
| | | dbDetail.UDF3 = detailModel.UDF3; |
| | | dbDetail.UDF4 = detailModel.UDF4; |
| | | dbDetail.UDF5 = detailModel.UDF5; |
| | | dbDetail.UpdateTime = dateTime; |
| | | dbDetail.UpdateUser = model.CreateUser; |
| | | |
| | | editDetails.Add(dbDetail); |
| | | } |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | Db.Updateable(dbDetailModels).ExecuteCommand(); |
| | | int rowCount = Db.Updateable(asnInfo).ExecuteCommand(); |
| | | var rowDetailCount = 1; |
| | | if (sqlDetailStr.Length > 0) |
| | | if (addDetails.Count > 0) |
| | | { |
| | | rowDetailCount = Db.Ado.ExecuteCommand(sqlDetailStr); |
| | | rowDetailCount = Db.Insertable(addDetails).ExecuteCommand(); |
| | | } |
| | | if (editDetails.Count > 0) |
| | | { |
| | | rowDetailCount += Db.Updateable(editDetails).ExecuteCommand(); |
| | | } |
| | | |
| | | Db.Ado.CommitTran(); |
| | | if (rowCount > 0 && rowDetailCount > 0) |
| | | { |
| | |
| | | { |
| | | try |
| | | { |
| | | var sqlString = $"SELECT * FROM BllArrivalNotice WHERE ASNNo = '{model.ASNNo}' AND IsDel = 0 AND Status = '0';"; |
| | | var asnModel = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | |
| | | var asnModel = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Status == "0"); |
| | | if (asnModel == null) |
| | | { |
| | | return "-1:入库单状态已变更,不可删除!"; |
| | |
| | | } |
| | | |
| | | // 删除总单 |
| | | sqlString = $"UPDATE BllArrivalNotice SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | var editDateTime = DateTime.Now; |
| | | asnModel.IsDel = "1"; |
| | | asnModel.UpdateTime = editDateTime; |
| | | asnModel.UpdateUser = model.CreateUser; |
| | | |
| | | // 删除明细单 |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | var asnDetails = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == model.ASNNo && m.IsDel =="0").ToList(); |
| | | foreach (BllArrivalNoticeDetail asnDetail in asnDetails) |
| | | { |
| | | asnDetail.IsDel = "1"; |
| | | asnDetail.UpdateTime = editDateTime; |
| | | asnDetail.UpdateUser = model.CreateUser; |
| | | } |
| | | |
| | | #region liudl Edit JC26物料不贴吗无需删除 |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | int notdel = 0; |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | //获取单据生成对应标签 |
| | | var list = Db.Queryable<BllBoxInfo>().Where(a => a.IsDel == "0" && a.Status == "0" && a.BindNo == null); |
| | | //int notdel = 0; |
| | | //if (model.Type == "1" || model.Type == "4") |
| | | //{ |
| | | // //获取单据生成对应标签 |
| | | // var list = Db.Queryable<BllBoxInfo>().Where(a => a.IsDel == "0" && a.Status == "0" && a.BindNo == null); |
| | | |
| | | //验证对应箱支信息是否存在 |
| | | if (list == null) |
| | | { |
| | | return "-1:已有箱码已绑定托盘或已入库,不可删除!"; |
| | | } |
| | | // //验证对应箱支信息是否存在 |
| | | // if (list == null) |
| | | // { |
| | | // return "-1:已有箱码已绑定托盘或已入库,不可删除!"; |
| | | // } |
| | | |
| | | // 删除对应箱支信息 |
| | | sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | notdel = 1; |
| | | } |
| | | // // 删除对应箱支信息 |
| | | // sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | // sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | // sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | // notdel = 1; |
| | | //} |
| | | #endregion |
| | | |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | if (rowCount < 2 + notdel) |
| | | { |
| | | Db.RollbackTran(); |
| | | return "-1:删除失败!"; |
| | | } |
| | | //int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | int rowCount = Db.Updateable(asnModel).ExecuteCommand(); |
| | | rowCount += Db.Updateable(asnDetails).ExecuteCommand(); |
| | | |
| | | Db.Ado.CommitTran(); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "删除", $"删除了单据号为{model.ASNNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | | return ""; |
| | |
| | | string sqlString = string.Empty; |
| | | try |
| | | { |
| | | sqlString = $"SELECT * FROM BllArrivalNotice WHERE ASNNo = '{model.ASNNo}' AND IsDel = 0 AND Status = '0';"; |
| | | var asnModel = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | var asnModel = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Status == "0"); |
| | | |
| | | if (asnModel == null) |
| | | { |
| | |
| | | |
| | | } |
| | | |
| | | sqlString = $"SELECT * FROM BllArrivalNoticeDetail WHERE ASNNo = '{model.ASNNo}' and Id <> {model.Id};"; |
| | | var detailModel = Db.Ado.SqlQuery<ArrivalNoticeDetailVm>(sqlString); |
| | | var asnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Id == model.Id); |
| | | if (asnDetail == null) |
| | | { |
| | | return "-1:明细状态已变更,不可删除!"; |
| | | } |
| | | |
| | | var detailModel = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Id != model.Id).ToList(); |
| | | var editDateTime = DateTime.Now; |
| | | if (detailModel.Count <= 0) |
| | | { |
| | | sqlString = $"UPDATE BllArrivalNotice SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | asnModel.IsDel = "1"; |
| | | asnModel.UpdateTime = editDateTime; |
| | | asnModel.UpdateUser = model.CreateUser; |
| | | } |
| | | else |
| | | { |
| | | sqlString = $"UPDATE BllArrivalNotice SET "; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | asnModel.UpdateTime = editDateTime; |
| | | asnModel.UpdateUser = model.CreateUser; |
| | | } |
| | | |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE Id = '{model.Id}';"; |
| | | asnDetail.IsDel = "0"; |
| | | asnDetail.UpdateTime = editDateTime; |
| | | asnDetail.UpdateUser = model.CreateUser; |
| | | |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | int rowCount = Db.Updateable(asnModel).ExecuteCommand(); |
| | | rowCount += Db.Updateable(asnDetail).ExecuteCommand(); |
| | | |
| | | if (rowCount < 2) |
| | | { |
| | |
| | | return "-1:删除失败!"; |
| | | } |
| | | Db.Ado.CommitTran(); |
| | | |
| | | var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == model.Id); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "删除", $"删除了单据号为{model.ASNNo}、物料为{detail.SkuNo}、批次号为{detail.LotNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "删除", |
| | | $"删除了单据号为{model.ASNNo}、物料为{detail.SkuNo}、批次号为{detail.LotNo}的单据信息", |
| | | Convert.ToInt32(model.CreateUser)); |
| | | |
| | | return ""; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | //关闭入库单 |
| | | public string CloseArrivalNotice(int id, int userId) |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到入库单据信息"); |
| | | } |
| | | //if (notice.Status != "2") |
| | | //{ |
| | | // throw new Exception("参数异常,请检查状态是否为执行完成"); |
| | | //} |
| | | var palletBind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.Status != "2" && m.Status != "3").ToList(); |
| | | |
| | | var palletBind = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo |
| | | && m.Status != "2" && m.Status != "3").ToList(); |
| | | |
| | | if (palletBind != null && palletBind.Count > 0) |
| | | { |
| | | throw new Exception("存在未入库完成托盘信息,不允许关单"); |
| | | } |
| | | var comTime = DateTime.Now; |
| | | var sqlString = ""; |
| | | |
| | | // 总单关单 |
| | | sqlString = $"UPDATE BllArrivalNotice SET Status = '3',"; |
| | | sqlString += $"CompleteTime = GETDATE(),UpdateTime = GETDATE(),UpdateUser = '{userId}' "; |
| | | sqlString += $"WHERE Id = '{id}';"; |
| | | |
| | | var asnModel = Db.Queryable<BllArrivalNotice>().First(m => m.Id == id); |
| | | if (asnModel != null) |
| | | { |
| | | asnModel.Status = "3"; |
| | | asnModel.CompleteTime = comTime; |
| | | asnModel.UpdateTime = comTime; |
| | | asnModel.UpdateUser = userId; |
| | | } |
| | | // 将未完成的明细改为已完成 |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET Status = '2',"; |
| | | sqlString += $"CompleteTime = GETDATE(),UpdateTime = GETDATE(),UpdateUser = '{userId}' "; |
| | | sqlString += $"WHERE Id = '{id}' and Status <> '2';"; |
| | | var asnDetails = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.Id == id && m.Status == "2").ToList(); |
| | | foreach (BllArrivalNoticeDetail asnDetail in asnDetails) |
| | | { |
| | | asnDetail.Status = "2"; |
| | | asnDetail.CompleteTime = comTime; |
| | | asnDetail.UpdateTime = comTime; |
| | | asnDetail.UpdateUser = userId; |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | int rowCount = Db.Updateable(asnModel).ExecuteCommand(); |
| | | rowCount += Db.Updateable(asnDetails).ExecuteCommand(); |
| | | |
| | | if (rowCount <= 0) |
| | | { |
| | |
| | | } |
| | | // 入库总表信息 |
| | | string asnNo = new Common().GetMaxNo("ASN"); |
| | | var asnModel = new BllArrivalNotice() |
| | | var asnModel1 = new BllArrivalNotice() |
| | | { |
| | | ASNNo = asnNo, |
| | | Status = "0",//执行状态,0:等待执行 |
| | |
| | | CreateUser = 0 |
| | | }; |
| | | // 插入入库总表信息 |
| | | Db.Insertable(asnModel).ExecuteCommand(); |
| | | Db.Insertable(asnModel1).ExecuteCommand(); |
| | | //入库单明细 |
| | | var arrDetailModel = new BllArrivalNoticeDetail() |
| | | { |
| | |
| | | } |
| | | |
| | | // 验证是否重复 支/袋码 |
| | | sqlString += $@"select count(id) from BllBoxInfo where BoxNo3 = '{model.BoxNo3}' and IsDel = 0 "; |
| | | int rowCount = Db.Ado.GetInt(sqlString); |
| | | if (rowCount > 0) |
| | | //sqlString += $@"select count(id) from BllBoxInfo where BoxNo3 = '{model.BoxNo3}' and IsDel = 0 "; |
| | | //int rowCount = Db.Ado.GetInt(sqlString); |
| | | var box1 = Db.Queryable<BllBoxInfo>().First(m => m.BoxNo3 == model.BoxNo3 && m.IsDel == "0"); |
| | | if (box1 != null) |
| | | { |
| | | strMessage = "-1:重复数据!"; |
| | | return strMessage; |
| | | } |
| | | // 获取物料信息 |
| | | sqlString = "select tb1.SkuNo,tb1.SkuName,tb1.Warranty, "; |
| | | sqlString += "case tb2.level when 5 then tb2.L4Num when 4 then tb2.L3Num when 3 then tb2.L2Num else 0 end as FullQty "; |
| | | sqlString += "from SysMaterials as tb1 left join SysPackag as tb2 on tb1.PackagNo = tb2.PackagNo "; |
| | | sqlString += $"where SkuNo = '{model.SkuNo}' and tb1.IsDel = '0';"; |
| | | var materialModel = Db.Ado.SqlQuery<BoxInfoVm>(sqlString); |
| | | //sqlString = "select tb1.SkuNo,tb1.SkuName,tb1.Warranty, "; |
| | | //sqlString += "case tb2.level when 5 then tb2.L4Num when 4 then tb2.L3Num when 3 then tb2.L2Num else 0 end as FullQty "; |
| | | //sqlString += "from SysMaterials as tb1 left join SysPackag as tb2 on tb1.PackagNo = tb2.PackagNo "; |
| | | //sqlString += $"where SkuNo = '{model.SkuNo}' and tb1.IsDel = '0';"; |
| | | //var materialModel = Db.Ado.SqlQuery<BoxInfoVm>(sqlString); |
| | | |
| | | var materialModel = Db.Queryable<SysMaterials>() |
| | | .LeftJoin<SysPackag>((tb1, tb2) => tb1.PackagNo == tb2.PackagNo) |
| | | .Where(tb1 => tb1.SkuNo == model.SkuNo && tb1.IsDel == "0") |
| | | .Select((tb1, tb2) => new BoxInfoVm |
| | | { |
| | | SkuNo = tb1.SkuNo, |
| | | SkuName = tb1.SkuName, |
| | | Warranty = tb1.Warranty, |
| | | FullQty = SqlFunc.IF(tb2.Level == 5).Return(tb2.L4Num) |
| | | .ElseIF(tb2.Level == 4).Return(tb2.L3Num) |
| | | .ElseIF(tb2.Level == 3).Return(tb2.L2Num).End(0) |
| | | }).ToList(); |
| | | |
| | | if (materialModel.Count <= 0) |
| | | { |
| | | strMessage = "-1:该物料信息不存在!"; |
| | |
| | | } |
| | | |
| | | #region 包装信息 |
| | | string str = $"select SUM(Qty) Qty from BllBoxInfo where IsDel = '0' and BoxNo = '{model.BoxNo}'"; |
| | | //获取箱码信息 |
| | | var box = Db.Ado.SqlQuerySingle<BoxInfoVm>(str); |
| | | //string str = $"select SUM(Qty) Qty from BllBoxInfo where IsDel = '0' and BoxNo = '{model.BoxNo}'"; |
| | | ////获取箱码信息 |
| | | //var box = Db.Ado.SqlQuerySingle<BoxInfoVm>(str); |
| | | |
| | | var boxs = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).Select(m => new BoxInfoVm |
| | | { |
| | | Qty = SqlFunc.AggregateSum(m.Qty) |
| | | }); |
| | | var box = boxs.First(); |
| | | |
| | | if (box.Qty == null) |
| | | { |
| | | box.Qty = 0; |
| | |
| | | #endregion |
| | | |
| | | // 插入信息 |
| | | sqlString = "Insert into BllBoxInfo (BoxNo,BoxNo2,BoxNo3,SkuNo,SkuName,LotNo,LotText,"; |
| | | sqlString += "Qty,FullQty,ProductionTime,ExpirationTime,InspectMark,InspectStatus,BitBoxMark,Origin,Status,CreateUser) values ( "; |
| | | sqlString += $"'{model.BoxNo}','{model.BoxNo2}','{model.BoxNo3}','{model.SkuNo}', "; |
| | | sqlString += $"'{materialModel[0].SkuName}','{model.LotNo}','{model.LotText}','{model.Qty}','{materialModel[0].FullQty}',"; |
| | | sqlString += $"'{model.ProductionTime}','{model.ExpirationTime}','{model.InspectMark}','{sku.IsInspect}','{model.BitBoxMark}','{model.Origin}','0','{model.CreateUser}');"; |
| | | //sqlString = "Insert into BllBoxInfo (BoxNo,BoxNo2,BoxNo3,SkuNo,SkuName,LotNo,LotText,"; |
| | | //sqlString += "Qty,FullQty,ProductionTime,ExpirationTime,InspectMark,InspectStatus,BitBoxMark,Origin,Status,CreateUser) values ( "; |
| | | //sqlString += $"'{model.BoxNo}','{model.BoxNo2}','{model.BoxNo3}','{model.SkuNo}', "; |
| | | //sqlString += $"'{materialModel[0].SkuName}','{model.LotNo}','{model.LotText}','{model.Qty}','{materialModel[0].FullQty}',"; |
| | | //sqlString += $"'{model.ProductionTime}','{model.ExpirationTime}','{model.InspectMark}','{sku.IsInspect}','{model.BitBoxMark}" + |
| | | // $"','{model.Origin}','0','{model.CreateUser}');"; |
| | | //rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | |
| | | rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | |
| | | BllBoxInfo newboxModel = new BllBoxInfo() |
| | | { |
| | | BoxNo=model.BoxNo, |
| | | BoxNo2 = model.BoxNo2, |
| | | BoxNo3 = model.BoxNo3, |
| | | SkuNo = model.SkuNo, |
| | | SkuName = materialModel[0].SkuName, |
| | | LotNo = model.LotNo, |
| | | LotText = model.LotText, |
| | | Qty = (decimal)model.Qty, |
| | | FullQty = materialModel[0].FullQty, |
| | | ProductionTime = DateTime.Parse(model.ProductionTime), |
| | | ExpirationTime = model.ExpirationTime, |
| | | InspectMark = model.InspectMark, |
| | | InspectStatus = sku.IsInspect, |
| | | BitBoxMark = model.BitBoxMark, |
| | | Origin = model.Origin, |
| | | Status = "0", |
| | | CreateUser = (int)model.CreateUser |
| | | }; |
| | | |
| | | var rowCount = Db.Insertable(newboxModel).ExecuteCommand(); |
| | | if (rowCount <= 0) |
| | | { |
| | | strMessage = "-1:添加失败!"; |
| | |
| | | //开启事务 |
| | | Db.Ado.BeginTran(); |
| | | // 删除明细单 |
| | | sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE Id = '{model.Id}' and Status = '0';"; |
| | | //sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | //sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | //sqlString += $"WHERE Id = '{model.Id}' and Status = '0';"; |
| | | |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | if (rowCount <= 0) |
| | | //int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | |
| | | var boxModel = Db.Queryable<BllBoxInfo>().First(m => m.Id == model.Id && m.Status == "0"); |
| | | |
| | | if (boxInfo.Status != "0") |
| | | { |
| | | return "-1:状态已变更无法删除!"; |
| | | } |
| | | |
| | | boxInfo.IsDel = "1"; |
| | | boxInfo.UpdateTime = DateTime.Now; |
| | | boxInfo.UpdateUser = model.CreateUser; |
| | | |
| | | var boxInfoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxInfo.BoxNo && m.Id != model.Id).ToList(); |
| | | if (boxInfoList.Count != 0) |
| | | { |
| | |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | var sql = $"update BllBoxInfo SET BitBoxMark = '1' Where id = {item.Id}"; |
| | | int rowCount2 = Db.Ado.ExecuteCommand(sql); |
| | | if (rowCount2 <= 0) |
| | | { |
| | | throw new Exception("-1:状态已变更无法删除!"); |
| | | } |
| | | item.BitBoxMark = "1"; |
| | | } |
| | | } |
| | | Db.Updateable(boxInfo).ExecuteCommand(); |
| | | Db.Updateable(boxInfoList).ExecuteCommand(); |
| | | |
| | | Db.Ado.CommitTran(); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "箱支录入", boxInfo.BoxNo3, "删除", $"删除了箱码:{boxInfo.BoxNo}、追溯码:{boxInfo.BoxNo3}的箱支物料信息", Convert.ToInt32(model.CreateUser)); |
| | |
| | | /// Nullable:False |
| | | /// </summary> |
| | | public decimal Qty {get;set;} |
| | | |
| | | |
| | | /// <summary> |
| | | /// Desc:已组数量 |
| | | /// Default:0 |
| | | /// Nullable:True |
| | | /// </summary> |
| | | /// </summary> |
| | | [SugarColumn(DefaultValue = "0")] |
| | | public decimal? FactQty {get;set;} |
| | | |
| | | /// <summary> |
| | | /// Desc:入库数量 |
| | | /// Default:0 |
| | | /// Nullable:True |
| | | /// </summary> |
| | | /// </summary> |
| | | [SugarColumn(DefaultValue = "0")] |
| | | public decimal? CompleteQty {get;set;} |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(model.ASNNo)) |
| | | { |
| | | throw new Exception("单据号不可为null!"); |
| | | } |
| | | |
| | | model.CreateUser = int.Parse(UserId); |
| | | string strMesage = _arrivalNoticeSvc.EditArrivalNotice(model); |