Administrator
2024-03-01 e6d5b88ce459fe8414aa7a96678820cc0246326c
Merge branch 'wxw'
8个文件已修改
281 ■■■■ 已修改文件
HTML/views/SOSetting/ExportNotice.html 132 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/SOSetting/ExportNoticeAddFrom.html 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/BllSoController.cs 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/SOSetting/ExportNotice.html
@@ -57,11 +57,20 @@
                            <div class="layui-input-inline">
                                <select name="Type" id="Type" lay-filter="Type" lay-search>
                                    <option value=""></option>
                                    <!-- 24 -->
                                    <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>
                                    <!-- 09 -->
                                    <option value="0">标准销售出库</option>
                                    <!-- <option value="0">标准销售出库</option>
                                    <option value="1">非标销售出库</option>
                                    <option value="2">标准调拨出库</option>
                                    <option value="3">非标调拨出库</option>
                                    <option value="3">非标调拨出库</option> -->
                                    <!-- 08 -->
                                    <!-- <option value="0">成品出库</option>
                                    <option value="1">原辅料出库</option>
@@ -81,6 +90,7 @@
                                    <option value="3">正在执行</option>
                                    <option value="4">执行完毕</option>
                                    <option value="5">订单关闭</option>
                                    <option value="6">已复核</option>
                                </select>
                            </div>
                        </div>
@@ -119,9 +129,38 @@
                                </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>
                        </div>
                        <!-- 确认出库口弹窗 -->
                        <div class="layui-inline" id="divPickingArea" style="display: none; padding-top: 10px;">
                            <div class="layui-inline">
                                <label class="layui-form-label">拆垛方式</label>
                                <div class="layui-input-inline" style="width: 220px;">
                                    <select name="UnstackWay" id="UnstackWay" lay-filter="UnstackWay" lay-search>
                                        <option value="0" selected>机器人拆垛</option>
                                        <option value="1">人工拆垛</option>
                                    </select>
                                </div>
                            </div>
                            <div class="layui-inline DivLoadingArea" style="margin-top: 10px;">
                                <label class="layui-form-label">装车口</label>
                                <div class="layui-input-inline" style="width: 220px;">
                                    <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="4">4</option>
                                    </select>
                                </div>
                            </div>
                            <div class="layui-inline DivPickingArea2" style="margin-top: 10px;">
                            <label class="layui-form-label">出库口</label>
                            <div class="layui-input-inline">
                                <div class="layui-input-inline" style="width: 220px;">
                                <select name="PickingArea" id="PickingArea" lay-search>
                                    <option value=""></option>
                                    <option value="1">1</option>
@@ -131,13 +170,7 @@
                                </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>
                        </div>
                        <!-- 维护备注弹框 -->
                        <div class="layui-inline" id="divEditDemo" style="display: none; padding-top: 10px;">
                            <label class="layui-form-label">备注</label>
@@ -164,13 +197,21 @@
                            {{# function GetBtn3(d){
                                    switch (d.Type) {
                                        case "0":
                                            return "标准销售出库";
                                            return "成品出库";
                                        case "1":
                                            return "非标准销售出库";
                                            return "领料出库";
                                        case "2":
                                            return "标准调拨出库";
                                            return "抽检出库";
                                        case "3":
                                            return "非标准调拨出库";
                                            return "物料取样出库";
                                        case "4":
                                            return "不合格品出库";
                                        case "5":
                                            return "中间品出库";
                                        case "6":
                                            return "代储出库";
                                        case "7":
                                            return "其他出库";
                                        default:
                                            return "";
                                    }
@@ -193,6 +234,8 @@
                                        case "4":
                                            return `<button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">执行完毕</button>`;
                                        case "5":
                                            return `<button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">订单关闭</button>`;
                                        case "6":
                                            return `<button class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">上传完毕</button>`;
                                        default:
                                            return "";
@@ -231,6 +274,14 @@
                                }    
                            }}
                            {{ GetBtn7(d) }}
                        </script>
                        <script type="text/html" id="templetCheckTime">
                            {{# function GetBtn8(d){
                                    return formatDate(d.CheckTime);
                                }
                            }}
                            {{ GetBtn8(d) }}
                        </script>
                        <!-- #endregion -->
                    </div>
