17ac8fc54b24cdabd3344fd0fdbb1b7d98c9fab2..ea4fe1a6d1decf926292d3d71e7656bbcff4c937
2024-07-03 Administrator
修改问题
ea4fe1 对比 | 目录
2024-07-02 Administrator
修改问题
1c5add 对比 | 目录
2024-06-30 Administrator
修改问题
dfd6f9 对比 | 目录
2024-06-28 Administrator
修改问题
8db847 对比 | 目录
2024-06-25 Administrator
Merge branch 'wxw'
c161ac 对比 | 目录
2024-06-25 Administrator
修改问题
65a82f 对比 | 目录
12个文件已修改
500 ■■■■ 已修改文件
HTML/views/ASNSetting/ArrivalLogTask.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/SOSetting/ExportNotice.html 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/StatisticalReport/BoxInfor.html 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/StatisticalReport/PalletAddFrom.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/InterFaceModel/RCSModel.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllTransServer/NoticeServer.cs 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllTransServer/RcsServer.cs 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/DataServer/StockDetailServer.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/StatisticalController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/UpApiController.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/ASNSetting/ArrivalLogTask.html
@@ -97,10 +97,10 @@
                            lay-filter="LAY-app-contlist-shenqing">
                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>申请储位
                        </button> -->
                        <button class="layui-btn layui-btn-sm layuiadmin-btn-list shenqingClass" lay-submit
                        <!-- <button class="layui-btn layui-btn-sm layuiadmin-btn-list shenqingClass" lay-submit
                        lay-filter="LAY-app-contlist-shenqing" id="add">
                            <i class="layui-icon layui-icon-add layuiadmin-button-btn"></i>申请储位
                        </button>
                        </button> -->
                    </div>
                </div>
            </div>
HTML/views/SOSetting/ExportNotice.html
@@ -472,12 +472,12 @@
            var TotalColsArr = [[
                { field: '', title: '序号', type: 'numbers', width: 50, align: 'center', fixed: 'left', "disabled": true },
                { field: 'SONo', title: '出库单号', align: 'center', fixed: 'left', width: 165, "disabled": true },
                { field: 'Type', title: '单据类型', align: 'center', templet: '#templetType' },
                //{ field: 'Type', title: '单据类型', align: 'center', templet: '#templetType' },
                { field: 'Status', title: '执行状态', align: 'center', templet: '#templetStatus' },
                // { field: 'LogisticsName', title: '承运商', align: 'center' },
                // { field: 'CustomerName', title: '客户名称', align: 'center' },
                { field: 'LotNo', title: '批次号', align: 'center' },
                { field: 'LotNoText', title: '批次描述', align: 'center' },
                //{ field: 'LotNo', title: '批次号', align: 'center' },
                //{ field: 'LotNoText', title: '批次描述', align: 'center' },
                //{ field: 'IsDespatch', title: '是否发运', align: 'center', templet: '#templetIsDespatch' },
                //{ field: 'SupplierLot', title: '供货批次', align: 'center' },
                { field: 'Origin', title: '来源', align: 'center' },
@@ -488,7 +488,7 @@
                { 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": false }
                //{ field: 'caozuo', title: '操作', fixed: 'right', align: 'center', width: 200, toolbar: '#table-content-list', "disabled": false }
            ]];
            var TotalColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码
            //#endregion
@@ -771,7 +771,7 @@
                //{ field: 'SupplierLot', title: '供货批次', align: 'center', width: 120 },
                //{ field: 'Price', title: '单价', align: 'center', width: 80 },
                //{ field: 'Money', title: '总金额', align: 'center', width: 90 },
                { field: 'caozuo', title: '操作', fixed: 'right', width: 100, align: 'left', toolbar: '#table-content-list2', "disabled": true }
                //{ field: 'caozuo', title: '操作', fixed: 'right', width: 100, align: 'left', toolbar: '#table-content-list2', "disabled": true }
            ]];
            var DetailColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码
            //#endregion
