From 552af467417f841e8e64530ab2e64a86fb2774be Mon Sep 17 00:00:00 2001
From: xusc <xu960413@163.com>
Date: Wed, 6 Mar 2024 11:11:34 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A1=E5=88=92?=
 =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 WMS-BS/NFine.Application/OMAY/OMAYApsApp.cs   | 17 +++++++++++++++
 .../Areas/OMAY/Controllers/ApsController.cs   |  5 ++++-
 .../OMAY/Views/Aps/EditInstructionBill.cshtml |  2 ++
 .../Areas/OMAY/Views/Aps/MoProducePlan.cshtml | 21 ++++++++++++++++---
 4 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/WMS-BS/NFine.Application/OMAY/OMAYApsApp.cs b/WMS-BS/NFine.Application/OMAY/OMAYApsApp.cs
index 172d5c1..98d2e1d 100644
--- a/WMS-BS/NFine.Application/OMAY/OMAYApsApp.cs
+++ b/WMS-BS/NFine.Application/OMAY/OMAYApsApp.cs
@@ -269,7 +269,24 @@ UPDATE dbo.ICSMO set DepCode=@DepCode, MTIME=GETDATE(),MUSER='{1}',WorkPoint='{2
 
             var ids = queryParam["ids"].ToString().Split(',');
 
+            var sql4 = @"select count(1) Value
+from ICSMOPick a
+left join ICSMO b on a.MODetailID=b.MODetailID
+left join ICSInventory c on a.InvCode =c.InvCode 
+where 1=1
+and a.EATTRIBUTE1=0
+and a.WorkPoint='"+ WorkPoint + "' and b.ID in ('"+string.Join("','", ids) +"')";
 
+           var isCanUpdateDepCode=  Repository().FindDataSetBySql(sql4.ToString()).Tables[0];
+            if(isCanUpdateDepCode!=null&& isCanUpdateDepCode.Rows.Count > 0)
+            {
+                if (isCanUpdateDepCode.Rows[0]["Value"].ToInt() > 0)
+                {
+                    sql = @" 
+--select @DepCode
+UPDATE dbo.ICSMO set MTIME=GETDATE(),MUSER='{1}',WorkPoint='{2}',APSStatus='Y' <1> <2> <3> WHERE ID in ('{3}')";
+                }
+            }
             string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "MOHKWam/Update";
             var planStartDate = queryParam["planStartDate"].ToStringExt();
             var planEndDate = queryParam["planEndDate"].ToStringExt();
diff --git a/WMS-BS/NFine.Web/Areas/OMAY/Controllers/ApsController.cs b/WMS-BS/NFine.Web/Areas/OMAY/Controllers/ApsController.cs
index 4f9f3c8..69123c9 100644
--- a/WMS-BS/NFine.Web/Areas/OMAY/Controllers/ApsController.cs
+++ b/WMS-BS/NFine.Web/Areas/OMAY/Controllers/ApsController.cs
@@ -20,9 +20,12 @@ namespace NFine.Web.Areas.OMAY.Controllers
             return View();
         }
 
-        public ActionResult EditInstructionBill(string ids)
+        public ActionResult EditInstructionBill(string ids,string line)
         {
             ViewData["ids"] = ids;
+            ViewData["line"] = line;
+
+
             return View();
         }
 
diff --git a/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/EditInstructionBill.cshtml b/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/EditInstructionBill.cshtml
index 46fd3b8..4068da9 100644
--- a/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/EditInstructionBill.cshtml
+++ b/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/EditInstructionBill.cshtml
@@ -26,7 +26,9 @@
         $("#F_EnabledMark").bindSelect();
         
         console.log('@ViewData["ids"]');
+        console.log('@ViewData["line"]');
         $("#ids").val('@ViewData["ids"]'  );