@@ -310,9 +361,12 @@
                                                <i class="layui-icon layui-icon-ok"></i>关单
                                            </a>`;
                                }
                                if( d.Status == '5'){
                                html += `<a class="layui-btn layui-btn-normal layui-btn-xs shangClass" lay-event="xml"> 
                                    <i class="layui-icon layui-icon-ok"></i>XML
                                        <i class="layui-icon layui-icon-ok"></i>复核
                                </a>`;
                                }
                                html += `<a class="layui-btn layui-btn-normal layui-btn-xs editDemoClass" lay-event="editDemo">
                                    <i class="layui-icon layui-icon-edit"></i>备注</a>`;
                                return html;
@@ -428,6 +482,8 @@
                            {field: 'CreateTime',title: '创建时间',align: 'center',templet: '#templetCreateTime'},
                            {field: 'UpdateUserName',title: '修改人',align: 'center'},
                            {field: 'UpdateTime',title: '修改时间',align: 'center',templet: '#templetUpdateTime'},
                            {field: 'CheckUserName',title: '复核人',align: 'center',width: 110},
                            {field: 'CheckTime',title: '复核时间',align: 'center',templet: '#templetCheckTime'},
                            {field: 'caozuo',title: '操作',fixed: 'right',align: 'center',width: 200,toolbar: '#table-content-list', "disabled": true}
                        ]];
                var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码
@@ -950,6 +1006,7 @@
                        $(".qufenClass").hide(); //取消分配
                        $(".outClass").hide(); //出库
                        $(".editDemoClass").hide();//备注
                        $(".checkClass").hide(); //复核
                    });
                    sendData(IP + "/Basis/GetRoleRightList", {}, 'get', function(res) {
                        if (res.code == 0) { //成功 
@@ -1006,6 +1063,11 @@
                                            $(".editDemoClass").show(); 
                                        });
                                    }
                                    if (res.data[k].MenuName == "复核出库单") {
                                        $(function() {
                                            $(".checkClass").show();
                                        });
                                    }
                                }
                            }
                        } else { //不成功
@@ -1039,6 +1101,7 @@
                        });
                    }
                });
                var isNeedUnpack='0'//是否需要拆箱,0:否  1:是
                //监听数据操作
                table.on('tool(LAY-app-content-list)', function(obj) {
                    var data = obj.data;
@@ -1157,12 +1220,36 @@
                            area: ['1200px', '90%'],
                        });
                    }else if(obj.event === 'outKu'){
                        var param = {
                            soNo: SoNo
                        };
                        sendData(IP + "/BllSo/IsNeedUnpack", param, 'get', function(res) {
                            if (res.code == 0) { //成功
                                if(res.data=="1"){
                                    isNeedUnpack='1'
                                    $('.DivPickingArea2').attr("style", "display:block")
                                }else{
                                    isNeedUnpack='0'
                                    $('.DivPickingArea2').attr("style", "display:none")
                                }
                                if($('#UnstackWay').val()=='1'){
                                    $('.DivPickingArea2').attr("style", "display:block")
                                }
                            } else { //不成功
                                layer.msg(res.msg, {
                                    icon: 2,
                                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                }, function() {
                                    return;
                                });
                            }
                        });
                        layer.open({
                            type: 1,
                            title: '确认出库口',
                            content: $('#divPickingArea'),
                            maxmin: true,
                            area: ['300px','265px'],
                            area: ['350px','285px'],
                            btn: ['确定', '取消'],
                            yes: function(index, layero) {
                                var pa = $('#PickingArea').val();
@@ -1376,6 +1463,21 @@
                    downloadA.click();
                    document.body.removeChild(downloadA);
                }
                //拆垛方式切换
                form.on('select(UnstackWay)',function(data){
                    var value = data.value;
                    if(value==0){
                        $('.DivLoadingArea').attr("style", "display:block")
                        if(isNeedUnpack=='0'){
                            $('.DivPickingArea2').attr("style", "display:none")
                        }else{
                            $('.DivPickingArea2').attr("style", "display:block")
                        }
                    }else{
                        $('.DivLoadingArea').attr("style", "display:none")
                        $('.DivPickingArea2').attr("style", "display:block")
                    }
                });
                //#region 自定义表头
                //自定义表头            
HTML/views/SOSetting/ExportNoticeAddFrom.html
@@ -33,11 +33,20 @@
                    <div class="layui-input-inline">
                        <select name="Type" id="Type" lay-filter="Type" lay-verify="required" lay-search>
                            <option value=""></option>
                            <!-- 24 -->
                            <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>
                            <!-- 09 -->
                            <option value="0">标准销售出库</option>
                            <!-- <option value="0">标准销售出库</option>
                            <option value="1">非标销售出库</option>
                            <option value="2">标准调拨出库</option>
                            <option value="3">非标调拨出库</option>
                            <option value="3">非标调拨出库</option> -->
                            <!-- 08 -->
                            <!-- <option value="0">成品出库</option>
                            <option value="1">原辅料出库</option>
Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
@@ -103,6 +103,16 @@
        /// 更新人
        /// </summary>
        public string UpdateUserName { get; set; }
        /// <summary>
        /// 复核人
        /// </summary>
        public string CheckUserName { get; set; }
        /// <summary>
        /// 复核时间
        /// </summary>
        public DateTime? CheckTime { get; set; }
    }
    public class ExStockInfoDto
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -278,7 +278,8 @@
                    .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                    .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                    .Select((a, b, c, d) => new ExportNoticeDto()
                    .LeftJoin<SysUserInfor>((a, b, c, d,e) => a.CheckUser == e.Id)
                    .Select((a, b, c, d,e) => new ExportNoticeDto()
                    {
                        Id = a.Id,
                        SONo = a.SONo,
@@ -300,7 +301,10 @@
                        CreateUserName = c.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                        UpdateTime = a.UpdateTime,
                        CheckUserName=e.RealName,
                        CheckTime=a.CheckTime
                    })
                    .OrderByDescending(a => a.CreateTime)
                    .ToOffsetPage(page, limit, ref total);
@@ -1043,6 +1047,10 @@
                {
                    throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭/已上传");
                }
                if (userId == notice.UpdateUser)
                {
                    throw new Exception("复核失败,复核人员和关闭订单人员不能相同!");
                }
                //出库单明细
                var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).Select(m => m.BoxNo3).ToList();
                Db.BeginTran();//开启事务
@@ -1057,8 +1065,13 @@
                    //} 
                    var dom = HttpHelper.EncodeParsToFuMa(comDetail, "ceshi", "ExInfoXml");
                    notice.Status = "6";//状态:已上传
                    notice.CheckTime = DateTime.Now;//复核时间
                    notice.CheckUser = userId;//复核人
                    Db.Updateable(notice).ExecuteCommand();
                    ////添加操作日志记录
                    //var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "关单", $"关闭了单据号为{notice.SONo}的单据信息", userId);
                     var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "复核", $"复核了单据号为{notice.SONo}的单据信息", userId);
                    Db.CommitTran();
                    return dom;
@@ -2711,5 +2724,58 @@
        #endregion
        /// <summary>
        /// 判断出库是否需要拆箱
        /// </summary>
        /// <param name="soNo"></param>
        /// <returns></returns>
        public string IsNeedUnpack(string soNo)
        {
            string result = "0";//是否需要拆箱,0:否  1:是
            if (string.IsNullOrEmpty(soNo))
            {
                throw new Exception("未找到对应出库单!");
            }
            try
            {
                var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo);
                if (notice == null)
                {
                    throw new Exception("未找到对应出库单!");
                }
                //物料编码表
                var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
                //包装表
                var packagList= Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
                //出库分配信息
                var allotList = Db.Queryable<BllExportAllot>().Where(w => w.IsDel == "0" && w.SONo == soNo).ToList();
                foreach (var item in allotList)
                {
                    var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
                    if (skuInfo == null)
                    {
                        throw new Exception("物料信息不存在!");
                    }
                    var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
                    if (packagInfo == null)
                    {
                        throw new Exception("包装信息不存在!");
                    }
                    if (packagInfo.L2Name == "箱")
                    {
                        if (item.Qty % (decimal)packagInfo.L2Num != 0)//能整除说明不用拆箱,不能整除说明需要拆箱
                        {
                            result = "1";//需要拆箱
                            break;
                        }
                    }
                }
                return result;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}
Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs
@@ -130,6 +130,5 @@
        /// 复核时间
        /// </summary>
        public DateTime? CheckTime { get; set; }
    }
}
Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs
@@ -153,8 +153,6 @@
        /// </summary>           
        public string OutMode { get; set; }
        [Navigate(NavigateType.OneToOne, nameof(LogisticsId))]
        public SysLogisticsInfo LogisticsInfoInfo { get; set; }
Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -202,5 +202,11 @@
        /// <param name="userId"></param>
        void AddHandOutAllot(AddHandOutVm model, int userId);
        /// <summary>
        /// 判断出库是否需要拆箱
        /// </summary>
        /// <param name="soNo"></param>
        /// <returns></returns>
        string IsNeedUnpack(string soNo);
    }
}
Wms/Wms/Controllers/BllSoController.cs
@@ -213,18 +213,18 @@
        {
            try
            {
                ////获取当前登录的用户ID
                //var claimsIdentity = this.User.Identity as ClaimsIdentity;
                //if (claimsIdentity == null)
                //{
                //    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                //}
                //var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                //if (string.IsNullOrWhiteSpace(userId))
                //{
                //    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                //}
                var bolls = _exNoticeSvc.AddExXmlStr(model.Id, 1);//int.Parse(userId)
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var bolls = _exNoticeSvc.AddExXmlStr(model.Id, int.Parse(userId));
                 
                return Ok(new { code = 0, count = 0, msg = "生成出库单Xml", data= bolls.InnerXml.ToString() });
                 
@@ -767,5 +767,26 @@
        }
        #endregion
        /// <summary>
        /// 判断出库是否需要拆箱
        /// </summary>
        /// <param name="soNo"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult IsNeedUnpack(string soNo)
        {
            try
            {
                string result = _exNoticeSvc.IsNeedUnpack(soNo);
                return Ok(new { code = 0, data = result, msg = "成功" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
    }
}