HTML/views/StatisticalReport/BoxInfor.html
@@ -205,9 +205,20 @@
                            }
                            return html;
                        }    
                    }}
                    }}
                    {{ GetBtn11(d) }}
                    </script>
                    <script type="text/html" id="InspectStatus1">
                        {{#  if(d.InspectStatus == '0') { }}
                            <p>待检验</p>
                        {{#  } else if(d.InspectStatus == '1'){ }}
                            <p>检验合格</p>
                        {{#  } else if(d.InspectStatus == '2'){ }}
                            <p>不合格</p>
                        {{#  } else if(d.InspectStatus == '4') { }}
                            <p>放置期</p>
                        {{#  } }}
                    </script>
                    <script type="text/html" id="toolbarDemo">
                        <button class="layui-btn layuiadmin-btn-list layui-btn-sm  addClass" lay-event="add">
@@ -360,6 +371,7 @@
                    {field: 'Qty', title: '数量', align: 'center'},
                    {field: 'LockQty', title: '锁定数量', align: 'center',},
                    {field: 'FrozenQty', title: '冻结数量', align: 'center'},
                    {field: 'InspectStatus', title: '质检状态', align: 'center', templet: '#InspectStatus1'},
                    //{field: 'InspectMark', title: '抽检标记', align: 'center', templet: '#InspectMarkStatus'},
                    //{field: 'BitPalletMark', title: '零托标记', align: 'center', templet: '#BitPalletMarkStatus'},
                ]];
@@ -464,6 +476,9 @@
                                        AreaNo: field.AreaNo, //所属区域
                                        LocatNo:field.LocatNo,//所属储位
                                        PalletStatus: field.PalletStatus, //托盘类别
                                        SkuNo:field.SkuNo,
                                        SkuName:field.SkuName,
                                        LotNo:field.LotNo
                                    };
                                    if(doing){
                                        doing = false;
HTML/views/StatisticalReport/PalletAddFrom.html
@@ -35,7 +35,7 @@
            <div class="layui-form-item">
                <label class="layui-form-label">所属储位</label>
                <div class="layui-input-block">
                    <select name="LocatNo" id="LocatNo" lay-verify="" lay-search >
                    <select name="LocatNo" id="LocatNo" lay-verify="required" lay-search >
                        <option value=""></option>
                    </select>
                </div>
@@ -43,7 +43,7 @@
            <div class="layui-form-item">
                <label class="layui-form-label">托盘状态</label>
                <div class="layui-input-block">
                    <select name="PalletStatus" id="PalletStatus" lay-verify="" lay-search>
                    <select name="PalletStatus" id="PalletStatus" lay-verify="required" lay-search>
                        <option value=""></option>
                        <option value="0">净桶</option>
                        <option value="1">混料</option>
@@ -52,6 +52,24 @@
                    </select>
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">物料编码</label>
                <div class="layui-input-block">
                    <input type="text" name="SkuNo" lay-verify=""  placeholder="请输入物料编码" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">物料名称</label>
                <div class="layui-input-block">
                    <input type="text" name="SkuName" lay-verify=""  placeholder="请输入物料名称" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">批次号</label>
                <div class="layui-input-block">
                    <input type="text" name="LotNo" lay-verify=""  placeholder="请输入批次号" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item layui-hide">
                <input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="确认添加">
                <input type="button" lay-submit lay-filter="layuiadmin-app-form-edit" id="layuiadmin-app-form-edit" value="确认编辑">
Wms/Model/InterFaceModel/RCSModel.cs
@@ -120,7 +120,7 @@
            public string Location { get; set; }
            public string Type { get; set; }
            public string LotNo { get; set; }
            public string Palletno { get; set; }
            public string PalletNo { get; set; }
            
        }
@@ -154,6 +154,7 @@
            /// 任务类型 
            /// 0:入库
            /// 1:出库
            /// 2:移库
            /// </summary>
            public string Crtype { get; set; }
            /// <summary>
Wms/WMS.BLL/BllTransServer/NoticeServer.cs
@@ -5,6 +5,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.DAL;
using WMS.Entity.BllAsnEntity;
@@ -15,6 +16,7 @@
using WMS.Entity.LogEntity;
using WMS.Entity.SysEntity;
using WMS.IBLL.IBllTransServer;
using static Model.InterFaceModel.RCSModel;
namespace WMS.BLL.BllTransServer
{
@@ -163,6 +165,10 @@
                    resultModel.Success = 0;
                    resultModel.Message = "成功";
                    //提交事务
                    Db.CommitTran();
                    return resultModel;
                }
                switch (taskInfo.OrderType)
@@ -232,7 +238,7 @@
                                IsBale = "0",
                                IsBelt = "0",
                                PalletStatus = "1",
                                PalletStatus = "2",
                                IsDel = "0",
                                CreateUser = 0,
@@ -255,7 +261,7 @@
                            sd1.LocatNo = locatInfo.LocatNo;//储位地址
                            sd1.CompleteTime = comTime;
                            sd1.InspectStatus = "0";//待检验
                            sd1.PalletStatus = "1";//预混
                            sd1.PalletStatus = "2";//半成品
                            //修改库存明细
                            Db.Updateable(sd1).ExecuteCommand();
@@ -414,13 +420,6 @@
                            resultModel.Message = "起始储位信息不存在!";
                            return resultModel;
                        }
                        //目标储位信息
                        var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0");
                        if (endLocatInfo == null)
                        {
                            resultModel.Message = "目标储位信息不存在!";
                            return resultModel;
                        }
                        //库存明细
                        var sd2 = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo);
                        if (sd2 == null)
@@ -452,10 +451,10 @@
                        sd2.InspectQty = 0;
                        sd2.ASNNo = "";
                        sd2.ASNDetailNo = null;
                        sd2.WareHouseNo = endLocatInfo.WareHouseNo;//所属仓库
                        sd2.RoadwayNo = endLocatInfo.RoadwayNo;//所属巷道
                        sd2.AreaNo = endLocatInfo.AreaNo;//所属区域
                        sd2.LocatNo = endLocatInfo.LocatNo;//储位地址
                        sd2.WareHouseNo = "";//所属仓库
                        sd2.RoadwayNo = "";//所属巷道
                        sd2.AreaNo = "";//所属区域
                        sd2.LocatNo = "";//储位地址
                        sd2.CompleteTime = comTime;
                        //修改库存明细
                        Db.Updateable(sd2).ExecuteCommand();
@@ -463,10 +462,6 @@
                        startLocatInfo.Status = "0";//空储位
                        //修改起始储位状态
                        Db.Updateable(startLocatInfo).ExecuteCommand();
                        endLocatInfo.Status = "1";//有物品
                        //修改目标储位状态
                        Db.Updateable(endLocatInfo).ExecuteCommand();
                        break;
                    #endregion
@@ -497,24 +492,28 @@
                            sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道
                            sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域
                            sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址
                            if (endLocatInfo2.AreaNo == "A01")//洁净区
                            if (endLocatInfo2.AreaNo.Contains("01"))//洁净区
                            {
                                sd3.PalletStatus = "0";
                                sd3.PalletStatus = "0";
                            }
                            else if (endLocatInfo2.AreaNo == "A02")//预混区
                            else if (endLocatInfo2.AreaNo.Contains("02"))//预混区
                            {
                                sd3.PalletStatus = "1";
                            }
                            else if (endLocatInfo2.AreaNo == "A03")//半成品区
                            else if (endLocatInfo2.AreaNo.Contains("03"))//半成品区
                            {
                                sd3.PalletStatus = "2";
                            }
                            else if (endLocatInfo2.AreaNo == "A04")//脏桶区
                            else if (endLocatInfo2.AreaNo.Contains("04"))//脏桶区
                            {
                                sd3.PalletStatus = "3";
                            }
                                sd3.LotNo = "";//批次
                                sd3.SkuNo = "";
                                sd3.SkuName = "";
                                sd3.InspectStatus = "0";//待检验
                            }
                        }
                        if (taskInfo.Type == "1")//出库任务
                        else if (taskInfo.Type == "1")//出库任务
                        {
                            //起始储位信息
                            var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0");
@@ -532,8 +531,62 @@
                            sd3.AreaNo = "";//所属区域
                            sd3.LocatNo = "";//储位地址
                        }
                        else if (taskInfo.Type == "2")//移库任务
                        {
                            //起始储位信息
                            var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0");
                            if (startLocatInfo2 == null)
                            {
                                resultModel.Message = "起始储位信息不存在!";
                                return resultModel;
                            }
                            startLocatInfo2.Status = "0";//空储位
                            //修改起始储位状态
                            Db.Updateable(startLocatInfo2).ExecuteCommand();
                            //目标储位信息
                            var endLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0");
                            if (endLocatInfo2 == null)
                            {
                                resultModel.Message = "目标储位信息不存在!";
                                return resultModel;
                            }
                            endLocatInfo2.Status = "1";//有物品
                            //修改目标储位状态
                            Db.Updateable(endLocatInfo2).ExecuteCommand();
                            sd3.WareHouseNo = endLocatInfo2.WareHouseNo;//所属仓库
                            sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道
                            sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域
                            sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址
                            sd3.Status = "0";
                            if (endLocatInfo2.AreaNo.Contains("01"))//洁净区
                            {
                                sd3.PalletStatus = "0";
                                sd3.Status = "0";
                            }
                            else if (endLocatInfo2.AreaNo.Contains("02"))//预混区
                            {
                                sd3.PalletStatus = "1";
                            }
                            else if (endLocatInfo2.AreaNo.Contains("03"))//半成品区
                            {
                                sd3.PalletStatus = "2";
                            }
                            else if (endLocatInfo2.AreaNo.Contains("04"))//脏桶区
                            {
                                sd3.PalletStatus = "3";
                                sd3.LotNo = "";//批次
                                sd3.SkuNo = "";
                                sd3.SkuName = "";
                                sd3.InspectStatus = "0";//待检验
                            }
                        }
                        //修改库存明细
                        Db.Updateable(sd3).ExecuteCommand();
                        //回传桶状态给MES
                        BackPalletStatus(taskInfo.PalletNo, sd3.PalletStatus);
                        break;    
                    #endregion
@@ -558,6 +611,31 @@
        }
        /// <summary>
        /// 回传桶状态给MES
        /// </summary>
        /// <param name="PalletNo">桶号</param>
        /// <param name="Status">0:净桶 1:预混 2:半成品 3:脏桶</param>
        /// <param name="url"></param>
        public void BackPalletStatus(string PalletNo, string Status,string url="")
        {
            try
            {
                var obj = new
                {
                    PalletNo = PalletNo,
                    Status = Status
                };
                string jsonReq = JsonConvert.SerializeObject(obj);
                var response = HttpHelper.DoPost(url, jsonReq, "回传MES桶状态", "MES").ToString();
                var result = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 下发出库单
        /// </summary>
        /// <param name="model"></param>
Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -1,5 +1,4 @@
using Microsoft.IdentityModel.Protocols;
using Newtonsoft.Json;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -30,7 +29,6 @@
        public void GetPalletNo(Pallnetmsg pallnetmsg)
        {
            DataStockDetail pallet = new DataStockDetail();
            SysStorageLocat locat = new SysStorageLocat();
            try
            {
                var house = "W01";//叫桶位置,后续根据位置关联或定义,来判断叫桶位置所属车间
@@ -40,66 +38,13 @@
                switch (pallnetmsg.Type)
                {
                    case "0"://叫净桶
                        List<DataStockDetail> jtpallet = new List<DataStockDetail>();
                        sql += $"and  WareHouseNo = '{house}' and AreaNo like '%01' order by CreateTime desc";
                        jtpallet = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList();
                        if (jtpallet.Count == 0)
                        sql += $"and WareHouseNo = '{house}' and AreaNo like '%01' and PalletStatus = '0' order by CreateTime desc";
                        pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
                        if (pallet == null)
                        {
                            throw new Exception("暂无净桶可分配");
                        }
                        //遍历库存净桶,返回MES验证
                        foreach (var item in jtpallet)
                        {
                            string jsonReq = JsonConvert.SerializeObject(item.PalletNo);
                            var response = HttpHelper.DoPost(url, jsonReq, "回传MES净桶编号", "RCS").ToString();
                            var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据
                            if (obj.Success == "0")
                            {
                                if (obj.Result != "0")//可用,生成小车拉净桶任务
                                {
                                    //查找是否有空余脏桶位
                                    sql = $"select LocatNo from SysStorageLocat where AreaNo like '%04' and WareHouseNo = '{house}' and Status = 0";
                                    locat = Db.Ado.SqlQuery<SysStorageLocat>(sql).FirstOrDefault();
                                    if (locat == null)
                                    {
                                        Db.Ado.BeginTran();
                                        //脏桶区无空余库位,则锁定此净桶库存,并重新遍历
                                        sql = $"UPDATE DataStockDetail Set Status = '5' Where locat ='{locat.LocatNo}'";
                                        Db.Ado.ExecuteCommand(sql);
                                        Db.Ado.CommitTran();
                                        break;
                                    }
                                    //生成调度小车净桶去脏桶区任务
                                    var ztask = new TaskDetial
                                    {
                                        Startport = item.LocatNo,
                                        Endport = locat.LocatNo,
                                        Pallno = item.PalletNo,
                                        Type = "3",
                                        Crtype = "0",
                                        Noticedetailno = int.Parse(noticeno),
                                    };
                                    CreateLotTask(ztask);
                                    continue;
                                }
                                //下发小车任务
                                var task2 = new TaskDetial
                                {
                                    Startport = item.LocatNo,
                                    Endport = pallnetmsg.Location,
                                    Pallno = item.PalletNo,
                                    Type = pallnetmsg.Type,
                                    Crtype = "1",
                                    Noticedetailno = int.Parse(noticeno),
                                };
                                CreateLotTask(task2);
                                return;
                            }
                            else
                            {
                                throw new Exception("回传MES净桶编号失败!");
                            }
                        }
                        break;
                    case "1"://叫料桶(混料)
                        //判断是否有批次号
@@ -117,8 +62,8 @@
                        }
                        noticeno = ArriveMes.Id.ToString();*/
                        //查找库存中是否有可用的此批次的混料桶
                        sql= $"select PalletNo,LocatNo from DataStockDetail where LotNo =  '{pallnetmsg.LotNo}'and AreaNo like '%02' " +
                            $"and WareHouseNo = '{house}' and status = '0' order by CompleteTime desc";
                        sql= $@"select PalletNo,LocatNo from DataStockDetail where LotNo =  '{pallnetmsg.LotNo}'and AreaNo like '%02'
                                   and WareHouseNo = '{house}' and status = '0' and PalletStatus = '1' order by CompleteTime desc";
                        pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
                        if (pallet == null)
                        {
@@ -142,8 +87,8 @@
                        }
                        noticeno = bllSo.Id.ToString();
                        //查找库存中是否有此批次的下料桶
                        sql = $"select PalletNo,LocatNo from DataStockDetail where LotNo =  '{pallnetmsg.LotNo}'and AreaNo like '%03' " +
                            $"and WareHouseNo = '{house}' and status = '0' order by CompleteTime desc";
                        sql = $@"select PalletNo,LocatNo from DataStockDetail where LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%03'
                                    and WareHouseNo = '{house}' and status = '0' and PalletStatus = '2' order by CompleteTime desc";
                        pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
                        if (pallet == null)
                        {
@@ -152,13 +97,46 @@
                        break;
                    case "3"://叫脏桶
                        sql += $"and WareHouseNo = '{house}' and AreaNo like '%04' order by CreateTime desc";
                        pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
                        if (pallet == null)
                        sql += $"and WareHouseNo = '{house}' and AreaNo like '%04' and PalletStatus='3' order by CreateTime desc";
                        List<DataStockDetail> palletList = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList();
                        if (palletList.Count <= 0)
                        {
                            throw new Exception("暂无脏桶可分配");
                        }
                        //遍历库存脏桶,返回MES验证
                        foreach (var item in palletList)
                        {
                            string jsonReq = JsonConvert.SerializeObject(item.PalletNo);
                            var response = HttpHelper.DoPost(url, jsonReq, "回传MES脏桶编号", "RCS").ToString();
                            var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据
                            if (obj.Success == "0")
                            {
                                if (obj.Result != "1")//不可清洗,将脏桶冻结
                                {
                                    item.Status = "5";//异常冻结
                                    //修改该桶库存状态
                                    Db.Updateable(item).ExecuteCommand();
                                    continue;
                                }
                                //下发小车任务
                                var task2 = new TaskDetial
                                {
                                    Startport = item.LocatNo,
                                    Endport = pallnetmsg.Location,
                                    Pallno = item.PalletNo,
                                    Type = pallnetmsg.Type,
                                    Crtype = "1",
                                    Noticedetailno = int.Parse(noticeno),
                                };
                                CreateLotTask(task2);
                                return;
                            }
                            else
                            {
                                throw new Exception("回传MES净桶编号失败!");
                            }
                        }
                        break;
                }
                //下发小车任务
@@ -178,6 +156,102 @@
            catch (Exception ex)
            {
                Db.Ado.RollbackTran();
                throw ex;
            }
        }
        /// <summary>
        /// MES下发将净桶改为脏桶并拉到脏桶区
        /// </summary>
        /// <param name="PalletNo"></param>
        /// <returns></returns>
        public void ChangePalletStatus(string PalletNo)
        {
            try
            {
                var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == PalletNo && w.PalletStatus == "0");
                if (detail == null)
                {
                    throw new Exception($"库存中不存在桶号为:{PalletNo}的库存!");
                }
                //起始目标储位信息
                var statrtLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo == detail.AreaNo && w.LocatNo == detail.LocatNo);
                if (statrtLocat == null)
                {
                    throw new Exception($"该桶所在的储位信息不存在!");
                }
                //开启事务
                Db.BeginTran();
                //查找是否有空余脏桶位
                var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag=="0");
                if (endLocat == null)
                {
                    detail.Status = "5";//异常锁定
                    detail.PalletStatus = "3";//脏桶
                    //修改库存状态
                    Db.Updateable(detail).ExecuteCommand();
                }
                else
                {
                    //生成调度小车净桶去脏桶区任务
                    var ztask = new TaskDetial
                    {
                        Startport = detail.LocatNo,
                        Endport = endLocat.LocatNo,
                        Pallno = PalletNo,
                        Type = "3",
                        Crtype = "2",
                        Noticedetailno = 0,
                    };
                    CreateLotTask(ztask);
                    statrtLocat.Status = "3";//出库中
                    //修改起始储位状态
                    Db.Updateable(statrtLocat).ExecuteCommand();
                    detail.Status = "5";//异常锁定
                    detail.PalletStatus = "3";//脏桶
                    //修改库存状态
                    Db.Updateable(detail).ExecuteCommand();
                }
                Db.CommitTran();
            }
            catch (Exception ex)
            {
                Db.RollbackTran();
                throw ex;
            }
        }
        /// <summary>
        /// MES下发清洗锁定脏桶
        /// </summary>
        /// <param name="pallnetmsg"></param>
        public void CleanPallet(Pallnetmsg pallnetmsg)
        {
            try
            {
                var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == pallnetmsg.PalletNo && w.PalletStatus == "3");
                if (detail == null)
                {
                    throw new Exception($"库存中不存在桶号为:{pallnetmsg.PalletNo}的库存!");
                }
                //下发小车任务
                var task = new TaskDetial
                {
                    Startport = detail.LocatNo,
                    Endport = pallnetmsg.Location,
                    Pallno = detail.PalletNo,
                    Type = "3",
                    Crtype = "1",
                    Noticedetailno = 0,
                    LotNo = "",
                };
                CreateLotTask(task);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
@@ -262,7 +336,7 @@
                {
                    Startport = pallnetmsg.Location,
                    Endport = loction.LocatNo,
                    Pallno = pallnetmsg.Palletno,
                    Pallno = pallnetmsg.PalletNo,
                    Type = pallnetmsg.Type,
                    Crtype = "0",
                    Noticedetailno = int.Parse(noticeno),
@@ -371,7 +445,19 @@
            {
                //开启事务
                Db.BeginTran();
                var na = taskDetial.Crtype == "0"?"入库":"出库";
                var na = "";
                switch (taskDetial.Crtype)
                {
                    case "0":
                        na = "入库";
                        break;
                    case "1":
                        na = "出库";
                        break;
                    case "2":
                        na = "移库";
                        break;
                }
                var bz = "";
                switch (taskDetial.Type)
                {
@@ -459,7 +545,7 @@
                logTaskEntry.IsSuccess = 1;
                logTaskEntry.BackDate = DateTime.Now;
                logTaskEntry.Status = "1";
                if (taskDetial.Crtype == "0")
                if (taskDetial.Crtype == "0" || taskDetial.Crtype == "2")
                {
                    sql = $"UPDATE SysStorageLocat SET Status = '2' where LocatNo = '{taskDetial.Endport}'";
                    if (taskDetial.Type == "2")
@@ -483,7 +569,6 @@
                Db.RollbackTran();
                throw ex;
            }
        }
    }
}
Wms/WMS.BLL/DataServer/StockDetailServer.cs
@@ -409,7 +409,7 @@
        /// <summary>
        /// 添加托盘库存明细
        /// </summary>
        public void InsertStockDetail(string PalletNo,string WareHouseNo,string AreaNo,string LocatNo, string PalletStatus,int userId)
        public void InsertStockDetail(string PalletNo,string WareHouseNo,string AreaNo,string LocatNo, string PalletStatus, string SkuNo, string SkuName, string LotNo, int userId)
        {
            try
            {
@@ -473,6 +473,10 @@
                    IsBale = "0",
                    IsBelt = "0",
                    SkuNo = SkuNo,
                    SkuName = SkuName,
                    LotNo = LotNo,
                    PalletStatus = PalletStatus,
                    IsDel = "0",
Wms/WMS.IBLL/IBllTransServer/IRcsServer.cs
@@ -1,4 +1,5 @@
using System;
using Model.InterFaceModel;
using System;
using System.Collections.Generic;
using System.Text;
using static Model.InterFaceModel.RCSModel;
@@ -15,7 +16,19 @@
        /// <returns></returns>
        public void GetPalletNo(Pallnetmsg pallnetmsg);
        /// <summary>
        /// 将净桶改为脏桶并拉到脏桶区
        /// </summary>
        /// <param name="PalletNo"></param>
        /// <returns></returns>
        public void ChangePalletStatus(string PalletNo);
        /// <summary>
        /// MES下发清洗锁定脏桶
        /// </summary>
        /// <param name="pallnetmsg"></param>
        public void CleanPallet(Pallnetmsg pallnetmsg);
        /// <summary>
        /// 申请储位
        /// </summary>
Wms/WMS.IBLL/IDataServer/IStockDetailServer.cs
@@ -44,6 +44,6 @@
        /// <summary>
        /// 添加托盘库存明细
        /// </summary>
        public void InsertStockDetail(string PalletNo, string WareHouseNo, string AreaNo, string LocatNo, string PalletStatus, int userId);
        public void InsertStockDetail(string PalletNo, string WareHouseNo, string AreaNo, string LocatNo, string PalletStatus, string SkuNo, string SkuName, string LotNo, int userId);
    }
}
Wms/Wms/Controllers/StatisticalController.cs
@@ -457,7 +457,7 @@
                    throw new Exception("未获取到用户信息");
                }
                _stockDetail.InsertStockDetail(model.PalletNo,model.WareHouseNo,model.AreaNo,model.LocatNo,model.PalletStatus,int.Parse(userId));
                _stockDetail.InsertStockDetail(model.PalletNo, model.WareHouseNo, model.AreaNo, model.LocatNo, model.PalletStatus, model.SkuNo, model.SkuName, model.LotNo, int.Parse(userId));
                return Ok(new { code = 0, count = 0, msg = "添加成功", data = "" });
            }
Wms/Wms/Controllers/UpApiController.cs
@@ -437,6 +437,66 @@
                return Ok(result);
            }
        }
        /// <summary>
        /// 将净桶改为脏桶并拉到脏桶区
        /// </summary>
        /// <param name="pallmsg"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult ChangePalletStatus(Pallnetmsg pallmsg)
        {
            var result = new ErpModel { Success = -1, Message = "", };
            try
            {
                if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
                {
                    result.Message = "桶编号不能为空!";
                    return Ok(result);
                }
                _rcsserver.ChangePalletStatus(pallmsg.PalletNo);
                result.Success = 0;
                result.Message = "操作成功!";
                return Ok(result);
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                return Ok(result);
            }
        }
        /// <summary>
        /// MES下发清洗锁定脏桶
        /// </summary>
        /// <param name="pallmsg"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult CleanPallet(Pallnetmsg pallmsg)
        {
            var result = new ErpModel { Success = -1, Message = "", };
            try
            {
                if (string.IsNullOrWhiteSpace(pallmsg.Location))
                {
                    result.Message = "叫料位置为空!";
                    return Ok(result);
                }
                if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
                {
                    result.Message = "桶号为空!";
                    return Ok(result);
                }
                _rcsserver.CleanPallet(pallmsg);
                result.Success = 0;
                result.Message = "叫桶成功!";
                return Ok(result);
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                return Ok(result);
            }
        }
        /// <summary>
        /// RCS申请储位
@@ -459,7 +519,7 @@
                    result.Message = "任务类型为空!";
                    return Ok(result);
                }
                if (string.IsNullOrWhiteSpace(pallmsg.Palletno))
                if (string.IsNullOrWhiteSpace(pallmsg.PalletNo))
                {
                    result.Message = "申请托盘号为空!";
                    return Ok(result);
@@ -566,7 +626,7 @@
                    throw new Exception("未获取到用户信息");
                }*/
                SoResInfo result = _exNoticeSvc.ErpAddExportNotice(model);
                SoResInfo result = _noticeSvc.CreateSoWork(model);
                return Ok(result);
            }