+        $("#F_SSCode").val('@ViewData["line"]'  );
     }
     function submitForm() {
         if (!$('#form1').formValid()) {
diff --git a/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/MoProducePlan.cshtml b/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/MoProducePlan.cshtml
index f15e9a3..e53e8af 100644
--- a/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/MoProducePlan.cshtml
+++ b/WMS-BS/NFine.Web/Areas/OMAY/Views/Aps/MoProducePlan.cshtml
@@ -325,19 +325,34 @@
                     that.query();
                 });
                 $("#NF-InstructionBill").click(function () {
-                    // console.log("编辑指令单");
+                  
                     var objList = $("#gridList").jqGrid('getGridParam', 'selarrrow');
-                    // console.log(objList);
+                    
                     if (objList.length == 0) {
                         $.modalMsg("请选择一条数据", "warning");
                         return;
                     }
+        
+                    let lines = [];
+                    for (var i = 0; i < objList.length; i++) {
+                        let line = $("#gridList").jqGrid('getRowData', objList[i]).DepName;
+                        
+                        lines.push(line);
+                    }
+                    if (lines.length==0) {
+                        $.modalMsg("请选择一条数据", "warning");
+                        return;
+                    }
+                    if (!lines.every(x => x == lines[0])) {
+                        $.modalMsg("不同产线订单无法下发", "warning");
+                        return;
+                    }
                     var idstr = objList.join();
                     // return;
                     $.modalOpen({
                         id: "Form",
                         title: "指令单",
-                        url: "/OMAY/Aps/EditInstructionBill?ids=" + idstr + "",
+                        url: "/OMAY/Aps/EditInstructionBill?ids=" + idstr + "&line=" + lines[0],
                         width: "600px",
                         height: "400px",
                         callBack: function (iframeId) {

From 2beea898fd2b3b19b4cd20c0952dcfc79b01fdfb Mon Sep 17 00:00:00 2001
From: CatMaoo <1205395967@qq.com>
Date: Thu, 7 Mar 2024 10:25:23 +0800
Subject: [PATCH 2/2] =?UTF-8?q?PDA=E5=9B=9E=E6=92=A4=E6=8B=A3=E9=85=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ICSSoft.DataProject/ICSSubmitService.cs   | 121 ++++++++++++++++--
 .../Controllers/WMSBarCoreController.cs       |   2 +-
 2 files changed, 113 insertions(+), 10 deletions(-)

diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
index ab7bb24..759f8d8 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
@@ -1963,7 +1963,7 @@ a.ExtensionID
 
                         tableName = @"ICSCheck a ";
 
-                        where = @" a.WorkPoint='{1}' ";
+                        where = @" a.WorkPoint='{1}' and a.Status='1'";
                     }
                     #endregion
                     where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint);
@@ -10586,17 +10586,69 @@ END";
                 {
                     string lots = string.Empty;
                     string sql = string.Empty;
+                    DataTable dtLotno = new DataTable();
                     int result = 0;
                     string Identification = Guid.NewGuid().ToString();
                     foreach (var item in JsonData)
                     {
+                        sql = @"SELECT  b.LotNo FROM ICSCheck a
+                                INNER JOIN ICSWareHouseLotInfo b ON SUBSTRING(b.LocationCode,1,LEN(a.SelectLevel))=a.SelectLevel
+                                INNER JOIN ICSWarehouse c on b.WarehouseCode=c.WarehouseCode and b.WorkPoint=c.WorkPoint
+                                where a.CheckCode='{0}' and a.WorkPoint='{1}'";
+                        sql = string.Format(sql, item.CheckCode, item.WorkPoint);
+                        dtLotno = DBHelper.SQlReturnData(sql, cmd);
                         //创建盘点单
                         foreach (var itemInfo in item.detail)
                         {
+                            for (int i = dtLotno.Rows.Count - 1; i >= 0; i--)
+                            {
+                                string lotNo = dtLotno.Rows[i]["LotNo"].ToString();
+
+                                // 判断当前 itemInfo.LotNo 是否包含在 dtLotno 中
+                                if (lotNo.Equals(itemInfo.LotNo))
+                                {
+                                    // 移除该行记录
+                                    dtLotno.Rows.RemoveAt(i);
+                                }
+                            }
                             ICSWareHouseLotInfoService.WareHouseLotInfoUpdate(Identification, item.CheckCode, "", itemInfo.LotNo, itemInfo.ActualQuantity, item.User, item.WorkPoint, TransTypeEnum.Check.GetDescription<DBValue>(), item.CheckKind, cmd, language);
 
                             lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
                         }
+
+                        for (int i = 0; i < dtLotno.Rows.Count; i++)
+                        {
+                            ///更新库存
+                            sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=0  WHERE LotNo='{0}' AND WorkPoint='{1}'";
+                            sql = string.Format(sql, dtLotno.Rows[i]["LotNo"].ToString(), item.WorkPoint);
+
+                            if (!DBHelper.ExecuteNonQuery(sql, cmd))
+                            {
+                                throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
+                            }
+
+                            ///添加日志
+                            sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
+                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
+                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
+                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
+                        MTIME,WorkPoint,EATTRIBUTE1)
+                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
+                        a.WarehouseCode,a.LocationCode,'','',a.Quantity,
+                        '{8}','0','{6}','{7}','0','',
+                        '','','',f.F_Account ,f.F_RealName ,
+                        SYSDATETIME() ,a.WorkPoint ,''
+                        FROM ICSWareHouseLotInfo a
+                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
+                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
+                        ";
+                            sql = string.Format(sql, dtLotno.Rows[i]["LotNo"].ToString(), item.WorkPoint, item.User, Identification, item.CheckCode, "", 8, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>(), item.CheckKind);
+
+                            if (!DBHelper.ExecuteNonQuery(sql, cmd))
+                            {
+                                throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
+                            }
+                        }
                         if (string.IsNullOrWhiteSpace(lots))
                         {
                             throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
@@ -17432,18 +17484,69 @@ a.ExtensionID
                             item.TransCode = trans[1];
                         }
                         #region 销售出库
-                        else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription()
-                            || TransType == TransTypeEnum.MOIssueDoc.GetDescription()
-                            || TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
+                        else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
                         {
                             BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
                             //更新源头单据数量
-                            pikTbLogsql += string.Format(@"		update b  set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity ) 
-												from  dbo.ICSWareHouseLotInfo b 
-							inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog  where  TransCode ='{0}' AND TransSequence='{1}' and TransType='15' and WorkPoint='{2}'	 group by LotNo) c 
-							on c.LotNo =b.LotNo ", item.TransCode, item.TransSequence,item.WorkPoint);
+                            pikTbLogsql += string.Format(@"	IF  EXISTS(SELECT * FROM ICSSDN b 
+                                         where b.SDNCode  = '{0}' AND b.workpoint='{1}' and b.SDNQuantity>0)
+                            BEGIN
+                                  RAISERROR('选中单据{0}已经发过料,不能回撤拣料,请先确认!',16,1);
+                                        RETURN
+                            END
+                            delete ICSMOPickMerge from ICSMOPickMerge a
+                            LEFT JOIN ICSSDN b on a.SourceID=b.id and a.WorkPoint=b.WorkPoint
+                            where b.SDNCode = '{0}' AND b.workpoint='{1}'", item.TransCode, item.WorkPoint);
+
+                            
+                            if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
+                            {
+                                throw new Exception("回撤拣料失败!");
+                            }
+                        }
+                        #endregion
+                        #region 生产发料
+                        else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
+                        {
+                            BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription<DBValue>();
+                            //更新源头单据数量
+                            pikTbLogsql += string.Format(@"IF  EXISTS(SELECT * FROM ICSMO b 
+                            INNER join ICSMOPick c on  c.MODetailID=b.MODetailID and c.WorkPoint=b.WorkPoint
+                                         where b.MOCode  = '{0}' AND b.workpoint='{1}' and c.IssueQuantity>0)
+                            BEGIN
+                                  RAISERROR('选中单据{0}已经发过料,不能回撤拣料,请先确认!',16,1);
+                                        RETURN
+                            END
+                            delete ICSMOPickMerge from ICSMOPickMerge a
+							INNER join ICSMOPick c on  a.SourceID=c.id and a.WorkPoint=c.WorkPoint
+                            LEFT JOIN ICSMO b on  c.MODetailID=b.MODetailID and c.WorkPoint=b.WorkPoint and b.MOStatus<>'3'
+                            where b.MOCode = '{0}' AND b.workpoint='{1}'", item.TransCode, item.WorkPoint);
+
+
+                            if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
+                            {
+                                throw new Exception("回撤拣料失败!");
+                            }
+                        }
+                        #endregion
+                        #region 委外发料
+                        else if ( TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
+                        {
+                            BusinessCode = TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>();
+                            //更新源头单据数量
+                            pikTbLogsql += string.Format(@"	IF  EXISTS(SELECT * FROM ICSOutsourcingOrder b 
+                            INNER join ICSOOPick c on  c.OODetailID=b.OODetailID and c.WorkPoint=b.WorkPoint
+                                         where b.OOCode  = '{0}' AND b.workpoint='{1}' and c.IssueQuantity>0)
+                            BEGIN
+                                  RAISERROR('选中单据{0}已经发过料,不能回撤拣料,请先确认!',16,1);
+                                        RETURN
+                            END
+                           delete ICSMOPickMerge from ICSMOPickMerge a
+                           INNER join ICSOOPick c on  a.SourceID=c.id and a.WorkPoint=c.WorkPoint
+                            LEFT JOIN ICSOutsourcingOrder b on  c.OODetailID=b.OODetailID and c.WorkPoint=b.WorkPoint
+                            where b.OOCode = '{0}' AND b.workpoint='{1}'", item.TransCode, item.WorkPoint);
+
 
-                            pikTbLogsql += string.Format(@"	delete dbo.ICSWareHouseLotInfoLog where TransCode ='{0}' AND TransSequence='{1}' and TransType='15' and WorkPoint='{2}'", item.TransCode, item.TransSequence, item.WorkPoint);
                             if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
                             {
                                 throw new Exception("回撤拣料失败!");
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
index 848efb1..34bc6bc 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
@@ -69,7 +69,7 @@ namespace ICSSoft.WebAPI.Controllers
         }
 
         /// <summary>
-        /// 多语言
+        /// 盘点单审核
         /// </summary>
         /// <param name="JsonData"></param>
         /// <returns></returns>