| | |
| | | </div> |
| | | <div class="elight-login-box animated fadeInRight"> |
| | | <div class="elight-login-header">智慧仓储管理系统</div> |
| | | <div class="elight-login-header">版本v1.0</div> |
| | | <div class="elight-login-body"> |
| | | <form class="layui-form"> |
| | | |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="login-icon"><i class="layui-icon"></i></label> |
| | | <input type="text" name="username" id="username" lay-verify="required" autocomplete="off" |
| | |
| | | <div class="layui-input-inline" style="width: 220px;"> |
| | | <select name="LoadingArea" id="LoadingArea" lay-search> |
| | | <option value=""></option> |
| | | <option value="1">1</option> |
| | | <option value="2">2</option> |
| | | <option value="3">3</option> |
| | | <option value="3">4</option> |
| | | <option value="2">5</option> |
| | | <option value="1">6</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | |
| | | </a>`; |
| | | } |
| | | } |
| | | if( d.Status == '4'){ |
| | | if( d.Status == '4' ||d.Status == '3'){ |
| | | html += `<a class="layui-btn layui-btn-normal layui-btn-xs guanClass" lay-event="finish"> |
| | | <i class="layui-icon layui-icon-ok"></i>关单 |
| | | </a>`; |
| | |
| | | } |
| | | if($('#UnstackWay').val()=='1'){ |
| | | $('.DivPickingArea2').show() |
| | | $('.LoadingArea').hide() |
| | | |
| | | } |
| | | |
| | | outFunction(data.SONo) |
| | |
| | | } |
| | | if(isNeedUnpack == 1){ |
| | | console.log($("#PickingArea").val()) |
| | | if($('#UnstackWay').val()=='1'){ |
| | | if($("#PickingArea").val() == '') |
| | | { |
| | | layer.msg("请选择出库口", { |
| | |
| | | }); |
| | | isChongFu= true; |
| | | return; |
| | | }} |
| | | }}} |
| | | var param = { |
| | | soNo: soNo, |
| | | unstackingMode:$('#UnstackWay').val(), |
| | |
| | | |
| | | <script type="text/html" id="buttonTpl"> |
| | | {{# if(d.Status=='0'){ }} |
| | | <button class="layui-btn layui-btn-radius layui-btn-danger layui-btn-xs">待分配</button> |
| | | <button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">待分配</button> |
| | | {{# } else if(d.Status == '1') { }} |
| | | <button class="layui-btn layui-btn-radius layui-btn-xs">部分分配</button> |
| | | <button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">部分分配</button> |
| | | {{# } else if(d.Status == '2') { }} |
| | | <button class="layui-btn layui-btn-radius layui-btn-xs">已分配</button> |
| | | <button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">已分配</button> |
| | | {{# } else if(d.Status == '3') { }} |
| | | <button class="layui-btn layui-btn-radius layui-btn-xs">盘点锁定</button> |
| | | <button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">盘点锁定</button> |
| | | {{# } else if(d.Status == '4') { }} |
| | | <button class="layui-btn layui-btn-radius layui-btn-xs">移库锁定</button> |
| | | <button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">移库锁定</button> |
| | | {{# } else if(d.Status == '5') { }} |
| | | <button class="layui-btn layui-btn-radius layui-btn-xs layui-btn-danger">异常锁定</button> |
| | | <button class="layui-btn layui-btn-radius layui-btn-xs layui-btn-normal">异常锁定</button> |
| | | {{# } }} |
| | | </script> |
| | | <script type="text/html" id="buttonTp2"> |
| | |
| | | ]]; |
| | | var DetailColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | | function refreshTable2(SkuNo, SkuName, OwnerNo, OwnerName, LotNo, LocatNo, PalletNo, Status, InspectStatus, HouseNo, AreaNo,CategoryNo, Type) { |
| | | function refreshTable2(SkuNo, SkuName,OwnerNo, OwnerName, LotNo, LocatNo, PalletNo, Status, InspectStatus, HouseNo, AreaNo,CategoryNo, Type) { |
| | | //#region 自定义表头 |
| | | var colsJson2 |
| | | var param1 = { |
| | |
| | | </cite> |
| | | </a> |
| | | <dl class="layui-nav-child"> |
| | | <!-- <dd><a lay-href="set/user/info.html">基本资料</a></dd>--> |
| | | <dd><a lay-href="set/user/info.html">基本资料</a></dd> |
| | | <dd><a lay-href="set/user/password.html" id="changePassword">修改密码</a></dd> |
| | | <hr> |
| | | <dd><a href="Login.html">退出</a></dd> |
| | |
| | | <iframe src="home/console.html" frameborder="0" class="layadmin-iframe"></iframe> |
| | | </div> |
| | | </div> |
| | | <div class="layui-footer" style="height: 20px; z-index: 999;"> |
| | | <!-- 底部固定区域 --> |
| | | <p>版本v1.0</p> |
| | | </div> |
| | | <!-- |
| | | <div class="layui-footer" style="height: 20px; z-index: 999;"> |
| | | <!-- 底部固定区域 --> |
| | | <p>版本v1.0</p> |
| | | </div> |
| | | --> |
| | | <!-- 辅助元素,一般用于移动设备下遮罩 --> |
| | | <div class="layadmin-body-shade" layadmin-event="shade"></div> |
| | | </div> |
New file |
| | |
| | | |
| | | |
| | | <!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"> |
| | | <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-row layui-col-space15"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">设置我的资料</div> |
| | | <div class="layui-card-body" pad15> |
| | | |
| | | <div class="layui-form" lay-filter=""> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">我的角色</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="role" lay-verify=""> |
| | | <option value="1" selected>超级管理员</option> |
| | | <option value="2" disabled>普通管理员</option> |
| | | <option value="3" disabled>审核员</option> |
| | | <option value="4" disabled>编辑人员</option> |
| | | </select> |
| | | </div> |
| | | <div class="layui-form-mid layui-word-aux">当前角色不可更改为其它角色</div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">用户名</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="username" value="xianxin" readonly class="layui-input"> |
| | | </div> |
| | | <div class="layui-form-mid layui-word-aux">不可修改。一般用于后台登入名</div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">昵称</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="nickname" value="贤心" lay-verify="nickname" autocomplete="off" placeholder="请输入昵称" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">性别</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="sex" value="男" title="男"> |
| | | <input type="radio" name="sex" value="女" title="女" checked> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">头像</label> |
| | | <div class="layui-input-inline"> |
| | | <input name="avatar" lay-verify="required" id="LAY_avatarSrc" placeholder="图片地址" value="http://cdn.layui.com/avatar/168.jpg" class="layui-input"> |
| | | </div> |
| | | <div class="layui-input-inline layui-btn-container" style="width: auto;"> |
| | | <button type="button" class="layui-btn layui-btn-primary" id="LAY_avatarUpload"> |
| | | <i class="layui-icon"></i>上传图片 |
| | | </button> |
| | | <button class="layui-btn layui-btn-primary" layadmin-event="avartatPreview">查看图片</button > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">手机</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="cellphone" value="" lay-verify="phone" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">邮箱</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="email" value="" lay-verify="email" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item layui-form-text"> |
| | | <label class="layui-form-label">备注</label> |
| | | <div class="layui-input-block"> |
| | | <textarea name="remarks" placeholder="请输入内容" class="layui-textarea"></textarea> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <button class="layui-btn" lay-submit lay-filter="setmyinfo">确认修改</button> |
| | | <button type="reset" class="layui-btn layui-btn-primary">重新填写</button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script src="../../../layuiadmin/layui/layui.js"></script> |
| | | <script> |
| | | layui.config({ |
| | | base: '../../../layuiadmin/' //静态资源所在路径 |
| | | }).extend({ |
| | | index: 'lib/index' //主入口模块 |
| | | }).use(['index', 'set']); |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | initLanguage() |
| | | setLanguage() |
| | | |
| | | function clear() { |
| | | $("#Quyu").empty() |
| | | $("#Quyu").append('<option value =>' + '</option>'); |
| | | $("#Ruku").empty() |
| | | $("#Ruku").append('<option value =>' + '</option>'); |
| | | form.render('select'); |
| | | $('#STOCKCODE').val(""); |
| | | $('#LocatNo').val(""); |
| | | } |
| | | //当前分页 |
| | | var curPageIndex = 1; |
| | | |
| | |
| | | icon: 1, |
| | | time: 1000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | clear() |
| | | |
| | | }); |
| | | } else { //不成功 |
| | |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | //回调 |
| | | clear() |
| | | }); |
| | | } |
| | | }); |
| | |
| | | </div> |
| | | |
| | | <div id="" class="layout-bill-info"> |
| | | <form class="layui-form" action="" style="height: auto;"> |
| | | <form class="layui-form" action="" style="height: auto;" > |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label">外箱条码</label> |
| | | <div class="layui-input-block"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <table class="layout-tbl-input" border="" cellspacing="" cellpadding=""> |
| | | <!-- <table class="layout-tbl-input" border="" cellspacing="" cellpadding=""> |
| | | <tr> |
| | | <td> |
| | | <div id="" class="layui-form-item layout-boxinfo"> |
| | | <td> --> |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label" lang>进厂编号:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="LotNo" type="text" disabled placeholder="" autocomplete="off" |
| | | <input id="LotNo" type="text" autocomplete="off" class="layui-input" style="border: 0px;" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | <td> |
| | | <div id="" class="layui-form-item layout-boxinfo"> |
| | | <label class="layui-form-label" lang>原厂批号:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="SupplierLot" type="text" disabled placeholder="" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | <!-- </td> |
| | | |
| | | |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <div id="" class="layui-form-item layout-boxinfo"> |
| | | <td> --> |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label" lang>原厂批号:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="SupplierLot" type="text" autocomplete="off" class="layui-input" style="border: 0px;" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <!-- </td> |
| | | </tr> |
| | | <tr> |
| | | <td> --> |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label" lang>箱内数量:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="Qty" type="text" disabled placeholder="" autocomplete="off" |
| | | <input id="Qty" type="text" autocomplete="off" class="layui-input" style="border: 0px;" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | <td> |
| | | <div id="" class="layui-form-item layout-boxinfo"> |
| | | <!-- </td> |
| | | </tr> |
| | | <tr> |
| | | <td> --> |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label" lang>质量状态:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="InspectStatus" type="text" disabled placeholder="" autocomplete="off" |
| | | <input id="InspectStatus" type="text" autocomplete="off" class="layui-input" style="border: 0px;" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | <!-- </td> |
| | | </tr> |
| | | </table> |
| | | </table> --> |
| | | |
| | | |
| | | <div id="" class="" style="width: 100%;height: 36px;margin-top: 15px;"> |
| | |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label" style="width: 25%">批次:</label> |
| | |
| | | </div> |
| | | |
| | | </td> |
| | | |
| | | </tr> |
| | | <tr> |
| | | <td colspan="3"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label" style="width: 30%;">物料名称:</label> |
| | | <div class="layui-input-block" style="width: 70%;margin-left:30%;"> |
| | | <input id="SkuName" type="text" lay-verify="" disabled placeholder="" |
| | | class="layui-input" style="font-size: 12px; padding-left: 0;"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label" style="width: 34%;">数量:</label> |
| | |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="3"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label" style="width: 17%;">物料名称:</label> |
| | | <div class="layui-input-block" style="width: 83%;margin-left:17%;"> |
| | | <input id="SkuName" type="text" lay-verify="" disabled placeholder="" |
| | | class="layui-input" style="font-size: 12px; padding-left: 0;"> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | |
| | | </tr> |
| | | </table> |
| | | </div> |
| | |
| | | }); |
| | | return; |
| | | } |
| | | if($('#pickQty1').val() != "" && $('#pickQty1').val()>parseInt($('#pickQty').val())){ |
| | | if($('#pickQty1').val() != "" && $('#pickQty1').val()>parseFloat($('#pickQty').val())){ |
| | | layer.msg("拣货数量不能大于待拣数量!", { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | |
| | | function reqPickScatter() { |
| | | canPickBox = false//回调 |
| | | if($('#pickQty1').val()!= "" && $('#pickQty1').val()!= undefined){ |
| | | var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |
| | | console.log("111111111111111111"+$('#pickQty1').val()); |
| | | |
| | | var reg = /^[1-9]\d*(\.\d{1,4})?$|^0\.\d{1,4}[1-9]\d*$/; |
| | | |
| | | if (!reg.test($("#pickQty1").val())) { |
| | | layer.msg("数量必须大于0(可保留4位小数)", { |
| | | icon: 2, |
| | |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); return; |
| | | } |
| | | let pickedQty = parseInt($('#pickedQty2').val()) //已拣数量 |
| | | let pickQty = parseInt($('#pickQty2').val()) //拣货数量 |
| | | let pickedQty = parseFloat($('#pickedQty2').val()) //已拣数量 |
| | | let pickQty = parseFloat($('#pickQty2').val()) //拣货数量 |
| | | if (pickQty <= 0) { |
| | | layer.msg("拣货数量需大于0", { |
| | | icon: 2, |
| | |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); return; |
| | | } |
| | | let pickedQty = parseInt($('#pickedQty2').val()) //已拣数量 |
| | | let pickQty = parseInt($('#pickQty2').val()) //拣货数量 |
| | | let pickedQty = parseFloat($('#pickedQty2').val()) //已拣数量 |
| | | let pickQty = parseFloat($('#pickQty2').val()) //拣货数量 |
| | | if (pickQty <= 0) { |
| | | layer.msg("拣货数量需大于0", { |
| | | icon: 2, |
| | |
| | | function reqPickScatter2() { |
| | | canPickBox = false//回调 |
| | | if($('#pickQty2').val()!= "" && $('#pickQty2').val()!= undefined){ |
| | | var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |
| | | var reg = /^[1-9]\d*(\.\d{1,4})?$|^0\.\d{1,4}[1-9]\d*$/; |
| | | if (!reg.test($("#pickQty2").val())) { |
| | | layer.msg("数量必须大于0(可保留4位小数)", { |
| | | icon: 2, |
| | |
| | | if($.isPlainObject(boxinfo.PickNum) || pn == 0){ |
| | | pn = boxinfo.Qty |
| | | } |
| | | let qty = parseInt($('#outScatterQty').val()) |
| | | let qty = parseFloat($('#outScatterQty').val()) |
| | | if(qty <= 0 || qty > pn){ |
| | | layer.msg("拣货数量需大于0,并且不能超过待拣数量", { |
| | | icon: 2, |
| | |
| | | <div class="layui-input-block" id="selectDiv"> |
| | | <select id="bar2" lay-filter="getbar" lay-verify="required" lay-search> |
| | | <option value=""></option> |
| | | <option value="001">001</option> |
| | | <option value="002">002</option> |
| | | <option value="001">443</option> |
| | | <option value="002">440</option> |
| | | </select> |
| | | <!-- <img src="/assets/down_arraw.png" > --> |
| | | </div> |
| | | </div> |
| | | <div id="layout-boxcode" class="layui-form-item layout-input"> |
| | | <label class="layui-form-label">地码:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="LocatNo" type="text" placeholder="请扫描地码" |
| | | autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div id="" class="btn-out"> |
| | |
| | | $("#STOCKCODE").val(""); |
| | | $("#bar option[value='']").attr("selected", "selected"); |
| | | $("#bar2 option[value='']").attr("selected", "selected"); |
| | | $("#LocatNo").val(""); |
| | | form.render('select'); |
| | | } |
| | | |
| | |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {}); |
| | | return |
| | | } |
| | | } ; |
| | | if($('#LocatNo').val() == ''){ |
| | | layer.msg("请输入地码", { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {}); |
| | | return |
| | | }; |
| | | if (isChongFu == true) { |
| | | isChongFu = false; |
| | | var param2 = { |
| | | OutMode:$('#bar2').val() |
| | | OutMode:$('#bar2').val(), |
| | | OutCode:$('#LocatNo').val() |
| | | }; |
| | | |
| | | // Int(param.Num) |
| | |
| | | sendData(IP + "/DownApi/IssuePlnCheckHouseWcs", param2, 'post', function(res) { |
| | | console.log("出库:"+JSON.stringify(res)) |
| | | if (res.code == 0) { //成功 |
| | | layer.msg(res.msg, { |
| | | layer.msg(res.Message, { |
| | | icon: 1, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {isChongFu = true;clear();}); |
| | | } else { //不成功 |
| | | layer.msg(res.msg, { |
| | | layer.msg(res.Message, { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function() {isChongFu = true;clear();}); |
| | |
| | | </div> |
| | | </div> |
| | | </td> |
| | | <!-- <td> |
| | | <td> |
| | | <div class="layui-form-item "> |
| | | <label class="layui-form-label lableWidth">箱内数量:</label> |
| | | <label class="layui-form-label lableWidth">托盘上数量:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="boxQty" class="layui-input" style="border: 0;" |
| | | <input id="palletNoqty" class="layui-input" style="border: 0;" |
| | | type="text" lay-verify="" disabled placeholder=""> |
| | | </div> |
| | | </div> |
| | | </td> --> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | |
| | | |
| | | $('#pickQty').val("");//待拣数量 |
| | | $('#pickedQty').val("");//已拣数量 |
| | | $('#palletNoqty').val("");//已拣数量 |
| | | |
| | | } |
| | | function clear2() { |
| | | //物料批次 |
| | |
| | | } |
| | | function clear4() { |
| | | $('#boxNo').val("");//箱码 |
| | | $('#boxQty').val("");//箱内数量 |
| | | $('#boxQty').val("");//托盘上数量 |
| | | } |
| | | //当托盘条码输入框文本改变时,检查一下托盘状态 |
| | | $("#palletNo").on('input', function () { |
| | |
| | | for (i = len - 1; i >= 2; i--) { |
| | | trs[i].remove(); |
| | | } |
| | | |
| | | console.log("LIST.LENGTH:"+list.length); |
| | | |
| | | if(list.length == 1){ |
| | | $("#pickQty1").val(list[0].Qty) |
| | | } |
| | | console.log(list != null); |
| | | console.log(list); |
| | | if (list != null && list.length > 0) { //成功 |
| | |
| | | } |
| | | synData(IP + "/PdaSo/GetDataComBoxInfo", param2, 'post', function (res) { |
| | | if (res.code == 0) { |
| | | tableData = deepCopy(res.data) |
| | | |
| | | refreshTable(tableData) |
| | | console.log("111111111111111:"+res.data.Qty); |
| | | //tableData = deepCopy(res.data) |
| | | console.log("111111111111111:"+res.data.Qty); |
| | | |
| | | $("#pickQty1").val(res.data.Qty) |
| | | |
| | | refreshTable(res.data) |
| | | } else { |
| | | layer.msg(res.msg, { |
| | | icon: 2, |
| | |
| | | }); |
| | | return; |
| | | } |
| | | if($('#pickQty1').val() != "" && $('#pickQty1').val()>parseInt($('#pickQty').val())){ |
| | | layer.msg("拣货数量不能大于待拣数量!", { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | //拣货数量可以超过待拣数量 |
| | | // if($('#pickQty1').val() != "" && $('#pickQty1').val()>parseInt($('#pickQty').val())){ |
| | | // layer.msg("拣货数量不能大于待拣数量!", { |
| | | // icon: 2, |
| | | // time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | // }); |
| | | // return; |
| | | // } |
| | | } |
| | | // let boxQty = parseInt($('#boxQty').val()) |
| | | // let qty = parseInt($('#qty').val()) |
| | |
| | | //确认拣货 |
| | | function reqPickScatter() { |
| | | if($('#pickQty1').val()!= "" && $('#pickQty1').val()!= undefined){ |
| | | var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |
| | | var reg = /^[1-9]\d*(\.\d{1,4})?$|^0\.\d{1,4}[1-9]\d*$/; |
| | | if (!reg.test($("#pickQty1").val())) { |
| | | layer.msg("数量必须大于0(可保留4位小数)", { |
| | | icon: 2, |
| | |
| | | console.log(param2); |
| | | synData(IP + "/PdaSo/GetAllotPlnInfo", param2, 'post', function (res) { |
| | | if (res.code == 0) { |
| | | console.log("22222222222222222:"); |
| | | tableData2 = deepCopy(res.data) |
| | | |
| | | refreshTable2(tableData2) |
| | |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); return; |
| | | } |
| | | let pickedQty = parseInt($('#pickedQty2').val()) //已拣数量 |
| | | let pickQty = parseInt($('#pickQty2').val()) //拣货数量 |
| | | let pickedQty = parseFloat($('#pickedQty2').val()) //已拣数量 |
| | | let pickQty = parseFloat($('#pickQty2').val()) //拣货数量 |
| | | if (pickQty <= 0) { |
| | | layer.msg("拣货数量需大于0", { |
| | | icon: 2, |
| | |
| | | //确认拣货 |
| | | function reqPickScatter2() { |
| | | if($('#pickQty2').val()!= "" && $('#pickQty2').val()!= undefined){ |
| | | var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |
| | | var reg = /^[1-9]\d*(\.\d{1,4})?$|^0\.\d{1,4}[1-9]\d*$/; |
| | | if (!reg.test($("#pickQty2").val())) { |
| | | layer.msg("数量必须大于0(可保留4位小数)", { |
| | | icon: 2, |
| | |
| | | //确认拣货 |
| | | function reqPickScatter() { |
| | | if($('#pickQty1').val()!= "" && $('#pickQty1').val()!= undefined){ |
| | | var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |
| | | var reg = /^[1-9]\d*(\.\d{1,4})?$|^0\.\d{1,4}[1-9]\d*$/; |
| | | if (!reg.test($("#pickQty1").val())) { |
| | | layer.msg("数量必须大于0(可保留4位小数)", { |
| | | icon: 2, |
| | |
| | | //确认拣货 |
| | | function reqPickScatter2() { |
| | | if($('#pickQty2').val()!= "" && $('#pickQty2').val()!= undefined){ |
| | | var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |
| | | var reg = /^[1-9]\d*(\.\d{1,4})?$|^0\.\d{1,4}[1-9]\d*$/; |
| | | if (!reg.test($("#pickQty2").val())) { |
| | | layer.msg("数量必须大于0(可保留4位小数)", { |
| | | icon: 2, |
| | |
| | | /// </summary> |
| | | public string Warranty { get; set; } |
| | | } |
| | | |
| | | |
| | | public class ReLogDataModel |
| | | { |
| | | /// <summary> |
| | | /// 菜单 |
| | | /// </summary> |
| | | public string LocatNo { get; set; } |
| | | /// <summary> |
| | | /// 托盘号 |
| | | /// </summary> |
| | | public string PalletNo { get; set; } |
| | | /// <summary> |
| | | /// 物料名称 |
| | | /// </summary> |
| | | public string SkuName { get; set; } |
| | | /// <summary> |
| | | /// 操作信息 |
| | | /// </summary> |
| | | public string Msg { get; set; } |
| | | /// <summary> |
| | | /// 批次 |
| | | /// </summary> |
| | | public string LotNo { get; set; } |
| | | /// <summary> |
| | | /// 质量状态 |
| | | /// </summary> |
| | | public string InspectStatus { get; set; } |
| | | /// <summary> |
| | | /// 库存数量 |
| | | /// </summary> |
| | | public string Qty { get; set; } |
| | | /// <summary> |
| | | /// 有效期 |
| | | /// </summary> |
| | | public string Warranty { get; set; } |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | |
| | | /// 拣货口 |
| | | /// </summary> |
| | | public string OutMode { get; set; } |
| | | /// <summary> |
| | | /// 拣货位 |
| | | /// </summary> |
| | | public string OutCode { get; set; } |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | <DataList version="1.0" encoding="utf-8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="终端接口XML Schema-3.0.xsd" SN="BZ010" Version="3.0" License="1001122"> |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="终端接口XML Schema-3.0.xsd" SN="BZ010" Version="3.0" License="1001122"> |
| | | <Events> |
| | | <Event Name="SalesWareHouseOut" MainAction="WareHouseOut"> |
| | | <ActionMaping> |
| | |
| | | <MetaData Name="Code" Type="String"/> |
| | | </DataMaping> |
| | | <DataField> |
| | | |
| | | <Data Code="86151950000031685740" CorpOrderID="8000363073" Actor="admin" ActDate="2025-01-10 17:09:14" DisCorpID="3" AssCorpID="" ToCorpID="16" FromPerson="admin"/> |
| | | <Data Code="86151950000031711367" CorpOrderID="8000363073" Actor="admin" ActDate="2025-01-10 17:09:19" DisCorpID="3" AssCorpID="" ToCorpID="16" FromPerson="admin"/> |
| | | </DataField> |
| | | </Event> |
| | | </Events> |
| | | </DataList> |
| | | </Document> |
| | |
| | | CustomerNo = model.Customer, |
| | | CustomerName = custname, |
| | | OrderCode = model.OrderCode, |
| | | Status = "0", |
| | | }; |
| | | |
| | | // 入库明细表信息 |
| | |
| | | LotNo = asnDetailModel.LotNo, |
| | | LotText = "", |
| | | Qty = (decimal)asnDetailModel.Qty, |
| | | PackagNo = asnDetailModel.PackagNo, |
| | | FactQty = 0, |
| | | CompleteQty = 0, |
| | | Price = 0, |
| | | Money = 0, |
| | | IsBale = "", |
| | | IsBelt = "", |
| | | PackagNo = skuModel.PackagNo, |
| | | SupplierLot = asnDetailModel.SupplierLot, |
| | | Status = "0", |
| | | CreateUser = 0 |
| | | |
| | | }; |
| | | |
| | | detailModels.Add(detailModel); |
| | |
| | | { |
| | | throw new Exception("复核失败,复核人员和关闭订单人员不能相同!"); |
| | | } |
| | | if (date.Id == notice.CreateUser) |
| | | { |
| | | throw new Exception("复核失败,复核人员和创建订单人员不能相同!"); |
| | | } |
| | | //单据类型是 成品入库或采购入库 判断入库物料是否合格 |
| | | if (notice.Type == "0" || notice.Type == "1") |
| | | { |
| | |
| | | |
| | | #region 通过接口发送至erp 或 mes |
| | | ////系统对接后放开 |
| | | //var jsonData = JsonConvert.SerializeObject(asnInfo); |
| | | //var mesList = new List<string>() { "0", "4" }; //0 成品入库 4余料退回入库 |
| | | //var erpList = new List<string>() { "1", "2", "3" }; //1 采购入库 2中间品入库 3 退货入库 |
| | | var jsonData = JsonConvert.SerializeObject(asnInfo); |
| | | var mesList = new List<string>() { "0", "4" }; //0 成品入库 4余料退回入库 |
| | | var erpList = new List<string>() { "1", "2", "3" }; //1 采购入库 2中间品入库 3 退货入库 |
| | | |
| | | //if (mesList.Contains(notice.Type)) // mes |
| | | //{ |
| | | // //获取令牌 |
| | | // //var token = new Token().GetMesToken(mesTokenUrl); //测试不使用TOKEN,正式运行时放开 |
| | | // var token = ""; |
| | | // Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | // { |
| | | // {"Authorization",token } |
| | | // }; |
| | | // var mesData = new FinishAsnModel() |
| | | // { |
| | | // no = asnInfo.OrderCode, |
| | | // qty = asnInfo.AsnDetails.Sum(m=>m.Qty) |
| | | // }; |
| | | // jsonData = JsonConvert.SerializeObject(mesData); |
| | | // //调用接口 |
| | | // var response = HttpHelper.DoPost(mesUrl, jsonData, "入库单完成上传", "MES", mesDic); |
| | | if (mesList.Contains(notice.Type)) // mes |
| | | { |
| | | //获取令牌 |
| | | //var token = new Token().GetMesToken(mesTokenUrl); //测试不使用TOKEN,正式运行时放开 |
| | | var token = ""; |
| | | Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | { |
| | | {"Authorization",token } |
| | | }; |
| | | var mesData = new FinishAsnModel() |
| | | { |
| | | no = asnInfo.OrderCode, |
| | | qty = asnInfo.AsnDetails.Sum(m => m.Qty) |
| | | }; |
| | | jsonData = JsonConvert.SerializeObject(mesData); |
| | | //调用接口 |
| | | var response = HttpHelper.DoPost(mesUrl, jsonData, "入库单完成上传", "MES", mesDic); |
| | | |
| | | // var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | // if (obj.status != "success") |
| | | // { |
| | | // throw new Exception("上传失败" + obj.message); |
| | | // } |
| | | //} |
| | | //else if (erpList.Contains(notice.Type)) //erp |
| | | //{ |
| | | // var response = HttpHelper.DoPost(erpUrl, jsonData, "入库单完成上传", "ERP"); |
| | | var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | if (obj.status != "success") |
| | | { |
| | | throw new Exception("上传失败" + obj.message); |
| | | } |
| | | } |
| | | else if (erpList.Contains(notice.Type)) //erp |
| | | { |
| | | var response = HttpHelper.DoPost(erpUrl, jsonData, "入库单完成上传", "ERP"); |
| | | |
| | | // var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据 |
| | | // if (obj.Success != 0) |
| | | // { |
| | | // throw new Exception("上传失败" + obj.Message); |
| | | // } |
| | | //} |
| | | var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据 |
| | | if (obj.Success != 0) |
| | | { |
| | | throw new Exception("上传失败" + obj.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | notice.Status = "4"; |
| | |
| | | } |
| | | if (bl3) |
| | | { |
| | | labelModel.ExpirationTime = stoTime; |
| | | labelModel.StoreTime = stoTime; |
| | | } |
| | | Db.Insertable(labelModel).ExecuteCommand(); |
| | |
| | | } |
| | | if (bl3) |
| | | { |
| | | labelModel.ExpirationTime = stoTime; |
| | | labelModel.StoreTime = stoTime; |
| | | } |
| | | Db.Insertable(labelModel).ExecuteCommand(); |
| | |
| | | item.UpdateUser = userId; |
| | | } |
| | | } |
| | | //回流入库时需要对已分配但未拣货完成托盘状态修改 |
| | | //var exportAllot = Db.Queryable<BllExportAllot>().ToList(w=>w.PalletNo == task.PalletNo && w.Qty > w.CompleteQty && w.TaskNo == taskNo); |
| | | //if (exportAllot.Count != 0) |
| | | //{ |
| | | // //????????? |
| | | //} |
| | | |
| | | locate.Status = "1"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | |
| | | |
| | | } |
| | | //正式运行程序放开 |
| | | //if (endLocate!= null && endLocate.AreaNo == "B12") |
| | | //{ |
| | | // //获取令牌 |
| | | // var token = new Token().GetMesToken(mesTokenUrl); |
| | | // Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | // { |
| | | // {"Authorization",token } |
| | | // }; |
| | | // var mesData = new RequertBeiliaoModel() |
| | | // { |
| | | // morder_no = stockDetail.First().SONo, |
| | | // pallet = stockDetail.First().PalletNo, |
| | | // layer_no = endLocate.LocatNo, |
| | | // items = data |
| | | // }; |
| | | // var jsonData = JsonConvert.SerializeObject(mesData); |
| | | // //调用接口 |
| | | // var response = HttpHelper.DoPost(mesUrl, jsonData, "备料完成运至缓存区反馈至MES", "MES", mesDic); |
| | | if (endLocate != null && endLocate.AreaNo == "B12") |
| | | { |
| | | //获取令牌 |
| | | var token = new Token().GetMesToken(mesTokenUrl); |
| | | Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | { |
| | | {"Authorization",token } |
| | | }; |
| | | var mesData = new RequertBeiliaoModel() |
| | | { |
| | | morder_no = stockDetail.First().SONo, |
| | | pallet = stockDetail.First().PalletNo, |
| | | layer_no = endLocate.LocatNo, |
| | | items = data |
| | | }; |
| | | var jsonData = JsonConvert.SerializeObject(mesData); |
| | | //调用接口 |
| | | var response = HttpHelper.DoPost(mesUrl, jsonData, "备料完成运至缓存区反馈至MES", "MES", mesDic); |
| | | |
| | | // var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | // if (obj.status != "0") |
| | | // { |
| | | // throw new Exception("备料同步MES失败:" + obj.message); |
| | | // } |
| | | var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | if (obj.status != "0") |
| | | { |
| | | throw new Exception("备料同步MES失败:" + obj.message); |
| | | } |
| | | |
| | | //} |
| | | } |
| | | if (userId != 0) |
| | | { |
| | | //添加操作日志记录 |
| | |
| | | |
| | | #region 测试版本 |
| | | |
| | | //读取json文件,添加数据 |
| | | var ss = AppDomain.CurrentDomain.BaseDirectory; |
| | | string filePath = Path.Combine(ss, "CreateBoxInfo.json"); |
| | | string json = File.ReadAllText(filePath); |
| | | var person = JsonConvert.DeserializeObject<List<BllBoxInfo>>(json); |
| | | ////读取json文件,添加数据 |
| | | //var ss = AppDomain.CurrentDomain.BaseDirectory; |
| | | //string filePath = Path.Combine(ss, "CreateBoxInfo.json"); |
| | | //string json = File.ReadAllText(filePath); |
| | | //var person = JsonConvert.DeserializeObject<List<BllBoxInfo>>(json); |
| | | |
| | | var comTime = DateTime.Now; |
| | | //添加箱码信息表中 //暂时这些写--添加数据,后续需要和赋码系统对接后 根据明确返回的数据格式更改 |
| | | foreach (var item in person) |
| | | { |
| | | if (item.BoxNo!= boxNo) |
| | | { |
| | | continue; |
| | | } |
| | | ////添加箱码信息表中 //暂时这些写--添加数据,后续需要和赋码系统对接后 根据明确返回的数据格式更改 |
| | | //foreach (var item in person) |
| | | //{ |
| | | // if (item.BoxNo!= boxNo) |
| | | // { |
| | | // continue; |
| | | // } |
| | | |
| | | var sku = Db.Queryable<SysMaterials>().First(m=>m.IsDel =="0" && m.SkuNo == item.SkuNo); |
| | | if (sku == null) |
| | | { |
| | | continue; |
| | | } |
| | | var boxInfo = new BllBoxInfo() |
| | | { |
| | | ASNNo = "", |
| | | //ASNDetailNo = 0, |
| | | OrderCode = "", |
| | | //BindNo = 0, |
| | | BoxNo = item.BoxNo, |
| | | BoxNo2 = item.BoxNo2, |
| | | BoxNo3 = item.BoxNo3, |
| | | PalletNo = "", |
| | | Qty = item.Qty, |
| | | FullQty = item.FullQty, |
| | | Status = "0", |
| | | SkuNo = item.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | LotNo = item.LotNo, |
| | | LotText = item.LotText, |
| | | SupplierLot = item.SupplierLot, |
| | | ProductionTime = item.ProductionTime, |
| | | ExpirationTime = item.ExpirationTime, |
| | | //CompleteTime = comTime, |
| | | InspectMark = item.InspectMark, |
| | | BitBoxMark = item.BitBoxMark, |
| | | InspectStatus = item.InspectStatus, |
| | | Origin = "赋码", |
| | | Standard = item.Standard, |
| | | PackageStandard = item.PackageStandard, |
| | | StoreTime = item.StoreTime, |
| | | QtyOrd = item.QtyOrd, |
| | | QtyCount = item.QtyCount, |
| | | CreateUser = 0, |
| | | CreateTime = comTime, |
| | | }; |
| | | list.Add(boxInfo); |
| | | } |
| | | Db.Insertable(list).ExecuteCommand(); |
| | | // var sku = Db.Queryable<SysMaterials>().First(m=>m.IsDel =="0" && m.SkuNo == item.SkuNo); |
| | | // if (sku == null) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // var boxInfo = new BllBoxInfo() |
| | | // { |
| | | // ASNNo = "", |
| | | // //ASNDetailNo = 0, |
| | | // OrderCode = "", |
| | | // //BindNo = 0, |
| | | // BoxNo = item.BoxNo, |
| | | // BoxNo2 = item.BoxNo2, |
| | | // BoxNo3 = item.BoxNo3, |
| | | // PalletNo = "", |
| | | // Qty = item.Qty, |
| | | // FullQty = item.FullQty, |
| | | // Status = "0", |
| | | // SkuNo = item.SkuNo, |
| | | // SkuName = sku.SkuName, |
| | | // LotNo = item.LotNo, |
| | | // LotText = item.LotText, |
| | | // SupplierLot = item.SupplierLot, |
| | | // ProductionTime = item.ProductionTime, |
| | | // ExpirationTime = item.ExpirationTime, |
| | | // //CompleteTime = comTime, |
| | | // InspectMark = item.InspectMark, |
| | | // BitBoxMark = item.BitBoxMark, |
| | | // InspectStatus = item.InspectStatus, |
| | | // Origin = "赋码", |
| | | // Standard = item.Standard, |
| | | // PackageStandard = item.PackageStandard, |
| | | // StoreTime = item.StoreTime, |
| | | // QtyOrd = item.QtyOrd, |
| | | // QtyCount = item.QtyCount, |
| | | // CreateUser = 0, |
| | | // CreateTime = comTime, |
| | | // }; |
| | | // list.Add(boxInfo); |
| | | //} |
| | | //Db.Insertable(list).ExecuteCommand(); |
| | | |
| | | #endregion |
| | | |
| | |
| | | { "Token", token }, //分配的令牌(变量) |
| | | { "Barcode", boxNo },//要查询的条码 |
| | | { "getParent", getParentVal },//是否查询父码 |
| | | { "getChildren", getChildrenVal } //是否查询子码 |
| | | { "getChildren", getChildrenVal } //是否查询子码 aaa |
| | | }; |
| | | |
| | | //程序正式发布后放开 |
| | |
| | | throw new Exception("获取信息不一致"); |
| | | } |
| | | |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == fuMaModel.Product.ProductCode); |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == fuMaModel.MaterialNum); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("未查询到箱码中的物料信息"); |
| | | throw new Exception("未查询到箱码中和赋码提供的物料信息一致的数据"); |
| | | } |
| | | var boxInfo = new BllBoxInfo() |
| | | { |
| | |
| | | |
| | | DateTime proTime; |
| | | DateTime expTime; |
| | | DateTime sortTime; |
| | | var bl1 = DateTime.TryParse(detail.Lot1, out proTime); |
| | | var bl2 = DateTime.TryParse(detail.Lot2, out expTime); |
| | | |
| | |
| | | { |
| | | throw new Exception("托盘码为空,请输入托盘码"); |
| | | } |
| | | var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); |
| | | if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1") |
| | | { |
| | | throw new Exception("该托盘还未出库"); |
| | | } |
| | | //var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); |
| | | //if (string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1") |
| | | //{ |
| | | // throw new Exception("该托盘还未出库"); |
| | | //} |
| | | if (type == "1")//平库出库获取单据 |
| | | { |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList2 = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | |
| | | if (allotList2.Count == 0) |
| | | { |
| | | throw new Exception("此托盘已拣货或无拣货任务"); |
| | | } |
| | | |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | //获取出库单据不为待拣货 执行完毕 订单关闭 等待执行的单据 |
| | |
| | | { |
| | | throw new Exception("未在托盘表中查询到托盘信息"); |
| | | } |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | //修改出库单明细拣货数量 |
| | |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | } |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.CompleteQty += pickQty; |
| | |
| | | { |
| | | throw new Exception("未在托盘表中查询到托盘信息"); |
| | | } |
| | | |
| | | |
| | | //判断托盘上物料是否拣货完毕 |
| | | if (isDel == 0) |
| | | { |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | } |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | |
| | | //修改出库单明细拣货数量 |
| | |
| | | throw new Exception("没有可用的空托盘"); |
| | | } |
| | | StartLocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "1" && (w.LocatNo == "B13010101" || w.LocatNo == "B13020101" || w.LocatNo == "B13030101")).LocatNo; |
| | | EndLocate = "B15010101"; |
| | | |
| | | //校验是否为第2层拣货托盘位 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.Row == 2 && w.LocatNo == model.OutCode); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception("请选择正确的拣货位"); |
| | | } |
| | | //校验目的货位是否可用 |
| | | var isuse = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && w.LocatNo == model.OutCode); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception("此拣货位状态不为空货位"); |
| | | } |
| | | EndLocate = model.OutCode; |
| | | } |
| | | else//东侧拣货位叫空托盘 |
| | | { |
| | |
| | | throw new Exception("没有可用的空托盘"); |
| | | } |
| | | StartLocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "1" && (w.LocatNo == "B13030101" || w.LocatNo == "B13040101" || w.LocatNo == "B13050101")).LocatNo; |
| | | EndLocate = "B15020101"; |
| | | |
| | | //校验是否为第2层拣货托盘位 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.Row == 4 && w.LocatNo == model.OutCode); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception("请选择正确的拣货位"); |
| | | } |
| | | //校验目的货位是否可用 |
| | | var isuse = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && w.LocatNo == model.OutCode); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception("此拣货位状态不为空货位"); |
| | | } |
| | | EndLocate = model.OutCode; |
| | | } |
| | | |
| | | //添加出库任务 |
| | |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | } |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.Qty += pickQty; |
| | |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | } |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.CompleteQty += pickQty; |
| | |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | } |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.Qty += decimal.Parse(PickQty); |
| | |
| | | { |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | } |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | |
| | | //修改出库单明细拣货数量 |
| | |
| | | LotNo = allot.LotNo, |
| | | LotText = allot.LotText, |
| | | SupplierLot = allot.SupplierLot, |
| | | |
| | | SkuNo = allot.SkuNo, |
| | | SkuName = allot.SkuName, |
| | | Standard = allot.Standard, |
| | |
| | | throw new Exception("该托盘与箱码没有绑定关系"); |
| | | } |
| | | var boxQty = boxInfos.First().Qty; |
| | | if (boxQty > needQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于剩余待拣数量"); |
| | | } |
| | | //if (boxQty > needQty) |
| | | //{ |
| | | // throw new Exception("拣货数量不能大于剩余待拣数量"); |
| | | //} |
| | | |
| | | foreach (var item in boxInfos) |
| | | { |
| | |
| | | { |
| | | throw new Exception("拣货数量不能大于箱内数量"); |
| | | } |
| | | if (decimal.Parse(pickQty1) > needQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于剩余待拣数量"); |
| | | } |
| | | //if (decimal.Parse(pickQty1) > needQty) |
| | | //{ |
| | | // throw new Exception("拣货数量不能大于剩余待拣数量"); |
| | | //} |
| | | |
| | | biaoShi = "2"; |
| | | } |
| | |
| | | throw new Exception("该托盘与箱码没有绑定关系"); |
| | | } |
| | | var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList(); |
| | | if (boxQty[0] > needQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于箱内剩余待拣数量"); |
| | | } |
| | | //if (boxQty[0] > needQty) |
| | | //{ |
| | | // throw new Exception("拣货数量不能大于箱内剩余待拣数量"); |
| | | //} |
| | | |
| | | foreach (var item in boxInfos) |
| | | { |
| | |
| | | SkuName = item.SkuName, |
| | | Standard = item.Standard, |
| | | ProductionTime = item.ProductionTime, |
| | | ExpirationTime = item.ExpirationTime, |
| | | SupplierLot = item.SupplierLot, |
| | | InspectMark = item.InspectMark, |
| | | BitBoxMark = "1", |
| | |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | |
| | | } |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.CompleteQty += pickQty; |
| | |
| | | } |
| | | //剩余拣货数量(待拣减去已拣) |
| | | var needQty = allot.Qty - allot.CompleteQty; |
| | | if (decimal.Parse(PickQty) > needQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于托内剩余待拣数量"); |
| | | } |
| | | //if (decimal.Parse(PickQty) > needQty) |
| | | //{ |
| | | // throw new Exception("拣货数量不能大于托内剩余待拣数量"); |
| | | //} |
| | | |
| | | //库存明细 |
| | | var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId); |
| | |
| | | |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | //修改储位状态 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo); |
| | | if (locate != null) |
| | | { |
| | | locate.Status = "0"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | //修改出库单明细拣货数量 |
| | |
| | | { |
| | | throw new Exception("批次号不可为空,请核查!"); |
| | | } |
| | | //验证批次号是否为当前库存中已有批次 |
| | | var lot = Db.Queryable<DataStock>().Where(w => w.LotNo == model.LotNo).ToList(); |
| | | if (lot.Count == 0) |
| | | { |
| | | throw new Exception("当前库存中无此批号,请核查!"); |
| | | } |
| | | int isTui = 0; |
| | | //验证入库单号是否为空 |
| | | if (!string.IsNullOrEmpty(model.ASNNo)) |
| | |
| | | throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实"); |
| | | } |
| | | } |
| | | if (d.Qty < d.CompleteQty) |
| | | { |
| | | |
| | | //更改库存明细锁定数量 |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(o => o.SODetailNo == d.Id && o.Status == "3" && o.IsDel == "0").ToList(); |
| | | foreach (var o in allotList) |
| | |
| | | Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | } |
| | | //添加操作日志记录 |
| | |
| | | { |
| | | throw new Exception($"未找到{soNo}出库单信息"); |
| | | } |
| | | //所有要出库的出库分配信息(未下发的信息和待拣货的信息) |
| | | var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && a.Status == "0").ToList(); |
| | | //所有要出库的出库分配信息(未下发的信息和待拣货的信息和部分拣货后回流入库的托盘) |
| | | var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "3")).ToList(); |
| | | if (list.Count == 0) //判断是否有需要下发的出库流水 |
| | | { |
| | | throw new Exception("当前出库单据无需要下发的托盘"); |
| | |
| | | if (outLine == "443")//西侧出库 |
| | | { |
| | | |
| | | positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; //西侧房间库位和对面房间 |
| | | positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; //西侧房间库位 |
| | | } |
| | | else if (outLine == "440") //东侧出库 |
| | | { |
| | | positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 2 && m.Status == "0" && m.Flag == "0").LocatNo; //东侧房间库位 |
| | | positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 3 && m.Status == "0" && m.Flag == "0").LocatNo; //东侧房间库位和对面房间 |
| | | } |
| | | } |
| | | else if (type1.Type == "2" || type1.Type == "3") //抽检出库 /取样出库 |
| | |
| | | else if (type1.Type == "4")//不合格品出库 |
| | | { |
| | | |
| | | positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => m.AreaNo == "B03" && m.Status == "0" && m.Flag == "0").LocatNo; |
| | | positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => (m.AreaNo == "B01"|| m.AreaNo == "B02"||m.AreaNo == "B04") && m.Status == "0" && m.Flag == "0").LocatNo; |
| | | } |
| | | else //其他单据类型都存放发货缓存区 |
| | | { |
| | |
| | | StartLocate = locateNo, // 起始位置 |
| | | StartRoadway = locate.RoadwayNo, |
| | | EndLocate = task.EndLocat, // 目标位置 |
| | | EndRoadway = task.EndRoadway, |
| | | TaskNo = task.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | TaskType = task.Type,// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }; //出库数据 |
| | |
| | | using Model.InterFaceModel; |
| | | using Model.ModelDto; |
| | | using Model.ModelDto.DataDto; |
| | | using Model.ModelDto.LogDto; |
| | | using Model.ModelDto.SysDto; |
| | | using Model.ModelVm.DataVm; |
| | | using Newtonsoft.Json; |
| | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | palletNo.IsCancel = 0; |
| | | palletNo.IsSend = 0; |
| | | palletNo.IsFinish = 0; |
| | | Db.Updateable(palletNo).ExecuteCommand(); |
| | | |
| | | Db.CommitTran(); |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | else |
| | | else |
| | | { |
| | | storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //获取起始库位信息 |
| | | if (storageStart == null) |
| | | { |
| | | throw new Exception("未找到相应的起始库位"); |
| | | isstock = 2; //库口到缓存位任务 |
| | | } |
| | | } |
| | | //var soAllot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);//获取分配信息 |
| | |
| | | |
| | | if (isstock == 1) |
| | | { |
| | | startLocat = Db.Queryable<SysStorageLocat>().First(w=> w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); |
| | | startLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); |
| | | //修改起始库位状态 |
| | | startLocat.Status = "0";//0:空储位 1:有物品 2:入库中 3:出库中 4:移入中 5:移出中 |
| | | Db.Updateable(startLocat).ExecuteCommand(); |
| | | |
| | | //调用MES备料反馈完成接口 |
| | | #region MES备料完成反馈 |
| | | |
| | | #region |
| | | var data = new List<RequertBeiliaoInfoModel>(); |
| | | |
| | | //更改库存明细 |
| | |
| | | case "1": |
| | | endlono = "Y003_0" + endLocat.LocatNo.ToString().Substring(5, 2); |
| | | break; |
| | | |
| | | |
| | | } |
| | | var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First(); |
| | | var mesData = new RequertBeiliaoModel() |
| | |
| | | } |
| | | #endregion |
| | | } |
| | | else //空托盘处理 |
| | | else if (isstock == 0) |
| | | { |
| | | //修改组托信息 |
| | | if (bindDetail.WareHouseNo == "W01") //1、空托盘垛到空托盘收集器; |
| | |
| | | } |
| | | } |
| | | Db.Updateable(bindDetail).ExecuteCommand(); |
| | | |
| | | } |
| | | else //库口移库到缓存位 |
| | | { |
| | | |
| | | foreach (var item in stockDetail) |
| | | { |
| | | item.LocatNo = endLocat.LocatNo;//储位更改 |
| | | item.WareHouseNo = endLocat.WareHouseNo;//所属仓库更改 |
| | | item.RoadwayNo = endLocat.RoadwayNo;//所属巷道更改 |
| | | item.AreaNo = endLocat.AreaNo;//所属区域更改 |
| | | |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | } |
| | | } |
| | | palletNo.IsCancel = 0; |
| | | palletNo.IsSend = 0; |
| | | palletNo.IsFinish = 0; |
| | | Db.Updateable(palletNo).ExecuteCommand(); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region 数字孪生系统获取库存信息 |
| | | #region 数字孪生系统反馈信息 |
| | | |
| | | /// <summary> |
| | | /// 反馈数字孪生系统库存信息 |
| | |
| | | throw new Exception("返回库存信息有误,错误信息:" + ex); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 反馈数字孪生系统操作信息 |
| | | /// </summary> |
| | | /// <param name=""></param> |
| | | /// <returns></returns> |
| | | public List<ReLogDataModel> GetLogDataList() |
| | | { |
| | | try |
| | | { |
| | | |
| | | //库存信息 |
| | | var stockDetailsList = Db.Queryable<DataStockDetail>().ToList(); |
| | | var sql = "select LocatNo,PalletNo,SkuName,Standard,LotNo,InspectStatus,Qty,ExpirationTime as Warranty from DataStockDetail "; |
| | | |
| | | |
| | | var item2 = Expressionable.Create<LogOperationSO>() |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var list2 = Db.Queryable<LogOperationSO>().Where(item2) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }); |
| | | |
| | | List<ReLogDataModel> list = Db.Ado.SqlQuery<ReLogDataModel>(sql); |
| | | |
| | | return list; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw new Exception("返回库存信息有误,错误信息:" + ex); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 查询操作日志 |
| | | /// </summary> |
| | | /// <param name="menuName">菜单名称</param> |
| | | /// <param name="type">类型</param> |
| | | /// <returns></returns> |
| | | public List<OperationDto> ReLogData() |
| | | { |
| | | try |
| | | { |
| | | var total = 0; |
| | | #region asn |
| | | |
| | | var item = Expressionable.Create<LogOperationASN>() |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var list = Db.Queryable<LogOperationASN>().Where(item) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }); |
| | | |
| | | #endregion |
| | | |
| | | #region so |
| | | |
| | | var item2 = Expressionable.Create<LogOperationSO>() |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var list2 = Db.Queryable<LogOperationSO>().Where(item2) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }); |
| | | |
| | | #endregion |
| | | |
| | | #region cr |
| | | |
| | | var item3 = Expressionable.Create<LogOperationCR>() |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var list3 = Db.Queryable<LogOperationCR>().Where(item3) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }); |
| | | |
| | | #endregion |
| | | |
| | | #region sys |
| | | |
| | | var item4 = Expressionable.Create<LogOperationSys>() |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var list4 = Db.Queryable<LogOperationSys>().Where(item4) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }); |
| | | |
| | | #endregion |
| | | |
| | | var data = Db.UnionAll(list, list2, list3, list4).OrderByDescending(it => it.CreateTime); |
| | | return data.OrderByDescending(m => m.CreateTime).ToList(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | str = sysToken.Token; |
| | | return str; //返回token值 |
| | | } |
| | | return str; |
| | | //#region 获取新的令牌 |
| | | ////对接时更改路径 |
| | | //var user = MesConfig.MesUser; |
| | | //var pass = MesConfig.MesPassWord; |
| | | //var secretKey = Md5Tools.CalcMd5(pass); |
| | | //var nonce = Guid.NewGuid().ToString("N"); |
| | | //var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds().ToString(); |
| | | //return str; |
| | | #region 获取新的令牌 |
| | | //对接时更改路径 |
| | | var user = MesConfig.MesUser; |
| | | var pass = MesConfig.MesPassWord; |
| | | var secretKey = Md5Tools.CalcMd5(pass); |
| | | var nonce = Guid.NewGuid().ToString("N"); |
| | | var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds().ToString(); |
| | | |
| | | //var info = new string[] { user, secretKey, nonce, timestamp }; |
| | | //Array.Sort(info, string.CompareOrdinal); //ASCII排序 |
| | | //var miyao = string.Join("", info); //数组转换成字符串 |
| | | //var sign = Md5Tools.CalcMd5(miyao); //签名 |
| | | var info = new string[] { user, secretKey, nonce, timestamp }; |
| | | Array.Sort(info, string.CompareOrdinal); //ASCII排序 |
| | | var miyao = string.Join("", info); //数组转换成字符串 |
| | | var sign = Md5Tools.CalcMd5(miyao); //签名 |
| | | |
| | | //var data = new |
| | | //{ |
| | | // user = user, |
| | | // nonce = nonce, |
| | | // timestamp = timestamp, |
| | | // sign = sign, |
| | | // jwt = true, //是否返回JWT令牌 |
| | | //}; |
| | | //#endregion |
| | | var data = new |
| | | { |
| | | user = user, |
| | | nonce = nonce, |
| | | timestamp = timestamp, |
| | | sign = sign, |
| | | jwt = true, //是否返回JWT令牌 |
| | | }; |
| | | #endregion |
| | | |
| | | //#region 通过接口发送至赋码 |
| | | ////系统对接后放开 |
| | | //var jsonData = JsonConvert.SerializeObject(data); |
| | | #region 通过接口发送至赋码 |
| | | //系统对接后放开 |
| | | var jsonData = JsonConvert.SerializeObject(data); |
| | | |
| | | //var response = HttpHelper.DoPost(url, jsonData, "FuMa申请获取令牌", "Fuma"); |
| | | var response = HttpHelper.DoPost(url, jsonData, "FuMa申请获取令牌", "Fuma"); |
| | | |
| | | //var obj = JsonConvert.DeserializeObject<MesTokenModel>(response);//解析返回数据 |
| | | var obj = JsonConvert.DeserializeObject<MesTokenModel>(response);//解析返回数据 |
| | | |
| | | //if (obj.status != "success") |
| | | //{ |
| | | // throw new Exception("上传失败" + obj.message); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var token = obj.Data.token; |
| | | // var expireTime = obj.Data.expire_time; |
| | | // var time = DateTime.Now.AddMilliseconds(double.Parse(expireTime)); |
| | | // if (sysToken == null)//添加 |
| | | // { |
| | | // var addToken = new SysToken() |
| | | // { |
| | | // SystemName = "MES", |
| | | // Token = token, |
| | | // ExpireTime = time, |
| | | // CreateUser = 0 |
| | | // }; |
| | | // Db.Insertable(addToken).ExecuteCommand(); |
| | | // return token; |
| | | // } |
| | | // else //修改 |
| | | // { |
| | | // sysToken.Token = token; |
| | | // sysToken.ExpireTime = time; |
| | | // sysToken.UpdateTime = DateTime.Now; |
| | | // Db.Updateable(sysToken).ExecuteCommand(); |
| | | // return token; |
| | | // } |
| | | //} |
| | | if (obj.status != "success") |
| | | { |
| | | throw new Exception("上传失败" + obj.message); |
| | | } |
| | | else |
| | | { |
| | | var token = obj.Data.token; |
| | | var expireTime = obj.Data.expire_time; |
| | | var time = DateTime.Now.AddMilliseconds(double.Parse(expireTime)); |
| | | if (sysToken == null)//添加 |
| | | { |
| | | var addToken = new SysToken() |
| | | { |
| | | SystemName = "MES", |
| | | Token = token, |
| | | ExpireTime = time, |
| | | CreateUser = 0 |
| | | }; |
| | | Db.Insertable(addToken).ExecuteCommand(); |
| | | return token; |
| | | } |
| | | else //修改 |
| | | { |
| | | sysToken.Token = token; |
| | | sysToken.ExpireTime = time; |
| | | sysToken.UpdateTime = DateTime.Now; |
| | | Db.Updateable(sysToken).ExecuteCommand(); |
| | | return token; |
| | | } |
| | | } |
| | | |
| | | //#endregion |
| | | #endregion |
| | | } |
| | | catch (Exception) |
| | | { |
| | |
| | | /// <returns></returns> |
| | | public List<MaterialsDto> GetMateList(string skuNo, string skuName, string auditStatusNo, string type, string isControlled, string isInspect, string environment, string categoryNo) |
| | | { |
| | | string str = "select mate.*,user1.RealName CreateUserName,pack.PackagName PackagName,unit.UnitName UnitName,matec.CategoryName from SysMaterials mate left join SysUserInfor user1 on mate.CreateUser = user1.Id left join SysPackag pack on mate.PackagNo = pack.PackagNo left join SysUnit unit on mate.UnitNo = unit.UnitNo left join SysMaterialCategory matec on mate.CategoryNo = matec.CategoryNo where mate.IsDel = @isdel"; |
| | | string str = "select mate.*,user1.RealName CreateUserName,pack.PackagName PackagName,unit.UnitName UnitName,matec.CategoryName from SysMaterials mate left join SysUserInfor user1 on mate.CreateUser = user1.Id left join SysPackag pack on mate.PackagNo = pack.PackagNo left join SysUnit unit on mate.UnitNo = unit.UnitNo left join SysMaterialCategory matec on mate.CategoryNo = matec.CategoryNo where mate.IsDel = @isdel and pack.IsDel = @isdel"; |
| | | //判断物料编码 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | | { |
| | |
| | | using Model.InterFaceModel; |
| | | using Model.ModelDto.DataDto; |
| | | using Model.ModelDto.LogDto; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | List<ReLocateDataModel> GetLocateList(); |
| | | |
| | | /// <summary> |
| | | /// 反馈数字孪生操作信息 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | List<ReLogDataModel> GetLogDataList(); |
| | | |
| | | /// <summary> |
| | | /// 反馈数字孪生操作信息 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | List<OperationDto> ReLogData(); |
| | | } |
| | | } |
| | |
| | | private readonly IPdaAsnServer _paAsnSvc;//空托跺绑定 |
| | | private readonly IStockServer _stockSvc;//AGV任务完成箅 |
| | | private readonly IPdaCrServer _pdaCrServer; // PDA任务调度 |
| | | private static readonly object OLock = new object(); |
| | | |
| | | public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc,IPdaCrServer pdaCrServer) |
| | | { |
| | |
| | | [HttpPost] |
| | | public IActionResult RequestRoadWay(RequestLocate model) |
| | | { |
| | | var logStr = ""; |
| | | lock (OLock) { |
| | | var logStr = ""; |
| | | |
| | | logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | |
| | | try |
| | | { |
| | | |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr); |
| | | if (model.TaskModel == "1") |
| | | try |
| | | { |
| | | var list = _asnPalletBindSvc.RequestRoadWayModel(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr); |
| | | if (model.TaskModel == "1") |
| | | { |
| | | var list = _asnPalletBindSvc.RequestRoadWayModel(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的成功信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | } |
| | | else |
| | | { |
| | | |
| | | var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的成功信息", 2); |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的失败信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | else |
| | | { |
| | | |
| | | var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的失败信息", 2); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | |
| | | //} |
| | | |
| | | //string palletno = model.PalletNo; |
| | | var logStr = ""; |
| | | if (model.PalletNo.Length == 9) |
| | | lock (OLock) |
| | | { |
| | | logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | |
| | | try |
| | | { |
| | | var logStr = ""; |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr); |
| | | logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr); |
| | | logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | |
| | | } |
| | | string pallet = model.PalletNo.Substring(0, 8); |
| | | OutCommandDto list; |
| | | if (model.TaskModel == "1") |
| | | try |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocationModel(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | else |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr); |
| | | |
| | | } |
| | | string pallet = model.PalletNo.Substring(0, 8); |
| | | OutCommandDto list; |
| | | if (model.TaskModel == "1") |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocationModel(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | else |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);// int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);// int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | |
| | | return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2);//int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位失败返回:( {e.Message} ),", logStr); |
| | | return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list }); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr); |
| | | } |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2);//int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位失败返回:( {e.Message} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr); |
| | | } |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | public IActionResult BindPlnInHouseWcs(PalletsBind model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS又叠托机申请空托入库" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | var strMsg = _paAsnSvc.BindNullPallets(model); |
| | |
| | | public IActionResult IssuePlnOutHouseWcs(OutModePalletVm model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请空托出库" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | List<OutCommandDto> _list = _pdaSoSvc.IssuePlnOutHouseWcs(model,0); |
| | |
| | | public IActionResult IssuePlnCheckHouseWcs(CheckModePalletVm model) |
| | | { |
| | | var logStr = $@".\log\WCS\WMS拣货申请空托出库" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | string list = _pdaSoSvc.IssuePlnCehckHouseWcs(model, 0,_config.AgvHost+_config.GenAgvSchedulingTask); |
| | |
| | | public IActionResult RequestPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackWcs(model.PalletNo); |
| | |
| | | public IActionResult RequestUnPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestUnPackWcs(model.PalletNo); |
| | |
| | | public IActionResult RequestPackedWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackedWcs(model.PalletNo); |
| | |
| | | public IActionResult ResultBoxInfoCheckWcs(BoxInfoCheck model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请拆垛托盘信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | RequestBoxInfoCheck list = _exNoticeSvc.BoxInfoCheckWcs(model); |
| | |
| | | public IActionResult ResultBoxInfoExportWcs(BoxInfoCheck model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请成品箱码拆垛拣货信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | //返回出库分拣装车口 |
| | | var list = _exNoticeSvc.BoxInfoExportWcs(model.BoxNo); |
| | | return Ok(new { Success = "1", Message = "成品箱码拆垛拣货成功", loadubgAddre = list }); |
| | | return Ok(new { Success = "1", Message = "成品箱码拆垛拣货成功", loadingAddre = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请成品箱码拆垛拣货异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new { Success = "-1", Message = e.Message, loadubgAddre ="" }); |
| | | return Ok(new { Success = "-1", Message = e.Message, loadingAddre = "" }); |
| | | } |
| | | |
| | | } |
| | |
| | | using WMS.IBLL.IDataServer; |
| | | using Model.ModelDto.DataDto; |
| | | using System.Collections.Generic; |
| | | using Model.ModelDto.LogDto; |
| | | |
| | | namespace Wms.Controllers |
| | | { |
| | |
| | | return Ok(stocks); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 数字孪生系统库存质量状态反馈 |
| | | /// </summary> |
| | | /// <param name="model">来源信息</param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult ReLogData(DigitalTwinModel model) |
| | | { |
| | | |
| | | //记录log |
| | | var logStr = ""; |
| | | logStr = $@".\log\数字孪生\操作日志信息反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"操作日志信息反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | //获取库存信息 |
| | | List<OperationDto> stocks = _stock.ReLogData(); |
| | | |
| | | if (stocks.Count == 0) |
| | | { |
| | | var data = new HttpReturnModel { Success = "0", Message = "当前无操作信息" }; |
| | | return Ok(data); |
| | | } |
| | | return Ok(stocks); |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var data = new HttpReturnModel { Success = "0", Message = "失败:" + e.Message }; |
| | | if (logStr != "") |
| | | { |
| | | jsonData = JsonConvert.SerializeObject(data); |
| | | LogFile.SaveLogToFile($"操作日志信息反馈,返回参数:( {jsonData} ),", logStr); |
| | | } |
| | | return Ok(data); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | } |
| | |
| | | "ErpHost": "http://10.110.24.30:8081", //erpIP |
| | | "MesHost": "http://10.18.99.67:3000", //mesIP |
| | | "WcsHost": "http://10.60.16.10:5005", // "http://localhost:57061", //wcsIPhttp://localhost:57061/ |
| | | "BoxHost": "http://10.110.24.30:8081", //boxIP |
| | | "BoxHost": "http://10.18.99.88", //boxIP |
| | | "AgvHost": "http://10.18.99.66:8181", //agvIP |
| | | |
| | | // WCS |
| | |
| | | "MesBeiLiaoUrl": "/mes/service/mes/save_morder_feedback", //备料反馈(原料备料到生产车间缓存区) |
| | | "MesGetTokenUrl": "/mes/service/system/sign_login", //获取令牌 |
| | | // 赋码 |
| | | "FuMaGetBoxUrl": "/port/mes/service/system/sign_login", //获取赋码箱码信息 |
| | | "FuMaGetTokenUrl": "/port/mes/service/system/sign_login", //获取令牌 |
| | | "FuMaGetBoxUrl": "/api/IO/QueryBarcode", //获取赋码箱码信息 |
| | | "FuMaGetTokenUrl": "/api/IO/QueryBarcode", //获取令牌 |
| | | |
| | | // AGV |
| | | "GenAgvSchedulingTask": "/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //生成任务单接口 |