From a619299816f2f632c7c6ba3a1bb869e2c212797d Mon Sep 17 00:00:00 2001
From: fcx <2246384483@qq.com>
Date: 星期五, 19 十二月 2025 14:12:33 +0800
Subject: [PATCH] 对添加巡检单物料编码进行去重
---
StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs | 1316 +++++++++++++++++------------------------------------------
1 files changed, 392 insertions(+), 924 deletions(-)
diff --git a/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs b/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs
index 95cc7b2..7ea5d7b 100644
--- a/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs
@@ -1,973 +1,441 @@
-锘縰sing System.Data;
+锘縰sing Masuit.Tools;
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
-using MES.Service.util;
-using Newtonsoft.Json;
-using SqlSugar;
-using DbType = System.Data.DbType;
namespace MES.Service.service.Warehouse;
public class MesInvItemOutsManager : Repository<MesInvItemOuts>
{
- //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
- //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesInvItemOutsManager.cs
+ private readonly int BILL_TYPE_ID = 200;
+ private readonly int TRANSACTION_NO = 203;
- public List<MesInvItemOuts> GetProductionPickPage(WarehouseQuery query)
+ public bool ReturnRequest(ItemOut oItemOut)
{
- return Db.Queryable<MesInvItemOuts, MesDepots>((a, o) =>
- new JoinQueryInfos(
- JoinType.Left,
- o.DepotCode == a.DepotCode && a.Company == o.Company &&
- a.Factory == o.Factory
- ))
- .Where((a, o) => a.BillTypeId == 200 &&
- a.TransactionNo == 201 &&
- a.Factory == "1000" &&
- a.Company == "1000" &&
- a.IsVisual == 1)
- .WhereIF(query.status != null, (a, o) => a.Status == query.status)
- .WhereIF(query.id != null, (a, o) => a.Id == query.id)
- .Select((a, o) => new MesInvItemOuts
- {
- Id = a.Id,
- Sapstatus = a.Sapstatus,
- OutDate = a.OutDate,
- CheckDate = a.CheckDate,
- BoardItem = a.BoardItem,
- WorkNo = a.WorkNo,
- OutPart = a.OutPart,
- PbillNo = a.PbillNo,
- OutType = a.OutType,
- CreateBy = a.CreateBy,
- Status = a.Status,
- CheckUser = a.CheckUser,
- ItemOutNo = a.ItemOutNo,
- DepotName = o.DepotName // 闇�瑕佸姩鎬佹坊鍔犵殑瀛楁
- })
- .ToPageList(query.PageIndex, query.Limit);
- }
+ var itemOutFrom = oItemOut.from;
+ var itemOutLists = oItemOut.items;
- public MaterialReceipt GetProductionPick(WarehouseQuery query)
- {
- var form = new MaterialReceipt();
- if (query.id != null)
+ return UseTransaction(db =>
{
- var mesInvItemOutsList = GetProductionPickPage(query);
- if (mesInvItemOutsList.Count <= 0) return form;
+ // 鏍规嵁AsnNo鍜孧esNo瀵规槑缁嗚繘琛屽垎缁�
+ var groupedItems = itemOutLists
+ // .GroupBy(item => new { item.MesNo, item.SqNo })
+ .GroupBy(item => new { item.MesNo })
+ .ToList();
- form.ItemOuts = mesInvItemOutsList[0];
- form.ItemsList = getProductionItemsList(query);
- form.InvItemoutCDetails = GetProductionDetails(query);
- }
-
- return form;
- }
-
- private List<MesInvItemOutItems> getProductionItemsList(
- WarehouseQuery query)
- {
- return Db.Queryable<MesInvItemOutItems, MesItems, MesDepTaskInfo>(
- (c, s, f) => new JoinQueryInfos(
- JoinType.Inner, c.ItemNo == s.ItemNo,
- JoinType.Left, f.TaskNo == c.TaskNo && f.ItemNo == c.ItemNo
- ))
- .Where((c, s, f) => c.ItemOutId == query.id)
- .OrderBy(c => c.Id)
- .Select((c, s, f) => new MesInvItemOutItems
+ int result = 1;
+ int count = 1;
+ foreach (var group in groupedItems)
{
- Id = c.Id,
- ItemNo = c.ItemNo,
- Quantity = c.Quantity,
- TaskNo = c.TaskNo,
- Remark = c.Remark,
- ItemName = s.ItemName, // 鍔ㄦ�佸瓧娈�
- ItemModel = s.ItemModel, // 鍔ㄦ�佸瓧娈�
- ItemUnit = SqlFunc.Subqueryable<MesItems>()
- .Where(si => si.ItemUnit == s.ItemUnit)
- .Select(si =>
- SqlFunc.MappingColumn<string>(
- "F_GETUNITNAME(si.Item_Unit)")) // 鍔ㄦ�佸瓧娈�
- })
- .ToList();
- }
+ //if (group.Key.AsnNo == null)
+ //{
+ // throw new NotImplementedException("AsnNo涓嶈兘涓虹┖");
+ //}
- private List<MesInvItemOutCDetails> GetProductionDetails(
- WarehouseQuery query)
- {
- return Db
- .Queryable<MesInvItemOutCDetails, MesItems, MesDepots>(
- (b, c, d) => new JoinQueryInfos(
- JoinType.Left,
- b.ItemNo == c.ItemNo && b.Company == c.Company &&
- b.Factory == c.Factory,
- JoinType.Left,
- d.DepotCode == b.DepotCode && b.Company == d.Company &&
- b.Factory == d.Factory
- ))
- .Where((b, c, d) => b.ItemOutId == query.id)
- .Select((b, c, d) => new MesInvItemOutCDetails
- {
- ForceOutFlag = b.ForceOutFlag,
- DepotSectionCode = b.DepotSectionCode,
- ItemNo = b.ItemNo,
- Quantity = b.Quantity,
- ItemBarcode = b.ItemBarcode,
- ItemName = c.ItemName,
- ItemModel = c.ItemModel,
- DepotName = d.DepotName,
- DepotCode = b.DepotCode
- })
- .ToList();
- }
-
- public bool ScanCode(WarehouseQuery query)
- {
- decimal billTypeId = 200;
- decimal transactionNo = 203;
-
- var count = Db.Queryable<MesInvItemOutCDetails>()
- .Where(a =>
- a.ItemBarcode == query.barcode && a.TaskNo == query.billNo)
- .Count();
-
- if (count > 0) throw new Exception("鏉$爜閲嶅鎵弿锛岃鏍稿锛�");
-
- //楠岃瘉鏉$爜
- var mesInvItemStocks = Db.Queryable<MesInvItemStocks>()
- .Where(a => a.ItemBarcode == query.barcode
- && a.Quantity > 0).Single();
-
- if (mesInvItemStocks == null)
- throw new Exception(query.barcode + "搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒");
-
- //楠岃瘉鍑哄簱鍗昺es_inv_item_outs
- var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
- .Where(d => d.ItemOutNo == query.billNo
- && d.BillTypeId == billTypeId &&
- d.TransactionNo == transactionNo).Single();
-
- //鍑哄簱鍗曠殑鏍¢獙
- if (mesInvItemOuts == null)
- throw new Exception("鍑哄簱鍗� " + query.billNo + " 涓嶅瓨鍦紝璇风‘璁わ紒");
-
- //鏈鏍哥殑涓嶅厑璁哥户缁�
- if (mesInvItemOuts.Status == null || mesInvItemOuts.Status == 0)
- throw new Exception("鍑哄簱鍗� " + query.billNo + "鏈鏍�");
-
- //宸叉帹閫佺殑涓嶅厑璁哥户缁�
- if (mesInvItemOuts.Nflag == 1)
- throw new Exception("鍑哄簱鍗� " + query.billNo + "宸茬粡鎺ㄩ�侊紝鏃犳硶閲嶅鎺ㄩ��");
-
- var depotCodeOut = mesInvItemOuts.DepotCode ?? "0";
- var depotsCodeStock = mesInvItemStocks.DepotsCode ?? "0";
-
- if (!depotCodeOut.Equals(depotsCodeStock))
- {
- // 鍒涘缓閿欒娑堟伅
- var errorMessage =
- $"002[鏉$爜浠撳簱{depotsCodeStock}涓庣敵璇蜂粨搴搟depotCodeOut}涓嶄竴鑷达紝璇锋牳瀵癸紒";
-
- throw new Exception(errorMessage);
- }
-
- var StocksNum = mesInvItemStocks.Quantity;
-
- var sql = string.Format(
- @"select nvl(SUM(S.QUANTITY),0) - nvl(SUM(S.TL_QTY),0)
- from MES_INV_ITEM_OUT_ITEMS S
- LEFT JOIN mes_inv_item_outs d
- ON S.ITEM_OUT_ID = D.ID
- where d.item_out_no = '{0}'
- and d.bill_type_id = {1}
- and d.transaction_no = {2}
- AND S.item_no = '{3}'
- and nvl(d.status, 0) = 1
- and nvl(d.nflag, 0) = 0", query.billNo, billTypeId,
- transactionNo,
- mesInvItemStocks.ItemNo);
-
- var cqty = Db.Ado.SqlQuerySingle<decimal>(sql);
-
- if (cqty == null)
- throw new Exception("鐗╂枡" + mesInvItemStocks.ItemNo +
- "鐨勮緟鍔╁睘鎬т笌鏉$爜涓嶄竴鑷达紒璇锋鏌�");
-
- if (cqty < StocksNum) throw new Exception("璇风‘璁ゅ彂鏂欐暟閲�");
-
- //璋冪敤瀛樺偍杩囩▼
- try
- {
- // 瀹氫箟杈撳嚭鍙傛暟
- var outputResult = new SugarParameter("C_RESULT", null,
- DbType.Int32, ParameterDirection.Output,
- 4000);
-
- var outputMessage = new SugarParameter("MSG", null, DbType.String,
- ParameterDirection.Output, 4000);
-
- // 瀹氫箟杈撳叆鍙傛暟
- var parameters = new List<SugarParameter>
- {
- new("p_item_barcode", query.barcode,
- DbType.String, ParameterDirection.Input),
- new("p_bill_no", query.billNo, DbType.String,
- ParameterDirection.Input),
- new("pi_factory", "1000", DbType.String,
- ParameterDirection.Input),
- new("pi_company", "1000", DbType.String,
- ParameterDirection.Input),
- new("c_user", query.userName, DbType.String,
- ParameterDirection.Input),
- outputResult,
- outputMessage
- };
-
- // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
- Db.Ado.ExecuteCommand(
- "BEGIN MES_CG_UPDATE_BARCODES(:p_item_barcode, :p_bill_no, :pi_factory, :pi_company, :c_user, :C_RESULT, :MSG); END;",
- parameters.ToArray());
-
- // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
- var resultValue = outputResult.Value?.ToString();
- var messageValue = outputMessage.Value?.ToString();
-
- if ("1".Equals(resultValue)) throw new Exception("鏉$爜鎵i櫎澶辫触");
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
-
- // 鍙橀噺鐢ㄤ簬淇濆瓨鏌ヨ缁撴灉
- decimal? C_SQ_QTY = 0;
- decimal? C_OK_QTY = 0;
- var c_result = string.Empty;
- var C_COUNT = 0;
-
-
- sql = string.Format(@"
- SELECT SUM(C.QUANTITY) AS SQ_QTY, SUM(D.QUANTITY_OK) AS OK_QTY
- FROM MES_INV_ITEM_OUT_ITEMS C
- LEFT JOIN (
- SELECT ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK
- FROM MES_INV_ITEM_OUT_C_DETAILS
- GROUP BY ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO
- ) D
- ON D.ITEM_OUT_ID = C.ITEM_OUT_ID
- AND D.ITEM_NO = C.ITEM_NO
- AND D.RK_NO = C.RK_NO
- AND NVL(C.PBILL_NO, '0') = NVL(D.PBILL_NO, '0')
- WHERE C.ITEM_OUT_ID = {0}", mesInvItemOuts.Id);
-
- var queryResult = Db.Ado.SqlQuerySingle<dynamic>(sql);
-
- C_SQ_QTY = queryResult?.SQ_QTY;
- C_OK_QTY = queryResult?.OK_QTY;
-
- // 鍒ゆ柇閫昏緫
- if (C_SQ_QTY < C_OK_QTY) throw new Exception("鎵弿鏁伴噺瓒呰繃鐢宠鏁伴噺,璇烽噸鏂版壂鎻忥紒");
-
- if (C_SQ_QTY == C_OK_QTY) return true;
-
- return false;
- }
-
-
- public bool Audit(WarehouseQuery query)
- {
- // 瀹℃牳鍓嶆牎楠�
- Validate(query);
- query.status = 1;
- //瀹℃牳
- return Update(query);
- }
-
- public bool SetNFlag(WarehouseQuery query)
- {
- return Db.Updateable<MesInvItemOuts>()
- .SetColumns(s => s.Nflag == 1)
- .Where(s => s.ItemOutNo == query.billNo)
- .ExecuteCommand() > 0;
- }
-
- public bool DeApprove(WarehouseQuery query)
- {
- query.date = null;
- query.status = 0;
- return Update(query);
- }
-
- private bool Update(WarehouseQuery entity)
- {
- var userName = entity.userName ?? "system";
- return Db.Updateable<MesInvItemOuts>()
- .SetColumns(s => s.Status == entity.status)
- .SetColumns(s => s.CheckUser == userName)
- .SetColumns(s => s.CheckDate == DateTime.Now)
- .Where(s => s.Id == entity.id).ExecuteCommand() > 0;
- }
-
-
- public void Validate(WarehouseQuery query)
- {
- // 鏍¢獙鍗曞彿鏄惁姝g‘
- var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
- .Where(o => o.ItemOutNo == query.billNo)
- .Single();
-
- if (mesInvItemOuts == null)
- throw new Exception("娌℃壘鍒�" + query.billNo + " 瀵瑰簲鐨勯噰璐��璐у崟锛岃妫�鏌�");
-
- // 鏍¢獙瀛愯〃鏁版嵁
- var itemOutItems = Db.Queryable<MesInvItemOutItems>()
- .Where(o => o.ItemOutId == mesInvItemOuts.Id)
- .ToList();
-
- var sql = string.Empty;
- var P_Msg = string.Empty;
-
- foreach (var item in itemOutItems)
- {
- // 鍒ゆ柇鐢宠鏁伴噺鏄惁澶т簬鍓╀綑鍙��鏁伴噺
- sql = string.Format(
- @"SELECT NVL(s1.RK_QTY, 0) - NVL(KT_QTY, 0) KT_QTY --鍓╀綑鍙��
- FROM MES_INV_ITEM_OUT_ITEMS C
- LEFT JOIN (SELECT SUM(QUANTITY) KT_QTY,
- ITEM_NO,
- PBILL_NO,
- RK_NO,
- WORK_LINE
- FROM MES_INV_ITEM_OUT_ITEMS
- GROUP BY ITEM_NO, PBILL_NO, WORK_LINE,RK_NO) U
- ON U.ITEM_NO = C.ITEM_NO
- AND U.WORK_LINE = C.WORK_LINE
- AND U.PBILL_NO = C.PBILL_NO
- AND U.RK_NO = C.RK_NO
- LEFT JOIN (SELECT SUM(QUANTITY) RK_QTY,
- ITEM_NO,
- EBELN,
- WORK_LINE,BILL_NO
- FROM MES_INV_ITEM_IN_C_ITEMS
- GROUP BY ITEM_NO, EBELN, WORK_LINE,BILL_NO) s1
- ON S1.ITEM_NO = C.ITEM_NO
- AND S1.WORK_LINE = C.WORK_LINE
- AND S1.EBELN = C.PBILL_NO
- AND S1.BILL_NO = C.RK_NO
- WHERE C.ID = {0}", item.Id);
- var sy_Qty = Db.Ado.SqlQuery<decimal>(sql);
-
- if (sy_Qty != null && sy_Qty[0] < 0)
- {
- P_Msg =
- $"閲囪喘璁㈠崟锛歿item.PbillNo}锛岃锛歿item.WorkLine}锛岀墿鏂欙細{item.ItemNo} 鐢宠鏁伴噺澶т簬鍓╀綑鍙敹鏁伴噺";
- throw new Exception(P_Msg);
- }
-
- // 鍒ゆ柇琛屾槸鍚﹂噸澶�
- var cf_Num = Db.Queryable<MesInvItemOutItems>()
- .Where(s1 => s1.ItemNo == item.ItemNo &&
- s1.WorkLine == item.WorkLine &&
- s1.PbillNo == item.PbillNo &&
- s1.ItemOutId == mesInvItemOuts.Id &&
- s1.RkNo == item.RkNo)
- .Count();
-
- if (cf_Num > 1)
- {
- P_Msg =
- $"閲囪喘璁㈠崟锛歿item.PbillNo}锛岃锛歿item.WorkLine}锛岀墿鏂欙細{item.ItemNo}閲嶅璇峰垹闄ゅ叾涓竴鏉℃暟鎹�";
- throw new Exception(P_Msg);
- }
- }
-
- // 鏍¢獙涓昏〃鍐呭鏄惁琚垹鎺�
- // 涓昏〃浠撳簱缂栫爜
- if (string.IsNullOrEmpty(mesInvItemOuts.DepotCode))
- {
- P_Msg = "浠撳簱缂栫爜涓虹┖锛岃妫�鏌�";
- throw new Exception(P_Msg);
- }
-
- var supplierExists = Db.Queryable<MesSupplier>()
- .Any(supplier => supplier.SuppNo == mesInvItemOuts.SuppNo);
-
- if (!supplierExists)
- {
- P_Msg = $"渚涘簲鍟嗙紪鐮� {mesInvItemOuts.SuppNo} 鍦ㄧ郴缁熶腑涓嶅瓨鍦紝璇锋鏌�";
- throw new Exception(P_Msg);
- }
-
- // 瀛愯〃琛屼笌涓昏〃绗﹀悎鎬ф牎楠�
- foreach (var j in itemOutItems)
- {
- // 鏍¢獙瀛愯〃瀵瑰簲閲囪喘璁㈠崟鐨勪緵搴斿晢缂栫爜
- var c_SuppNo = Db.Queryable<MesRohIn, MesSupplier>(
- (roh, supp) => new JoinQueryInfos(
- JoinType.Left,
- roh.Supplier == supp.Id.ToString()
- ))
- .Where(roh => roh.BillNo == j.PbillNo)
- .Select((roh, supp) => supp.SuppNo)
- .Single();
-
- if (c_SuppNo == null)
- {
- P_Msg = $"瀛愯〃琛屼緵搴斿晢缂栫爜 {c_SuppNo} 鍦ㄧ郴缁熶腑鏈壘鍒�";
- throw new Exception(P_Msg);
- }
-
- if (mesInvItemOuts.SuppNo != c_SuppNo)
- {
- P_Msg =
- $"瀛愯〃閲囪喘璁㈠崟琛岀殑渚涘簲鍟嗙紪鐮� {c_SuppNo} 涓庝富琛ㄤ緵搴斿晢缂栫爜 {mesInvItemOuts.SuppNo} 涓嶄竴鑷达紝璇锋鏌�";
- throw new Exception(P_Msg);
- }
-
- // 鏍¢獙瀛愯〃濮斿閲囪喘绫诲瀷鍜屼富琛ㄧ被鍨嬫槸鍚︿竴鑷�
- if (j.FType != mesInvItemOuts.FType)
- {
- P_Msg =
- $"瀛愯〃濮斿绫诲瀷锛歿j.FType}锛屼笌涓昏〃濮斿绫诲瀷锛歿mesInvItemOuts.FType}锛屼笉涓�鑷达紝璇锋鏌�";
- throw new Exception(P_Msg);
- }
-
- // 妫�鏌ュ瓙琛ㄤ粨搴撴槸鍚﹀拰涓昏〃浠撳簱涓�鑷�
- if (j.DepotCode != mesInvItemOuts.DepotCode)
- {
- P_Msg =
- $"瀛愯〃浠撳簱缂栫爜锛歿j.DepotCode} 涓庝富琛ㄤ粨搴撶紪鐮侊細{mesInvItemOuts.DepotCode}锛屼笉涓�鑷达紝璇锋鏌�";
- throw new Exception(P_Msg);
- }
- }
- }
-
- public OutItemDto SaveCombination(OutItemDto dto)
- {
- var mesInvItemOuts = dto.Form;
- mesInvItemOuts.Status = 0;
- mesInvItemOuts.BoardFlag = 0;
- mesInvItemOuts.Sapstatus = 0;
- mesInvItemOuts.OutStatus = 0;
- mesInvItemOuts.ItemFlag = 0;
- mesInvItemOuts.IsVisual = 1;
- mesInvItemOuts.TransactionNo = 203;
- mesInvItemOuts.Factory = "1000";
- mesInvItemOuts.Company = "1000";
-
- //杩斿洖ID
- var id = Db.Insertable(mesInvItemOuts)
- .ExecuteReturnIdentity();
-
- if (id <= 0) throw new Exception("鎻掑叆閿欒");
-
- mesInvItemOuts.Id = id;
- dto.SaveItems.ForEach(s =>
- {
- s.ItemOutId = id;
- s.Factory = "1000";
- s.Company = "1000";
- s.Status = 0;
- s.DepotCode = mesInvItemOuts.DepotCode;
- s.FType = mesInvItemOuts.FType;
- s.CreateBy = mesInvItemOuts.CreateBy;
- s.CreateDate = mesInvItemOuts.CreateDate;
- });
-
- var insertable = Db.Insertable(dto.SaveItems)
- .ExecuteCommand();
-
- if (insertable < 0) throw new Exception("鎻掑叆閿欒");
-
- var query = new WarehouseQuery();
- query.id = id;
- dto.SelectItems = GetItems(query);
-
- return dto;
- }
-
- public List<MesInvItemOuts> GetPage(WarehouseQuery query)
- {
- return
- Db.Queryable<MesInvItemOuts, MesDepots, MesSupplier, SysUser,
- SysUser>((a, e, i, u1, u3) =>
- new JoinQueryInfos(
- JoinType.Left,
- a.DepotCode == e.DepotCode
- && e.Factory == a.Factory
- && e.Company == a.Company,
- JoinType.Left,
- a.SuppNo == i.SuppNo,
- JoinType.Left,
- a.CreateBy == u1.Fcode,
- JoinType.Left,
- a.CheckUser == u3.Fcode))
- .WhereIF(query.id > 0,
- (a, e, i, u1, u3) => a.Id == query.id)
- .WhereIF(!string.IsNullOrEmpty(query.billNo),
- (a, e, i, u1, u3) => a.ItemOutNo == query.billNo)
- .Select((a, e, i, u1, u3) => new MesInvItemOuts
+ if (group.Key.MesNo == null)
{
- Id = a.Id,
- DepotCode = a.DepotCode,
- Fmrmode = a.Fmrmode,
- CheckDate = a.CheckDate,
- CheckUser = a.CheckUser,
- States = a.States,
- Reason = a.Reason,
- Remark = a.Remark,
- Nflag = a.Nflag,
- FType = a.FType,
- SuppNo = a.SuppNo,
- DepotName = e.DepotName,
- SuppName = i.SuppName,
- CreateByFname = u1.Fname,
- CheckUserFname = u3.Fname,
- CreateDate = a.CreateDate,
- CreateBy = a.CreateBy,
- Status = a.Status,
- ItemOutNo = a.ItemOutNo
- }).ToPageList(query.PageIndex, query.Limit);
+ throw new NotImplementedException("鍏ュ簱鍗曞崟鍙蜂笉鑳戒负绌�");
+ }
+
+ //if (group.Key.SqNo == null)
+ //{
+ // throw new NotImplementedException("閫�璐х敵璇峰崟琛屽彿涓嶈兘涓虹┖");
+ //}
+
+ // 鍒涘缓涓�涓复鏃剁殑itemOutFrom瀵硅薄锛屼娇鐢ㄥ垎缁勭殑Key浣滀负涓昏灞炴��
+ var tempItemOutFrom = new ItemOutFrom
+ {
+ //AsnNo = group.Key.AsnNo,
+ MesNo = group.Key.MesNo,
+ //SqNo = group.Key.SqNo,
+ // 缁ф壙鍘熷itemOutFrom鐨勫叾浠栧睘鎬�
+ //RtnNo = itemOutFrom.RtnNo+ "-"+count.ToString(),
+ RtnNo = itemOutFrom.RtnNo,
+ Type = itemOutFrom.Type,
+ CreateBy = itemOutFrom.CreateBy,
+ FMRMODE = itemOutFrom.FMRMODE,
+ DepotId = itemOutFrom.DepotId,
+ SupperId = itemOutFrom.SupperId
+ };
+ count++;
+ // 鏍规嵁Type鎵ц涓嶅悓鐨勯�昏緫
+ switch (tempItemOutFrom.Type)
+ {
+ case "1":
+ {
+ var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
+ .Where(s => s.BillTypeId == BILL_TYPE_ID
+ && s.TransactionNo == TRANSACTION_NO
+ && s.ItemOutNo == tempItemOutFrom.RtnNo
+ && s.Sapno == tempItemOutFrom.SqNo
+ )
+ .Count();
+
+ if (mesInvItemOuts > 0)
+ {
+ throw new NotImplementedException(
+ tempItemOutFrom.RtnNo +
+ "鐨勯��鏂欑敵璇峰崟宸茬粡瀛樺湪");
+ }
+
+ // 涓哄綋鍓嶅垎缁勪繚瀛樻暟鎹�
+ var groupResult = Save(tempItemOutFrom, group.ToList());
+ if (!groupResult)
+ {
+ result = 0;
+ }
+
+ break;
+ }
+ case "4":
+ var removeResult = Remove(tempItemOutFrom);
+ if (!removeResult)
+ {
+ result = 0;
+ }
+
+ break;
+ default:
+ result = 0;
+ break;
+ }
+ }
+
+ return result;
+ }) > 0;
+
+
}
- public List<MesInvItemOutCDetails> GetScanBarcode(WarehouseQuery query)
+ private bool Save(ItemOutFrom from, List<ItemOutList> items)
{
- return Db.Queryable<MesInvItemOutCDetails, MesInvItemBarcodes, MesItems,
- MesDepots>(
- (b, bar, c, d) => new
- JoinQueryInfos(
- JoinType.Left, b.ItemBarcode == bar.ItemBarcode,
- JoinType.Left, b.ItemNo == c.ItemNo &&
- b.Company == c.Company &&
- b.Factory == c.Factory,
- JoinType.Left, b.DepotCode == d.DepotCode &&
- b.Company == d.Company &&
- b.Factory == d.Factory
- ))
- .Where((b, bar, c, d) => b.ItemOutId == query.id)
- .Select((b, bar, c, d) => new MesInvItemOutCDetails
+ var mesInvItemIns = Db.Queryable<MesInvItemIns>()
+ .Where(s => s.BillTypeId == 100
+ && s.TransctionNo == "101"
+ && s.Id == Convert.ToInt32(from.MesNo)
+ ).First();
+
+ //if (mesInvItemIns == null)
+ //{
+ // throw new NotImplementedException("閲囪喘鍏ュ簱涓嶅瓨鍦�");
+ //}
+
+ var mesDepots = Db.Queryable<MesDepots>()
+ .Where(s => s.DepotId == Decimal.Parse(from.DepotId)).First();
+
+ var mesLinkU9 = Db.Queryable<MesLinkU9>()
+ .Where(s => s.TableType == "MES_SUPPLIER"
+ && s.U9Id == from.SupperId).First();
+
+ if (mesLinkU9 == null)
+ {
+ throw new NotImplementedException("渚涘簲鍟咺D涓嶅瓨鍦ㄦ垨鏈悓姝ヤ簬U9");
+ }
+
+ var mesSupplier = Db.Queryable<MesSupplier>()
+ .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId))
+ .First();
+
+ if (mesDepots == null)
+ {
+ throw new NotImplementedException("[" + from.DepotId +
+ "]浠撳簱涓嶅瓨鍦紝璇峰悓姝ョ粰MES");
+ }
+
+ if (mesSupplier == null)
+ {
+ throw new NotImplementedException("[" + from.SupperId +
+ "]渚涘簲鍟嗕笉瀛樺湪锛岃鍚屾缁橫ES");
+ }
+
+ var nextSequenceValue =
+ Db.Ado.SqlQuery<decimal>("SELECT SEQ_OUT_ID.NEXTVAL FROM DUAL")
+ .First();
+
+ // var billCode =
+ // Db.Ado.SqlQuery<string>(
+ // "SELECT GETBILLCODE1('1000', '1000', 'TLSQ') FROM DUAL")
+ // .First();
+ var billCode = from.RtnNo;
+
+ // 鍒涘缓閲囪喘閫�鏂欏崟璁板綍
+ var mesInvItemOuts = new MesInvItemOuts
+ {
+ Id = nextSequenceValue,
+ ItemOutNo = billCode,
+ Status = 1,
+ CreateBy = "PL017",
+ CreateDate = DateTime.Now,
+ BillTypeId = 200,
+ TransactionNo = 203,
+ DepotCode = mesDepots.DepotCode,
+ FType = 0,
+ OutStatus = 0,
+ IsVisual = 1,
+ Factory = "1000",
+ Company = "1000",
+ SuppNo = mesSupplier.SuppNo,
+ ItemFlag = 0,
+ BoardFlag = 0,
+ OutType = "閲囪喘閫�鏂�",
+ Nflag = 0,
+ Fmrmode = from.FMRMODE,
+ Sapno = from.SqNo,
+ Organizeid = "1002011210000095",
+ };
+
+ // 鍒涘缓閲囪喘閫�鏂欏崟璁板綍
+ var mesInvItemOutItems = new List<MesInvItemOutItems>();
+
+ foreach (var itemOutList in items)
+ {
+ // 妫�鏌ュ繀瑕佸瓧娈垫槸鍚︿负绌�
+ //if (string.IsNullOrEmpty(itemOutList.SrcDocNo))
+ //{
+ // throw new NotImplementedException("閲囪喘璁㈠崟鍙蜂笉鑳戒负绌�");
+ //}
+
+ //if (string.IsNullOrEmpty(itemOutList.SrcDocLineNo))
+ //{
+ // throw new NotImplementedException("閲囪喘璁㈠崟琛屽彿涓嶈兘涓虹┖");
+ //}
+
+ //if (string.IsNullOrEmpty(itemOutList.AsnLineNo))
+ //{
+ // throw new NotImplementedException("ASN琛屽彿涓嶈兘涓虹┖");
+ //}
+
+ if (string.IsNullOrEmpty(itemOutList.itemId))
{
- Quantity = b.Quantity,
- DepotSectionCode = b.DepotSectionCode,
- DepotCode = b.DepotCode,
- ItemNo = b.ItemNo,
- ItemBarcode = b.ItemBarcode,
- ItemName = c.ItemName,
- ItemModel = c.ItemModel,
- DepotName = d.DepotName,
- Unit = bar.Unit
- }).ToList();
- }
+ throw new NotImplementedException("鐗╂枡ID涓嶈兘涓虹┖");
+ }
- //MESInvItemOutItems
- public List<MESInvItemOutItems> GetItems(WarehouseQuery query)
- {
- var where = "and 1=1";
- if (query.id != null) where = "and ITEM_OUT_ID = '" + query.id + "'";
+ var mesRohInData = Db.Queryable<MesRohInData>()
+ .Where(s => s.BillNo == itemOutList.SrcDocNo
+ && s.OrderLineId == itemOutList.SrcDocLineNo)
+ .First();
- var sql = string.Format(@"select * from (
- SELECT C.REMARK, C.PBILL_NO, C.ITEM_OUT_ID, C.RK_QTY,
- C.TL_QTY, C.WORK_LINE, C.QUANTITY, C.ITEM_NO,
- NVL(s1.RK_QTY, 0) - NVL(KT_QTY, 0) KT_QTY,
- R.DEPOT_SECTION_CODE, S.ITEM_MODEL, S.ITEM_NAME,
- K.CGB014, Q.STAFF_NAME, R.DEPOT_CODE
- FROM MES_INV_ITEM_OUT_ITEMS C JOIN MES_ITEMS S ON C.ITEM_NO = S.ITEM_NO
- LEFT JOIN (SELECT SUM(QUANTITY) KT_QTY, ITEM_NO, PBILL_NO, WORK_LINE, RK_NO
- FROM MES_INV_ITEM_OUT_ITEMS
- GROUP BY ITEM_NO, PBILL_NO, WORK_LINE, RK_NO) U
- ON U.ITEM_NO = C.ITEM_NO AND U.WORK_LINE = C.WORK_LINE
- AND U.PBILL_NO = C.PBILL_NO AND U.RK_NO = C.RK_NO
- LEFT JOIN (SELECT SUM(QUANTITY) RK_QTY, ITEM_NO, EBELN, WORK_LINE, BILL_NO
- FROM mes_inv_item_in_c_details
- GROUP BY ITEM_NO, EBELN, WORK_LINE, BILL_NO) s1
- ON S1.ITEM_NO = C.ITEM_NO AND S1.WORK_LINE = C.WORK_LINE
- AND S1.EBELN = C.PBILL_NO AND S1.BILL_NO = C.RK_NO
- LEFT JOIN MES_ROH_IN_DATA K
- ON K.BILL_NO = C.PBILL_NO AND C.WORK_LINE = K.PURCHASE_ORDER_LINE_NUMBER
- left join MES_ROH_IN H on H.BILL_NO = K.BILL_NO
- left join MES_STAFF Q on H.PURCHASER = Q.STAFF_NAME
- LEFT JOIN MES_SUPPLIER T ON H.SUPPLIER = T.ID
- LEFT JOIN (select *
- from (SELECT row_number() over (partition by DEPOT_CODE, ITEM_NO, EBELN order by CREATE_DATE) rn, DEPOT_CODE, DEPOT_SECTION_CODE, ITEM_NO,
- EBELN FROM mes_inv_item_in_c_details
- where EBELN is not null)
- where rn = 1 and ROWNUM = 1) R ON R.ITEM_NO = C.ITEM_NO) where 1=1 {0}",
- where);
- var results = Db.Ado.SqlQuery<MESInvItemOutItems>(sql);
- return results;
- }
+ //if (mesRohInData == null)
+ //{
+ // throw new NotImplementedException("閲囪喘璁㈠崟涓嶅瓨鍦�");
+ //}
- public OutItemDto GetSumItem(WarehouseQuery query)
- {
- var mesInvItemOuts = base.GetSingle(it => it.ItemOutNo == query.billNo);
- if (mesInvItemOuts == null) throw new Exception("閲囪喘閫�璐у崟涓嶅瓨鍦�");
+ //var deliveryDetail = Db.Queryable<DeliveryDetail>()
+ // .Where(a => Int32.Parse(a.ZzitemId) ==
+ // Int32.Parse(itemOutList.AsnLineNo))
+ // .Count();
- var sql = string.Format(@"SELECT DEPOT ,ITEM_NO,ITEM_MODEL,
- ITEM_NAME,QTY FROM (SELECT SUM(QTY) QTY, DEPOT, ITEM_NO, ITEM_MODEL, ITEM_NAME
- FROM (SELECT f_get_section_code2('1000', '1000', b.ITEM_NO,'{0}') DEPOT,
- B.ITEM_NO, A.ITEM_MODEL,A.ITEM_NAME,to_char(nvl(b.QUANTITY, 0) - nvl(D.QUANTITY_OK, 0),'FM9999999990.00') QTY
- FROM MES_INV_ITEM_OUT_ITEMS B LEFT JOIN mes_ITEMS A
- ON B.ITEM_NO = A.ITEM_NO LEFT JOIN (SELECT ITEM_OUT_ID,
- ITEM_NO,PBILL_NO,SUM(QUANTITY) QUANTITY_OK,RK_NO
- FROM MES_INV_ITEM_OUT_C_DETAILS
- WHERE ITEM_OUT_ID = {1}
- GROUP BY ITEM_OUT_ID,ITEM_NO,PBILL_NO,RK_NO) D
- ON D.ITEM_OUT_ID = B.ITEM_OUT_ID
- AND D.ITEM_NO = B.ITEM_NO
- AND D.PBILL_NO = B.PBILL_NO
- AND D.RK_NO = B.RK_NO
- WHERE B.ITEM_OUT_ID = {1}
- AND nvl(b.QUANTITY, 0) - nvl(D.QUANTITY_OK, 0) > 0
- ORDER BY f_get_section_code2('1000','1000',b.ITEM_NO,'{0}'),
- A.ITEM_MODEL,A.ITEM_NAME)
- GROUP BY DEPOT, ITEM_NO, ITEM_MODEL, ITEM_NAME)",
- mesInvItemOuts.DepotCode,
- mesInvItemOuts.Id);
+ //if (deliveryDetail <= 0)
+ //{
+ // throw new NotImplementedException("[" + from.AsnNo + "]鐨勬槑缁嗚[" +
+ // itemOutList.AsnLineNo +
+ // "]涓嶅瓨鍦�");
+ //}
- var results = Db.Ado.SqlQuery<InventoryItem>(sql);
+ var itemIdLinkU9 = Db.Queryable<MesLinkU9>()
+ .Where(s => s.TableType == "MES_ITEMS"
+ && s.U9Id == itemOutList.itemId &&s.OrgId== "1002011210000095").First();
- var mesInvItemStocks = Db.Queryable<MesInvItemStocks>()
- .Where(a => a.ItemBarcode == query.barcode).Single();
+ if (mesLinkU9 == null)
+ {
+ throw new NotImplementedException("渚涘簲鍟咺D涓嶅瓨鍦ㄦ垨鏈悓姝ヤ簬U9");
+ }
- var dto = new OutItemDto();
- dto.SumItem = results;
+ var mesItems = Db.Queryable<MesItems>()
+ .Where(s => s.Id == Decimal.Parse(itemIdLinkU9.MesId))
+ .First();
- if (mesInvItemStocks != null)
- {
- dto.ItemNo = mesInvItemStocks.ItemNo;
- dto.Quantity = mesInvItemStocks.Quantity;
+ if (mesItems == null)
+ {
+ throw new NotImplementedException("[" + itemOutList.itemId +
+ "]鐗╂枡涓嶅瓨鍦紝璇峰悓姝ョ粰MES");
+ }
+ var mesUnit = Db.Queryable<MesUnit>()
+ .Where(s => s.Id == int.Parse(mesItems.ItemUnit)).First();
+
+ if (itemOutList.SrcDocNo!=null&& itemOutList.SrcDocNo!="")
+ {
+ var mesInvItemInCItems = Db.Queryable<MesInvItemInCItems>()
+ .Where(s => s.ItemInId == mesInvItemIns.Id
+ && s.ItemNo == mesItems.ItemNo
+ && s.Ebeln == itemOutList.SrcDocNo
+ && s.EbelnLineNo ==
+ Decimal.Parse(itemOutList.SrcDocLineNo)
+ && s.SuppNo == mesSupplier.SuppNo
+ ).First();
+
+ if (mesInvItemInCItems == null)
+ {
+ throw new NotImplementedException("娌℃湁瀵瑰簲鐨勫叆搴撴槑缁�");
+ }
+
+
+
+
+ // 纭繚CbillNo涓嶄负绌�
+ if (string.IsNullOrEmpty(mesInvItemIns.CbillNo))
+ {
+ throw new NotImplementedException("鍏ュ簱鍗曞叧鑱旂殑閲囪喘鍗曞彿涓嶈兘涓虹┖");
+ }
+
+
+ mesInvItemOutItems.Add(new MesInvItemOutItems
+ {
+ ItemOutId = nextSequenceValue,
+ ItemNo = mesItems.ItemNo,
+ Quantity = Decimal.Parse(itemOutList.qty),
+ CreateBy = "PL017",
+ CreateDate = DateTime.Now,
+ Factory = "1000",
+ Company = "1000",
+ DepotCode = mesDepots.DepotCode,
+ WorkNo = itemOutList.SrcDocNo, // 纭繚WorkNo鏈夊��
+ WorkLine =
+ Decimal.Parse(itemOutList.SrcDocLineNo), // 纭繚WorkLine鏈夊��
+ EbelnK3id = Decimal.Parse(mesRohInData.ErpId),
+ LineK3id = Decimal.Parse(mesRohInData.EbelnK3id),
+ FType = 0,
+ Status = 0,
+ PbillNo = mesInvItemIns.CbillNo, // 纭繚PbillNo鏈夊��
+ RkNo = from.MesNo, // 纭繚RkNo鏈夊��
+ RkLine = mesInvItemInCItems.Id, // 纭繚RkLine鏈夊��
+ RkQty = mesInvItemInCItems.Quantity,
+ TlQty = 0,
+ ItemId = Decimal.Parse(itemIdLinkU9.MesId), // 纭繚ItemId鏈夊��
+ SqNo = itemOutList.SqNo, // 纭繚ItemId鏈夊��
+ //ZzitemId = itemOutList.AsnLineNo, // 纭繚ItemId鏈夊��
+ Unit = mesUnit.Fnumber,
+ });
+ }
+ else
+ {
+ // var mesInvItemInCItems = Db.Queryable<MesInvItemInCItems>()
+ //.Where(s => s.ItemInId == mesInvItemIns.Id
+ // && s.ItemNo == mesItems.ItemNo
+ // && s.Ebeln == itemOutList.SrcDocNo
+ // && s.EbelnLineNo ==
+ // Decimal.Parse(itemOutList.SrcDocLineNo)
+ // && s.SuppNo == mesSupplier.SuppNo
+ // ).First();
+
+ // if (mesInvItemInCItems == null)
+ // {
+ // throw new NotImplementedException("娌℃湁瀵瑰簲鐨勫叆搴撴槑缁�");
+ // }
+
+
+
+
+ //// 纭繚CbillNo涓嶄负绌�
+ //if (string.IsNullOrEmpty(mesInvItemIns.CbillNo))
+ //{
+ // throw new NotImplementedException("鍏ュ簱鍗曞叧鑱旂殑閲囪喘鍗曞彿涓嶈兘涓虹┖");
+ //}
+
+ mesInvItemOutItems.Add(new MesInvItemOutItems
+ {
+ ItemOutId = nextSequenceValue,
+ ItemNo = mesItems.ItemNo,
+ Quantity = Decimal.Parse(itemOutList.qty),
+ CreateBy = "PL017",
+ CreateDate = DateTime.Now,
+ Factory = "1000",
+ Company = "1000",
+ DepotCode = mesDepots.DepotCode,
+ WorkNo = itemOutList.SrcDocNo, // 纭繚WorkNo鏈夊��
+ WorkLine =
+ Decimal.Parse(itemOutList.SrcDocLineNo), // 纭繚WorkLine鏈夊��
+ //EbelnK3id = Decimal.Parse(mesRohInData.ErpId),
+ //LineK3id = Decimal.Parse(mesRohInData.EbelnK3id),
+ FType = 0,
+ Status = 0,
+ //PbillNo = mesInvItemIns.CbillNo, // 纭繚PbillNo鏈夊��
+ RkNo = from.MesNo, // 纭繚RkNo鏈夊��
+ RkLine = null, // 纭繚RkLine鏈夊��
+ RkQty = null,
+ TlQty = 0,
+ ItemId = Decimal.Parse(itemIdLinkU9.MesId), // 纭繚ItemId鏈夊��
+ SqNo = itemOutList.SqNo, // 纭繚ItemId鏈夊��
+ //ZzitemId = itemOutList.AsnLineNo, // 纭繚ItemId鏈夊��
+ Unit = mesUnit.Fnumber,
+ });
+ }
+
}
- return dto;
- }
-
- public List<InventoryItemDetail> SelectMaterials(WarehouseQuery query)
- {
- var sql = string.Format(@"select B.WORK_NO, b.work_line,
- b.item_no, s2.item_name, s2.item_model,
- sum(b.quantity) sum_Quantity,
- b.unit, b.supp_no,
- nvl(s1.quantity, 0) quantity,
- sum(b.quantity) - nvl(U.KT_QTY, 0) Refundable_Quantity,
- B.cbill_no, B.task_no, A.BILL_NO,
- to_char(b.CREATE_DATE, 'yyyy-mm-dd') as CREATE_DATE
- from mes_inv_item_in_c_details b
- left join mes_inv_item_ins a on b.item_in_id = a.id
- LEFT JOIN (select s.item_no, s.work_line, s.Work_no,
- sum(s.quantity) quantity, S.RK_NO
- from mes_inv_item_out_c_details s
- group by s.item_no, s.work_line, s.work_no, S.RK_NO) s1
- ON NVL(B.work_LINE, '0') = NVL(s1.work_LINE, '0')
- and B.work_no = s1.work_no
- and B.item_no = s1.item_no
- AND B.BILL_NO = S1.RK_NO
- LEFT JOIN (SELECT SUM(QUANTITY) KT_QTY, ITEM_NO, PBILL_NO, WORK_LINE, RK_NO
- FROM MES_INV_ITEM_OUT_ITEMS
- GROUP BY ITEM_NO, PBILL_NO, WORK_LINE, RK_NO) U
- ON U.ITEM_NO = B.ITEM_NO
- AND U.WORK_LINE = B.WORK_LINE
- AND U.PBILL_NO = B.WORK_NO AND U.RK_NO = B.BILL_NO
- left join mes_items s2 on b.item_no = s2.item_no
- left join purdha da on da.dha001 = b.cbill_no
- WHERE A.BILL_NO LIKE 'Q%'
- AND A.CBILL_NO like 'L%'
- group by b.item_no, b.work_line, b.supp_no, b.remark, s1.quantity, b.unit,
- s2.item_name, s2.item_model, da.dha003, B.WORK_NO, B.cbill_no, B.task_no,
- to_char(b.CREATE_DATE, 'yyyy-mm-dd'), A.BILL_NO, U.KT_QTY, A.CBILL_NO
- having b.remark = '閲囪喘鍏ュ簱'
- and sum(b.quantity) - nvl(U.KT_QTY, 0) > 0
- and b.supp_no = '{0}'
- order by to_char(b.CREATE_DATE, 'yyyy-mm-dd')",
- query.SuppNo);
-
- var results = Db.Ado.SqlQuery<InventoryItemDetail>(sql);
- return results;
- }
-
- public string GetMaxItemOutNo()
- {
- var date = DateTime.Now.ToString("yyyyMMdd");
- var par = "NTL" + date;
- var sql =
- $"select max(ITEM_OUT_NO) from MES_INV_ITEM_OUTS where ITEM_OUT_NO like '{par}%'";
- var maxBillNo = Db.Ado.SqlQuerySingle<string>(sql);
-
- var number = "0001";
- if (maxBillNo != null)
+ var outItemCommand = Db.Insertable(mesInvItemOutItems)
+ .PageSize(1).IgnoreColumnsNull().ExecuteCommand();
+ if (outItemCommand <= 0)
{
- maxBillNo = maxBillNo.Substring(11);
- var no = Convert.ToInt32(maxBillNo);
- no++;
- number = no.ToString().PadLeft(4, '0');
+ throw new Exception("鍒涘缓閲囪喘閫�鏂欏崟瀛愯〃澶辫触");
}
- return "NTL" + date + number;
- }
-
- public MessageCenter SaveMessageCenter(WarehouseQuery query)
- {
- var message = MesToErpParam(query);
-
- var executeReturnIdentity =
- Db.Insertable(message).ExecuteReturnIdentity();
- if (executeReturnIdentity > 0)
+ // 鎻掑叆閲囪喘閫�鏂欏崟璁板綍
+ var insertResult = Db.Insertable(mesInvItemOuts).IgnoreColumns(true)
+ .ExecuteCommand();
+ if (insertResult <= 0)
{
- message.Id = executeReturnIdentity;
- message.Pid = executeReturnIdentity;
- return message;
+ throw new Exception("鍒涘缓閲囪喘閫�鏂欏崟澶辫触");
}
- throw new Exception("鑾峰彇鏁版嵁澶辫触");
+ return outItemCommand + insertResult >= 2;
}
-
- public MessageCenter MesToErpParam(WarehouseQuery query)
+ private bool Remove(ItemOutFrom from)
{
- var erpParameters = "";
- var title = "";
- var tableName = "MES_INV_ITEM_OUTS_" + query.Type;
- if ("A".Equals(query.Type))
- {
- erpParameters = GetErpParameters(query.billNo);
- title = "閲囪喘閫�璐у崟" + query.billNo + "瀹℃牳";
- }
- else if ("B".Equals(query.Type))
- {
- erpParameters = GetDeApprovePam(query.id);
- title = "閲囪喘閫�璐у崟" + query.billNo + "鍙嶅鏍�";
- }
-
- var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl;
- var message = new MessageCenter
- {
- TableName = tableName,
- Url = ErpUrl,
- Status = 1,
- CreateBy = query.userName,
- Route = query.billNo,
- Title = title,
- PageName = "Warehouse/PurchaseReturn/Add?id=" + query.id +
- "&itemOutNo=" + query.billNo,
- CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Method = "POST",
- Seq = 1,
- Data = erpParameters,
- IsMessage = 0,
- ContentType = "application/x-www-form-urlencoded"
- };
- return message;
- }
-
- public bool DeApproveBefore(WarehouseQuery query)
- {
- var mesInvItemOuts = base.GetById(query.id);
- if (mesInvItemOuts == null) throw new Exception("鍑哄簱鍗曚笉瀛樺湪");
-
- var nflag = mesInvItemOuts.Nflag ?? 0;
-
- if (nflag != 0) return true;
-
- return false;
- }
-
- private string GetDeApprovePam(decimal? id)
- {
- var sid = (int)id;
- var encodedUrl = "taskname=CGTL&mesid=" + sid +
- "&optype=delete&datajson={}";
-
- return encodedUrl;
- }
-
- private string GetErpParameters(string? billNo)
- {
- var invItemIns = Db.Queryable<MesInvItemOuts>()
- .Single(x => x.ItemOutNo == billNo);
-
- //璋冪敤function鍑芥暟
- var sql =
- $"SELECT F_GENERATE_DATA_INSERTED('{billNo}') FROM DUAL;";
- var jsonString = Db.Ado.SqlQuerySingle<string>(sql);
-
- var encodedUrl = "taskname=CGTL&mesid=" + invItemIns.Id +
- "&optype=create&datajson=" + jsonString;
-
- return encodedUrl;
- }
-
- public List<string> GetItemOutNo()
- {
- var data5 = Db.Queryable<MesInvItemOuts>().Where(it =>
- it.BillTypeId == 200 && it.TransactionNo == 203 &&
- it.Status == 1)
- .OrderBy(it => it.Id, OrderByType.Desc)
- .ToPageList(1, 20);
-
- var ItemOutNos = data5.FindAll(a => a.Nflag == null || a.Nflag == 0)
- .Select(s => s.ItemOutNo).ToList();
- //
- // var ItemOutNos = data5
- // .Select(s => s.ItemOutNo).ToList();
-
- return ItemOutNos;
- }
- //鐢熶骇棰嗘枡鍗曞鏍稿墠鏍¢獙
-
-
- public MessageCenter SaveProductionMessageCenter(WarehouseQuery entity)
- {
- var message = ProductionMesToErpParam(entity);
-
- var executeReturnIdentity =
- Db.Insertable(message).ExecuteReturnIdentity();
- if (executeReturnIdentity > 0)
- {
- message.Id = executeReturnIdentity;
- message.Pid = executeReturnIdentity;
- return message;
- }
-
- throw new Exception("鑾峰彇鏁版嵁澶辫触");
- }
-
- public MessageCenter ProductionMesToErpParam(WarehouseQuery query)
- {
- var erpParameters = "";
- var title = "";
- var tableName = "INV_ITEM_OUTS_" + query.Type;
- if ("A".Equals(query.Type))
- {
- erpParameters =
- GetProductionErpParameters(query.billNo, query.userName);
- title = "鐢熶骇棰嗘枡鍗�" + query.billNo + "瀹℃牳";
- }
-
- var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl;
- var message = new MessageCenter
- {
- TableName = tableName,
- Url = ErpUrl,
- Status = 1,
- CreateBy = query.userName,
- Route = query.billNo,
- Title = title,
- PageName = "Warehouse/ProductionPick/Add?id=" + query.id +
- "&itemOutNo=" + query.billNo,
- CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Method = "POST",
- Seq = 1,
- Data = erpParameters,
- IsMessage = 0,
- ContentType = "application/x-www-form-urlencoded"
- };
- return message;
- }
-
- private string GetProductionErpParameters(string? queryBillNo,
- string? userName)
- {
- userName ??= "system";
+ // 鏌ユ壘瑕佸垹闄ょ殑閲囪喘閫�鏂欏崟
var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
- .Where(it => it.ItemOutNo == queryBillNo)
- .First();
+ .Where(s => s.BillTypeId == BILL_TYPE_ID
+ && s.TransactionNo == TRANSACTION_NO
+ && s.ItemOutNo == from.RtnNo).ToList();
- if (mesInvItemOuts == null) throw new Exception("棰嗘枡鍗曞彿涓嶅瓨鍦�");
-
- var womcaa = Db.Queryable<Womcaa>()
- .Where(it => it.Caa020 == mesInvItemOuts.WorkNo)
- .First();
-
- if (womcaa == null) throw new Exception("浠诲姟鍗曞彿涓嶅瓨鍦�");
-
- var Departmentcode = Db.Queryable<SysDepartment, MesInvItemOuts>(
- (a, b) =>
- new JoinQueryInfos(JoinType.Left,
- a.Departmentname == b.OutPart
- )).Where((a, b) =>
- b.OutPart == mesInvItemOuts.OutPart &&
- b.ItemOutNo == queryBillNo).Select(a => a.Departmentcode)
- .First();
-
- if (string.IsNullOrEmpty(Departmentcode))
- throw new Exception("閮ㄩ棬淇℃伅涓嶅瓨鍦�");
-
- // 妫�鏌ラ鏂欏崟鐘舵��
- if (mesInvItemOuts.Status == 1) throw new Exception("棰嗘枡鍗曞凡瀹℃牳锛屼笉鑳介噸澶嶆帹閫�");
-
- var C_OUT_ITEMS = Db
- .Queryable<MesInvItemOutItems, Womdab, Womdaa, Womcaa, Womcab>(
- (c, b, d, e, f) =>
- new JoinQueryInfos(
- JoinType.Left, b.Id == c.ItemDabid,
- JoinType.Left, d.Id == b.Pid,
- JoinType.Left, e.Caa001 == d.Daa021,
- JoinType.Left, f.Eid == e.Erpid
- ))
- .Where((c, b, d, e, f) => c.ItemOutId == mesInvItemOuts.Id)
- .Select((c, b, d, e, f) => new
- {
- c.Id,
- c.ItemNo,
- c.Quantity,
- c.DepotCode,
- c.DepotSectionCode,
- c.ItemId,
- erpId = b.ErpId,
- e.Caa015,
- f.PositionNo
- }).ToList();
-
- var scllentryList = new List<dynamic>();
-
- foreach (var item in C_OUT_ITEMS)
+ if (mesInvItemOuts == null || mesInvItemOuts.Count == 0)
{
- var sql =
- "SELECT FNAME FROM MES_UNIT WHERE ID = (SELECT ITEM_UNIT FROM MES_ITEMS WHERE ID = '" +
- item.ItemId + "')";
- var C_ITEM_UNIT = Db.Ado.SqlQuerySingle<string>(sql);
-
- var xsddh = item.Caa015 ?? "";
- var wzh = item.PositionNo ?? "";
- var qty = ((int)item.Quantity).ToString();
- var erpid = ((int)item.erpId).ToString();
- var id = ((int)item.Id).ToString();
- scllentryList.Add(new
- {
- FMaterialId = item.ItemNo,
- FUnitID = C_ITEM_UNIT,
- FAppQty = qty,
- FActualQty = qty,
- FStockId = item.DepotCode,
- FPPBomEntryId = erpid,
- F_UNW_Text_xsddh = xsddh,
- F_UNW_TEXT_WZH = wzh,
- F_MES_ENTRYID = id
- });
+ throw new NotImplementedException("鎵句笉鍒板搴旂殑閲囪喘閫�鏂欏崟: " + from.RtnNo);
}
- var dataJson = new
+ // 妫�鏌ユ槸鍚︽湁宸插鏍哥殑鍗曟嵁锛屽鏋滃瓨鍦ㄥ凡瀹℃牳(Status=1)鍒欎笉鍏佽鍒犻櫎
+ //榛樿u9杩囨潵灏辨槸瀹℃牳鐨勶紝涓嶉渶瑕佸仛瀹℃牳鍒ゆ柇
+ //if (mesInvItemOuts.Any(item => item.Status == 1))
+ //{
+ // throw new NotImplementedException("瀛樺湪宸插鏍哥殑閲囪喘閫�鏂欏崟锛屼笉鍏佽鍒犻櫎");
+ //}
+
+ // 鍒犻櫎鎵�鏈夌浉鍏冲崟鎹�
+ foreach (var itemOut in mesInvItemOuts)
{
- F_MES_ID = mesInvItemOuts.Id.ToString(),
- FDate = DateTime.Now.ToString("yyyy-MM-dd"),
- FPickerId = userName,
- F_UNW_LargeText_BZ = " ",
- F_UNW_KH = " ",
- F_UNW_DDSL = womcaa.Caa012.ToString(),
- F_UNW_Text_CZG = userName,
- scllentry = scllentryList
- };
+ // 鏌ユ壘瑕佸垹闄ょ殑閲囪喘閫�鏂欏崟鏄庣粏
+ var mesInvItemOutItems = Db.Queryable<MesInvItemOutItems>()
+ .Where(s => s.ItemOutId == itemOut.Id)
+ .ToList();
- return "taskname=SCLL&mesid=" + mesInvItemOuts.Id +
- "&optype=create&datajson=" +
- JsonConvert.SerializeObject(
- dataJson);
- }
+ if (mesInvItemOutItems == null || mesInvItemOutItems.Count == 0)
+ {
+ throw new NotImplementedException(
+ $"鎵句笉鍒伴噰璐��鏂欏崟[{itemOut.ItemOutNo}]瀵瑰簲鐨勬槑缁�");
+ }
- public bool AuditProduction(WarehouseQuery query)
- {
- query.status = 1;
- //瀹℃牳
- return Update(query);
+ // 鍒犻櫎閲囪喘閫�鏂欏崟鏄庣粏
+ var deleteItemsResult = Db.Deleteable<MesInvItemOutItems>()
+ .Where(s => s.ItemOutId == itemOut.Id)
+ .ExecuteCommand();
+
+ if (deleteItemsResult <= 0)
+ {
+ throw new Exception($"鍒犻櫎閲囪喘閫�鏂欏崟[{itemOut.ItemOutNo}]鏄庣粏澶辫触");
+ }
+
+ // 鍒犻櫎閲囪喘閫�鏂欏崟
+ var deleteResult = Db.Deleteable<MesInvItemOuts>()
+ .Where(s => s.Id == itemOut.Id)
+ .ExecuteCommand();
+
+ if (deleteResult <= 0)
+ {
+ throw new Exception($"鍒犻櫎閲囪喘閫�鏂欏崟[{itemOut.ItemOutNo}]澶辫触");
+ }
+ }
+
+ return true;
}
}
\ No newline at end of file
--
Gitblit v1.9.3