From 9c634fd767aec36ef97c3a814bf7a29c67d20ee1 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期五, 29 三月 2024 10:57:35 +0800
Subject: [PATCH] 修改单据重复显示问题,增加工单源单id关联
---
VueWebApi/DLL/DAL/ProductionManagementDAL.cs | 639 +++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 483 insertions(+), 156 deletions(-)
diff --git a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
index 54b1225..6e4e477 100644
--- a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -22,7 +22,7 @@
#region[ERP璁㈠崟鏌ヨ]
- public static ToMessage ErpOrderSearch(string stu_torgcode,string stu_torgtypecode,string erporderstus, string erpordercode, string partcode, string partname, string partspec, int startNum, string paydatestartdate, string paydateenddate, string paydatestartdate1, string paydateenddate2, string creatuser, int endNum, string prop, string order)
+ public static ToMessage ErpOrderSearch(string stu_torgcode, string stu_torgtypecode, string erporderstus, string erpordercode, string saleordercode, string partcode, string partname, string partspec, int startNum, string paydatestartdate, string paydateenddate, string paydatestartdate1, string paydateenddate2, string creatuser, int endNum, string prop, string order)
{
var dynamicParams = new DynamicParameters();
string search = "";
@@ -52,6 +52,11 @@
{
search += "and A.wo like '%'+@erpordercode+'%' ";
dynamicParams.Add("@erpordercode", erpordercode);
+ }
+ if (saleordercode != "" && saleordercode != null)
+ {
+ search += "and A.saleOrderCode like '%'+@saleordercode+'%' ";
+ dynamicParams.Add("@saleordercode", saleordercode);
}
if (partcode != "" && partcode != null)
{
@@ -93,7 +98,7 @@
// --------------鏌ヨ鎸囧畾鏁版嵁--------------
var total = 0; //鎬绘潯鏁�
var sql = @"select A.id, A.status,A.wo,A.materiel_code as partcode,B.partname,B.partspec,A.qty,A.relse_qty,A.wkshp_code,C.org_name as wkshp_name,
- A.stck_code,D.name as stck_name,saleOrderDeliveryDate,A.planstartdate,A.planenddate,U.username as createuser,A.createdate
+ A.stck_code,D.name as stck_name,A.saleOrderCode,A.saleOrderDeliveryDate,A.planstartdate,A.planenddate,U.username as createuser,A.createdate,A.sbid
from TKimp_Ewo A
left join TMateriel_Info B on A.materiel_code=B.partcode
left join TOrganization C on A.wkshp_code=C.org_code
@@ -119,7 +124,7 @@
#endregion
#region[ERP璁㈠崟涓嬭揪]
- public static ToMessage MarkSaveErpOrder(string erporderid, string erpordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string saleOrderDeliveryDate, string username)
+ public static ToMessage MarkSaveErpOrder(string erporderid, string erpordercode, string saleordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string saleOrderDeliveryDate, string username)
{
var sql = "";
List<object> list = new List<object>();
@@ -144,7 +149,7 @@
if (i == 1) //棣栧崟鑾峰彇宸ュ崟鍙�
{
sql = @"select isnull(max(cast(substring(wo_code,charindex('_',wo_code)+1,len(wo_code)-charindex('_',wo_code)) as numeric)),0)+1 as worknumb
- from TK_Wrk_Man where m_po=@erpordercode";
+ from TK_Wrk_Man where m_po=@erpordercode";
dynamicParams.Add("@erpordercode", erpordercode);
var data = DapperHelper.selectdata(sql, dynamicParams);
num = Convert.ToInt32(data.Rows[0]["WORKNUMB"].ToString());
@@ -157,7 +162,7 @@
}
if (i == Convert.ToInt32(ordernum)) //鏈�鍚庝竴鍗曟椂
{
- sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderDeliveryDate)";
+ sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderCode,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderCode,@saleOrderDeliveryDate)";
list.Add(new
{
str = sql,
@@ -174,6 +179,7 @@
m_po = erpordercode,
username = username,
CreateDate = DateTime.Now.ToString(),
+ saleOrderCode = saleordercode,
saleOrderDeliveryDate = Convert.ToDateTime(saleOrderDeliveryDate)
}
});
@@ -182,7 +188,7 @@
else
{
- sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderDeliveryDate)";
+ sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderCode,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderCode,@saleOrderDeliveryDate)";
list.Add(new
{
str = sql,
@@ -199,6 +205,7 @@
m_po = erpordercode,
username = username,
CreateDate = DateTime.Now.ToString(),
+ saleOrderCode = saleordercode,
saleOrderDeliveryDate = Convert.ToDateTime(saleOrderDeliveryDate)
}
});
@@ -249,6 +256,101 @@
mes.Message = "涓嬭揪MES宸ュ崟鎴愬姛澶辫触!";
mes.data = null;
}
+ }
+ catch (Exception e)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = e.Message;
+ mes.data = null;
+ }
+ return mes;
+ }
+ #endregion
+
+ #region[ERP璁㈠崟鎵归噺涓嬭揪]
+ public static ToMessage MarkBatchSaveErpOrder(List<ErpOrderBatch> obj, string username)
+ {
+ var sql = "";
+ List<object> list = new List<object>();
+ var dynamicParams = new DynamicParameters();
+
+ try
+ {
+ list.Clear();
+
+ var groupedModels = obj.GroupBy(m => m.erpordercode);
+ foreach (var group in groupedModels)
+ {
+ string erpordercode = group.Key;
+ int count = 1;
+ foreach (var model in group)
+ {
+ //鑾峰彇褰撳墠鏈�澶у伐鍗曞彿
+ sql = @"select isnull(max(cast(substring(wo_code,charindex('_',wo_code)+1,len(wo_code)-charindex('_',wo_code)) as numeric)),0) as worknumb
+ from TK_Wrk_Man where m_po=@erpordercode";
+ dynamicParams.Add("@erpordercode", model.erpordercode);
+ var data = DapperHelper.selectdata(sql, dynamicParams);
+ int num = Convert.ToInt32(data.Rows[0]["WORKNUMB"].ToString());
+ string wo = model.erpordercode + "_" + (num + count);
+ //鍐欏叆宸ュ崟琛�
+ sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderCode,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderCode,@saleOrderDeliveryDate)";
+ list.Add(new
+ {
+ str = sql,
+ parm = new
+ {
+ wo_code = wo,
+ wotype = "PO",
+ status = "NEW",
+ wkshp_code = model.wkshopcode,
+ plan_qty = decimal.Parse(model.erpqty), //璁㈠崟鏁伴噺
+ stck_code = model.warehousecode,
+ materiel_code = model.partcode,
+ sourceid = model.erporderid,
+ m_po = model.erpordercode,
+ username = username,
+ CreateDate = DateTime.Now.ToString(),
+ saleOrderCode = model.saleordercode,
+ saleOrderDeliveryDate = Convert.ToDateTime(model.saleOrderDeliveryDate)
+ }
+ });
+
+ //鏇存柊璁㈠崟鐘舵��
+ sql = @"update TKimp_Ewo set status='CREATED',saleOrderDeliveryDate=@saleOrderDeliveryDate,relse_qty=relse_qty+@sumqty where wo=@wo and id=@erporderid";
+ list.Add(new
+ {
+ str = sql,
+ parm = new
+ {
+ wo = model.erpordercode,
+ erporderid = model.erporderid,
+ sumqty = decimal.Parse(model.markqty),
+ saleOrderDeliveryDate = Convert.ToDateTime(model.saleOrderDeliveryDate)
+ }
+ });
+ count++;
+ }
+ }
+
+
+
+ bool aa = DapperHelper.DoTransaction(list);
+ if (aa)
+ {
+ mes.code = "200";
+ mes.count = 0;
+ mes.Message = "鎵归噺涓嬭揪MES宸ュ崟鎴愬姛!";
+ mes.data = null;
+ }
+ else
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = "鎵归噺涓嬭揪MES宸ュ崟鎴愬姛澶辫触!";
+ mes.data = null;
+ }
+
}
catch (Exception e)
{
@@ -320,10 +422,83 @@
}
#endregion
+ #region[ERP璁㈠崟鍒犻櫎]
+ public static ToMessage DeleteErpOrder(string erporderid, string erpordercode, string username)
+ {
+ var sql = "";
+ List<object> list = new List<object>();
+ var dynamicParams = new DynamicParameters();
+ try
+ {
+ sql = @"select * from TK_Wrk_Man where m_po=@erpordercode and sourceid=@erporderid and status<>'NEW'";
+ dynamicParams.Add("@erpordercode", erpordercode);
+ dynamicParams.Add("@erporderid", erporderid);
+ var data = DapperHelper.selectdata(sql, dynamicParams);
+ if (data.Rows.Count > 0)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = "褰撳墠璁㈠崟涓嬫湁宸ュ崟宸叉淳鍙戞垨宸插紑宸ユ垨宸插畬宸�(鍏抽棴),涓嶅厑璁稿垹闄�!";
+ mes.data = null;
+ return mes;
+ }
+ else
+ {
+ //鍒犻櫎宸ュ崟
+ sql = @"delete TK_Wrk_Man where m_po=@wo and sourceid=@erporderid";
+ list.Add(new
+ {
+ str = sql,
+ parm = new
+ {
+ wo = erpordercode,
+ erporderid = erporderid
+ }
+ });
+ //鍒犻櫎璁㈠崟
+ sql = @"delete TKimp_Ewo where wo=@wo and id=@erporderid";
+ list.Add(new
+ {
+ str = sql,
+ parm = new
+ {
+ wo = erpordercode,
+ erporderid = erporderid
+ }
+ });
+ }
+ bool aa = DapperHelper.DoTransaction(list);
+ LogHelper.WriteLogData(aa.ToString());
+ if (aa)
+ {
+ mes.code = "200";
+ mes.count = 0;
+ mes.Message = "璁㈠崟鍒犻櫎鎴愬姛!";
+ mes.data = null;
+ }
+ else
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = "璁㈠崟鍒犻櫎澶辫触!";
+ mes.data = null;
+ }
+ }
+ catch (Exception e)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = e.Message;
+ mes.data = null;
+ }
+ return mes;
+ }
+ #endregion
+
#region[MES宸ュ崟鏌ヨ]
- public static ToMessage MesOrderSearch(string stu_torgcode,string stu_torgtypecode,string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+ public static ToMessage MesOrderSearch(string stu_torgcode, string stu_torgtypecode, string mesorderstus, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
{
var dynamicParams = new DynamicParameters();
string search = "";
@@ -358,6 +533,11 @@
{
search += "and A.m_po like '%'+@sourceorder+'%' ";
dynamicParams.Add("@sourceorder", sourceorder);
+ }
+ if (saleordercode != "" && saleordercode != null)
+ {
+ search += "and W.saleOrderCode like '%'+@saleordercode+'%' ";
+ dynamicParams.Add("@saleordercode", saleordercode);
}
if (ordertype != "" && ordertype != null)
{
@@ -396,9 +576,10 @@
}
// --------------鏌ヨ鎸囧畾鏁版嵁--------------
var total = 0; //鎬绘潯鏁�
- var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
- A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date
+ var sql = @"select A.id, A.status,A.wotype,A.printcount,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
+ A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,W.saleOrderCode,U.username as lm_user,A.lm_date
from TK_Wrk_Man A
+ left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code and A.sourceid=W.id
left join TMateriel_Info B on A.materiel_code=B.partcode
left join TOrganization C on A.wkshp_code=C.org_code
left join T_Sec_Stck D on A.stck_code=D.code
@@ -425,7 +606,7 @@
#endregion
#region[MES鎶ュ簾琛ュ崟宸ュ崟鏌ヨ]
- public static ToMessage MesBadOrderSearch(string mesordercode, string sourceorder, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+ public static ToMessage MesBadOrderSearch(string mesordercode, string sourceorder, string saleordercode, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
{
var dynamicParams = new DynamicParameters();
string search = "";
@@ -440,6 +621,11 @@
{
search += "and A.m_po like '%'+@sourceorder+'%' ";
dynamicParams.Add("@sourceorder", sourceorder);
+ }
+ if (saleordercode != "" && saleordercode != null)
+ {
+ search += "and W.saleOrderCode like '%'+@saleordercode+'%' ";
+ dynamicParams.Add("@saleordercode", saleordercode);
}
if (partcode != "" && partcode != null)
{
@@ -474,8 +660,9 @@
// --------------鏌ヨ鎸囧畾鏁版嵁--------------
var total = 0; //鎬绘潯鏁�
var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
- A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date,S.bad_qty
+ A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,W.saleOrderCode,U.username as lm_user,A.lm_date,S.bad_qty
from TK_Wrk_Man A
+ left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code and A.sourceid=W.id
left join (select wo_code,sum(bad_qty) as bad_qty from TK_Wrk_Step where bad_qty>0 group by wo_code) S on A.wo_code=S.wo_code
left join TMateriel_Info B on A.materiel_code=B.partcode
left join TOrganization C on A.wkshp_code=C.org_code
@@ -502,7 +689,7 @@
#endregion
#region[浜у搧缂栫爜鏌ユ壘宸ヨ壓璺嚎涓嬫媺鎺ュ彛]
- public static ToMessage PartSelectRoute(string partcode,string wkshopcode)
+ public static ToMessage PartSelectRoute(string partcode, string wkshopcode)
{
string sql = "";
var dynamicParams = new DynamicParameters();
@@ -532,7 +719,7 @@
#endregion
#region[宸ヨ壓璺嚎鏌ユ壘杞﹂棿涓嬫媺鎺ュ彛]
- public static ToMessage RouteSelectWkshop(string stu_torgcode,string stu_torgtypecode,string partcode)
+ public static ToMessage RouteSelectWkshop(string stu_torgcode, string stu_torgtypecode, string partcode)
{
string sql = "";
string search = "";
@@ -562,7 +749,7 @@
inner join TEqpInfo E on D.eqp_code=E.code
left join TOrganization F on E.wksp_code=F.org_code
left join TOrganization L on F.parent_id=L.id
- where M.materiel_code=@partcode and E.enable='Y' "+search;
+ where M.materiel_code=@partcode and E.enable='Y' " + search;
dynamicParams.Add("@partcode", partcode);
var data = DapperHelper.selectdata(sql, dynamicParams);
mes.code = "200";
@@ -588,7 +775,7 @@
try
{
//鑾峰彇宸ヨ壓璺嚎瀵瑰簲宸ュ簭淇℃伅
- sql = @"select A.seq,T.stepcode,T.stepname,T.flwtype,T.descr from TFlw_Rtdt A
+ sql = @"select A.seq,T.stepcode,T.stepname,T.flwtype,T.descr,'0' as stepprice from TFlw_Rtdt A
left join TStep T on A.step_code=T.stepcode
where A.rout_code=@partcode ";
dynamicParams.Add("@partcode", routecode);
@@ -634,7 +821,7 @@
#endregion
#region[宸ュ崟娲惧彂閫夋嫨宸ヨ壓璺嚎鎴栭�夋嫨鐢熶骇杞﹂棿鏃跺垽鏂粦瀹氭潯浠禲
- public static ToMessage SelectRouteOrWkshop(string partcode, string routecode, string wkshopcode)
+ public static ToMessage SelectRouteOrWkshop(string partcode, string routecode, string wkshopcode, string is_steprice)
{
string sql = "";
var dynamicParams = new DynamicParameters();
@@ -689,8 +876,10 @@
return mes;
}
}
- //鍒ゆ柇宸ヨ壓璺嚎瀵瑰簲宸ュ簭鍏宠仈鐨勫伐浣滅珯鏄惁鏈夎缃妭鎷嶅伐浠�
- sql = @"select AA.step_code,AA.eqp_code,AA.flwtype,S.unprice from (
+ if (is_steprice == "Y")
+ {
+ //鍒ゆ柇宸ヨ壓璺嚎瀵瑰簲宸ュ簭鍏宠仈鐨勫伐浣滅珯鏄惁鏈夎缃妭鎷嶅伐浠�
+ sql = @"select AA.step_code,AA.eqp_code,AA.flwtype,S.unprice from (
select A.code,B.step_code,C.eqp_code,S.flwtype from TFlw_Rout A
inner join TFlw_Rtdt B on A.code=B.rout_code
left join TFlw_Rteqp C on B.step_code=C.step_code
@@ -699,21 +888,22 @@
) as AA
left join (select * from TPrteEqp_Stad where materiel_code=@partcode and route_code=@route_code and wkspcode=@wkshopcode) as S on
AA.code=S.route_code and AA.step_code=S.step_code and AA.eqp_code=S.eqp_code";
- dynamicParams.Add("@partcode", partcode);
- dynamicParams.Add("@route_code", routecode);
- dynamicParams.Add("@wkshopcode", wkshopcode);
- var dtc = DapperHelper.selectdata(sql, dynamicParams);
- for (int i = 0; i < dtc.Rows.Count; i++)
- {
- if (dtc.Rows[i]["flwtype"].ToString() == "Z") //鍒ゆ柇宸ュ簭鏄惁涓鸿嚜鍒�
+ dynamicParams.Add("@partcode", partcode);
+ dynamicParams.Add("@route_code", routecode);
+ dynamicParams.Add("@wkshopcode", wkshopcode);
+ var dtc = DapperHelper.selectdata(sql, dynamicParams);
+ for (int i = 0; i < dtc.Rows.Count; i++)
{
- if (dtc.Rows[i].IsNull("unprice") || decimal.Parse(dtc.Rows[i]["unprice"].ToString()) == 0)
+ if (dtc.Rows[i]["flwtype"].ToString() == "Z") //鍒ゆ柇宸ュ簭鏄惁涓鸿嚜鍒�
{
- mes.code = "300";
- mes.count = 0;
- mes.Message = "鑺傛媿宸ヤ环涓細褰撳墠浜у搧銆�" + partcode + "銆戯紝瀵瑰簲宸ヨ壓璺嚎銆�" + routecode + "銆戞湭璁剧疆(鎴栨湭璁剧疆鍏�)鎴栧伐浠峰皬浜庣瓑浜�0!";
- mes.data = null;
- return mes;
+ if (dtc.Rows[i].IsNull("unprice") || decimal.Parse(dtc.Rows[i]["unprice"].ToString()) == 0)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = "鑺傛媿宸ヤ环涓細褰撳墠浜у搧銆�" + partcode + "銆戯紝瀵瑰簲宸ヨ壓璺嚎銆�" + routecode + "銆戞湭璁剧疆(鎴栨湭璁剧疆鍏�)鎴栧伐浠峰皬浜庣瓑浜�0!";
+ mes.data = null;
+ return mes;
+ }
}
}
}
@@ -862,21 +1052,28 @@
CreateDate = DateTime.Now.ToString()
}
});
+
//鍐欏叆宸ュ崟宸ヨ壓璺嚎宸ュ簭宸ヤ环澶嶅埗琛�
sql = @"insert into TWoPrteEqp_Stad(wo,materiel_code,eqp_code,stand_value,opc_conver,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,torg_code,is_delete,step_code)
- select distinct @mesordercode as wo,S.materiel_code,S.eqp_code,S.stand_value,S.opc_conver,S.route_code,S.unprice,
- S.eqp_value,S.cavity_qty,S.wkspcode,S.lm_user,S.lm_date,S.torg_code,S.is_delete,S.step_code
+ select distinct @mesordercode as wo,@partcode as materiel_code,AA.eqp_code,isnull(S.stand_value,0) as stand_value,isnull(S.opc_conver,0) as opc_conver,AA.rout_code,
+ isnull(S.unprice,0) as unprice,isnull(S.eqp_value,0) as eqp_value,isnull(S.cavity_qty,0) as cavity_qty,@wkshopcode as wkspcode,@usercode as lm_user,
+ getdate() as lm_date,S.torg_code,isnull(S.is_delete,0) as is_delete,AA.step_code from (
+ select A.rout_code,A.step_code,C.eqp_code
from TFlw_Rtdt A
inner join TFlw_Rteqp C on A.step_code=C.step_code
- inner join (select * from TPrteEqp_Stad where materiel_code=@materiel_code and route_code=@routecode) as S on C.step_code=S.step_code and C.eqp_code=S.eqp_code";
+ where A.rout_code=@routecode
+ ) as AA
+ left join (select * from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode) as S on AA.step_code=S.step_code and AA.eqp_code=S.eqp_code";
list.Add(new
{
str = sql,
parm = new
{
mesordercode = mesordercode,
- materiel_code = partcode,
- routecode = routecode
+ wkshopcode = wkshopcode,
+ partcode = partcode,
+ routecode = routecode,
+ usercode = username
}
});
@@ -984,21 +1181,28 @@
});
//鍐欏叆宸ュ崟宸ヨ壓璺嚎宸ュ簭宸ヤ环澶嶅埗琛�
sql = @"insert into TWoPrteEqp_Stad(wo,materiel_code,eqp_code,stand_value,opc_conver,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,torg_code,is_delete,step_code)
- select distinct @mesordercode as wo,S.materiel_code,S.eqp_code,S.stand_value,S.opc_conver,S.route_code,S.unprice,
- S.eqp_value,S.cavity_qty,S.wkspcode,S.lm_user,S.lm_date,S.torg_code,S.is_delete,S.step_code
+ select distinct @mesordercode as wo,@partcode as materiel_code,AA.eqp_code,isnull(S.stand_value,0) as stand_value,isnull(S.opc_conver,0) as opc_conver,AA.rout_code,
+ isnull(S.unprice,0) as unprice,isnull(S.eqp_value,0) as eqp_value,isnull(S.cavity_qty,0) as cavity_qty,@wkshopcode as wkspcode,@usercode as lm_user,
+ getdate() as lm_date,S.torg_code,isnull(S.is_delete,0) as is_delete,AA.step_code from (
+ select A.rout_code,A.step_code,C.eqp_code
from TFlw_Rtdt A
inner join TFlw_Rteqp C on A.step_code=C.step_code
- inner join (select * from TPrteEqp_Stad where materiel_code=@materiel_code and route_code=@routecode) as S on C.step_code=S.step_code and C.eqp_code=S.eqp_code";
+ where A.rout_code=@routecode
+ ) as AA
+ left join (select * from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode) as S on AA.step_code=S.step_code and AA.eqp_code=S.eqp_code";
list.Add(new
{
str = sql,
parm = new
{
mesordercode = mesordercode,
- materiel_code = partcode,
- routecode = routecode
+ wkshopcode = wkshopcode,
+ partcode = partcode,
+ routecode = routecode,
+ usercode = username
}
});
+
bool aa = DapperHelper.DoTransaction(list);
if (aa)
@@ -1180,6 +1384,45 @@
}
#endregion
+ #region[MES宸ュ崟鎵撳嵃鏇存柊鎵撳嵃娆℃暟]
+ public static ToMessage UpdateMesOrderPrintCount(string wo_code)
+ {
+ var sql = "";
+ List<object> list = new List<object>();
+ var dynamicParams = new DynamicParameters();
+ try
+ {
+ //鏇存柊宸ュ崟鎵撳嵃娆℃暟
+ sql = @"update TK_Wrk_Man set printcount=printcount+1 where wo_code=@wo_code";
+ list.Add(new { str = sql, parm = new { wo_code = wo_code } });
+
+ bool aa = DapperHelper.DoTransaction(list);
+ if (aa)
+ {
+ mes.code = "200";
+ mes.count = 0;
+ mes.Message = "鏇存柊鎴愬姛!";
+ mes.data = null;
+ }
+ else
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = "鏇存柊澶辫触!";
+ mes.data = null;
+ }
+ }
+ catch (Exception e)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.Message = e.Message;
+ mes.data = null;
+ }
+ return mes;
+ }
+ #endregion
+
#region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇褰撳墠宸ュ簭瀵瑰簲鐨勮澶�(鑷埗)]
public static ToMessage MesOrderStepEqpSearch(string orderstepqrcode)
@@ -1348,7 +1591,7 @@
#endregion
#region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(鑷埗)]
- public static ToMessage MesOrderStepSearch(string stu_torgcode,string stu_torgtypecode, string orderstepqrcode, int startNum, int endNum, string prop, string order)
+ public static ToMessage MesOrderStepSearch(string stu_torgcode, string stu_torgtypecode, string wocode, string saleOrderCode, string partcode, string partname, string partspec, int startNum, int endNum, string prop, string order)
{
var sql = "";
string search = "";
@@ -1358,17 +1601,12 @@
var total = 0; //鎬绘潯鏁�
try
{
- if (orderstepqrcode != "" && orderstepqrcode != null)
+ if (wocode != "" && wocode != null)
{
- string[] arra = orderstepqrcode.Split(';');
+ string[] arra = wocode.Split(';');
if (arra.Length == 1) //宸ュ崟鍙蜂簩缁寸爜
{
ordercode = arra[0]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
- mes.code = "300";
- mes.count = 0;
- mes.Message = "璇锋壂鎻忓伐搴忎簩缁寸爜!";
- mes.data = null;
- return mes;
}
if (arra.Length == 2) //宸ュ崟鍙�+宸ュ簭鍙蜂簩缁寸爜
{
@@ -1376,9 +1614,9 @@
stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
}
- if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+ if (ordercode != "" && (stepcode == null || stepcode == "")) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
{
- search += "and A.wo_code=@ordercode ";
+ search += "and A.wo_code like '%'+@ordercode+'%' ";
dynamicParams.Add("@ordercode", ordercode);
}
if (ordercode != "" && stepcode != "") //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂笉涓虹┖
@@ -1389,14 +1627,6 @@
dynamicParams.Add("@stepcode", stepcode);
}
}
- //else
- //{
- // mes.code = "300";
- // mes.count = 0;
- // mes.Message = "浜岀淮鐮佷俊鎭负绌�!";
- // mes.data = null;
- // return mes;
- //}
if (stepcode != "")
{
//鏌ユ壘褰撳墠宸ュ簭灞炴��
@@ -1430,11 +1660,33 @@
default:
break;
}
+ if (saleOrderCode != "" && saleOrderCode != null)
+ {
+ search += "and W.saleOrderCode like '%'+@saleOrderCode+'%' ";
+ dynamicParams.Add("@saleOrderCode", saleOrderCode);
+ }
+ if (partcode != "" && partcode != null)
+ {
+ search += "and M.partcode like '%'+@partcode+'%' ";
+ dynamicParams.Add("@partcode", partcode);
+ }
+ if (partname != "" && partname != null)
+ {
+ search += "and M.partname like '%'+@partname+'%' ";
+ dynamicParams.Add("@partname", partname);
+ }
+ if (partspec != "" && partspec != null)
+ {
+ search += "and M.partspec like '%'+@partspec+'%' ";
+ dynamicParams.Add("@partspec", partspec);
+ }
//鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(鑷埗宸ュ簭)
sql = @"select A.status,A.wo_code,B.route_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
- S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
+ S.stepcode,S.stepname,S.descr,A.plan_qty,A.start_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date,
+ B.m_po,W.saleOrderCode
from TK_Wrk_Step A
left join TK_Wrk_Man B on A.wo_code=B.wo_code
+ left join TKimp_Ewo W on B.m_po=W.wo and B.materiel_code=W.materiel_code and B.sourceid=W.id
left join TMateriel_Info M on B.materiel_code=M.partcode
left join TStep S on A.step_code=S.stepcode
left join TOrganization F on B.wkshp_code=F.org_code
@@ -1451,7 +1703,7 @@
}
else
{
- mes.code = "300";
+ mes.code = "200";
mes.count = 0;
mes.Message = "鏃犲彲鎵ц鐨勭敓浜т换鍔�,浠诲姟宸插畬鎴愭垨宸插叧闂�!";
mes.data = null;
@@ -1470,7 +1722,7 @@
#endregion
#region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(澶栧崗)]
- public static ToMessage MesOrderWxStepSearch(string stu_torgcode,string stu_torgtypecode,string orderstepqrcode, int startNum, int endNum, string prop, string order)
+ public static ToMessage MesOrderWxStepSearch(string stu_torgcode, string stu_torgtypecode, string orderstepqrcode, int startNum, int endNum, string prop, string order)
{
var sql = "";
string search = "";
@@ -1553,9 +1805,11 @@
}
//鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(澶栧崗宸ュ簭)
sql = @"select A.status,A.wo_code,B.route_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
- S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
+ S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date,
+ B.m_po,W.saleOrderCode
from TK_Wrk_Step A
left join TK_Wrk_Man B on A.wo_code=B.wo_code
+ left join TKimp_Ewo W on B.m_po=W.wo and B.materiel_code=W.materiel_code and B.sourceid=W.id
left join TMateriel_Info M on B.materiel_code=M.partcode
left join TStep S on A.step_code=S.stepcode
left join TOrganization F on B.wkshp_code=F.org_code
@@ -1591,7 +1845,7 @@
#endregion
#region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇)]
- public static ToMessage MesOrderNgStepSearch(string stu_torgcode,string stu_torgtypecode,string orderstepqrcode, int startNum, int endNum, string prop, string order)
+ public static ToMessage MesOrderNgStepSearch(string stu_torgcode, string stu_torgtypecode, string orderstepqrcode, int startNum, int endNum, string prop, string order)
{
var sql = "";
string search = "";
@@ -1664,9 +1918,11 @@
}
//鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟,涓斾笉鑹暟閲忓ぇ浜�0
sql = @"select A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isend,
- S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,B.lm_date
+ S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,B.lm_date,
+ B.m_po,W.saleOrderCode
from TK_Wrk_Step A
left join TK_Wrk_Man B on A.wo_code=B.wo_code
+ left join TKimp_Ewo W on B.m_po=W.wo and B.materiel_code=W.materiel_code and B.sourceid=W.id
left join TMateriel_Info M on B.materiel_code=M.partcode
left join TStep S on A.step_code=S.stepcode
left join TOrganization F on B.wkshp_code=F.org_code
@@ -1734,10 +1990,12 @@
}
}
//1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
- sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.isbott,A.isend
+ sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.isbott,A.isend,
+ M.m_po,W.saleOrderCode
from TK_Wrk_Step A
left join TStep T on A.step_code=T.stepcode
left join TK_Wrk_Man M on A.wo_code=M.wo_code
+ left join TKimp_Ewo W on M.m_po=W.wo and M.materiel_code=W.materiel_code and M.sourceid=W.id
left join TMateriel_Info P on M.materiel_code=P.partcode
where A.wo_code=@ordercode and A.step_code=@stepcode";
dynamicParams.Add("@ordercode", ordercode);
@@ -1746,6 +2004,8 @@
if (data.Rows.Count > 0)
{
rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
+ rt.saleOrderCode = data.Rows[0]["saleOrderCode"].ToString(); //閿�鍞鍗曞彿
+ rt.m_po = data.Rows[0]["m_po"].ToString(); //璁㈠崟鍙�
rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //浜у搧瑙勬牸
@@ -1819,7 +2079,7 @@
#endregion
#region [鐢熶骇寮�鎶ュ伐锛氬紑宸�(寮�濮�/鎶ュ伐)/澶栧崗鍙戞枡鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛]
- public static ToMessage MesOrderStepStart(string OperType,string stu_torgcode, string SelectType, string orderstepqrcode)
+ public static ToMessage MesOrderStepStart(string OperType, string stu_torgcode, string SelectType, string orderstepqrcode)
{
var sql = "";
string search = "";
@@ -1848,10 +2108,10 @@
switch (OperType)
{
case "ZZ":
- mes = ScanStartReport.ZZEncodingSeach(stu_torgcode,ordercode, stepcode);
+ mes = ScanStartReport.ZZEncodingSeach(stu_torgcode, SelectType, ordercode, stepcode);
break;
case "WX":
- mes = ScanStartReport.WXEncodingSeach(stu_torgcode,SelectType, ordercode, stepcode);
+ mes = ScanStartReport.WXEncodingSeach(stu_torgcode, SelectType, ordercode, stepcode);
break;
default:
break;
@@ -1917,9 +2177,18 @@
dynamicParams.Add("@wo_code", ordercode);
dynamicParams.Add("@stepcode", stepcode);
var data = DapperHelper.selectdata(sql, dynamicParams);
- mes.code = "200";
- mes.Message = "鏌ヨ鎴愬姛!";
- mes.data = data;
+ if (data.Rows.Count > 0)
+ {
+ mes.code = "200";
+ mes.Message = "鏌ヨ鎴愬姛!";
+ mes.data = data;
+ }
+ else
+ {
+ mes.code = "300";
+ mes.Message = "褰撳墠宸ュ簭鏈叧鑱旂敓浜ц澶�!";
+ mes.data = null;
+ }
}
catch (Exception e)
{
@@ -1933,7 +2202,7 @@
#endregion
#region[鐢熶骇寮�鎶ュ伐锛氭姤宸ユ椂鑾峰彇鐢熶骇鐝粍涓嬫媺妗哴
- public static ToMessage MesOrderStepReportSelectUserGroup(string stu_torgcode,string stu_torgtypecode,string wkshopcode)
+ public static ToMessage MesOrderStepReportSelectUserGroup(string stu_torgcode, string stu_torgtypecode, string wkshopcode)
{
string sql = "";
string search = "";
@@ -1963,7 +2232,7 @@
sql = @"select group_code,group_name from TGroup A
left join TOrganization T on A.torg_code=T.org_code
left join TOrganization as L on T.parent_id=L.id
- where 1=1 "+search;
+ where 1=1 " + search;
var data = DapperHelper.selectdata(sql, dynamicParams);
mes.code = "200";
mes.Message = "鏌ヨ鎴愬姛!";
@@ -1988,7 +2257,11 @@
try
{
//鐝粍鑾峰彇浜哄憳鍒楄〃
- sql = @"select usercode,username from TUser where stu_torgcode=@stu_torgcode and usergroup_code=@usergroupcode and is_delete<>'1'";
+ sql = @"select U.usercode,U.username
+ from TGroup G
+ inner join TGroupUser T on G.group_code=T.group_code
+ left join TUser U on T.user_code=U.usercode
+ where G.torg_code=@stu_torgcode and G.group_code=@usergroupcode";
dynamicParams.Add("@stu_torgcode", stu_torgcode);
dynamicParams.Add("@usergroupcode", usergroupcode);
var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -2155,30 +2428,33 @@
sql = @"select * from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code and style='S'";
dynamicParams.Add("@wo_code", mesordercode);
dynamicParams.Add("@step_code", stepcode);
+ dynamicParams.Add("@eqpcode", eqpcode);
var data = DapperHelper.selectdata(sql, dynamicParams);
if (data.Rows.Count > 0)
{
- mes.code = "300";
- mes.count = 0;
- mes.Message = "褰撳墠宸ュ簭浠诲姟宸插紑宸�!";
- mes.data = null;
- return mes;
+ //淇敼寮�鎶ュ伐璁板綍琛�(寮�宸ユ暟閲�)
+ sql = @"update TK_Wrk_Record set start_qty=start_qty+@startqty where wo_code=@mesordercode and step_seq=@stepseq and step_code=@stepcode and materiel_code=@partcode and style=@style";
+ list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, partcode = partcode, startqty = startqty, style = "S" } });
+ //淇敼宸ュ崟宸ュ簭琛�(寮�宸ユ暟閲�)
+ sql = @"update TK_Wrk_Step set start_qty=start_qty+@startqty where wo_code=@mesordercode and step_code=@stepcode";
+ list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, startqty = startqty } });
+ }
+ else
+ {
+ //鍐欏叆寮�鎶ュ伐璁板綍琛�
+ sql = @"insert into TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,open_person,open_time,task_qty,start_qty,style,lm_user,lm_date)
+ values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@username,@opentime,@taskqty,@startqty,@style,@lm_user,@lm_date)";
+ list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, username = username, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = username, lm_date = date } });
+ //鍥炲啓宸ュ崟宸ュ簭琛ㄧ姸鎬佷负START: 寮�宸�
+ sql = @"update TK_Wrk_Step set status='START',start_qty=@startqty where wo_code=@mesordercode and step_code=@stepcode";
+ list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, startqty = startqty } });
+
+ //鍥炲啓宸ュ崟琛ㄧ姸鎬佷负锛� 寮�宸ワ細START
+ sql = @"update TK_Wrk_Man set status='START' where wo_code=@mesordercode";
+ list.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
}
- //鍐欏叆寮�鎶ュ伐璁板綍琛�
- sql = @"insert into TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,open_person,open_time,task_qty,start_qty,style,lm_user,lm_date)
- values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@username,@opentime,@taskqty,@startqty,@style,@lm_user,@lm_date)";
- list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, username = username, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = username, lm_date = date } });
- //鍥炲啓宸ュ崟宸ュ簭琛ㄧ姸鎬佷负START: 寮�宸�
- sql = @"update TK_Wrk_Step set status='START' where wo_code=@mesordercode and step_code=@stepcode";
- list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
- //鍥炲啓宸ュ崟宸ュ簭琛ㄧ姸鎬佷负宸插紑宸�
- sql = @"update TK_Wrk_Step set status='START' where wo_code=@mesordercode and step_code=@stepcode";
- list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
- //鍥炲啓宸ュ崟琛ㄧ姸鎬佷负锛� 寮�宸ワ細START
- sql = @"update TK_Wrk_Man set status='START' where wo_code=@mesordercode";
- list.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
bool aa = DapperHelper.DoTransaction(list);
if (aa)
@@ -2208,10 +2484,10 @@
#endregion
#region[鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦]
- public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode, string remarks, string username)
+ public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, string username)
{
var sql = "";
- //string[] arra = new string[] { };
+ decimal ngqty = 0;
string[] arra1 = new string[] { };
List<object> list = new List<object>();
var dynamicParams = new DynamicParameters();
@@ -2220,12 +2496,18 @@
string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
//鑾峰彇鎶ュ伐浜哄憳銆佸垎閰嶆瘮渚�
JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(reportuser);
- if (ngqty != "" || ngqty != "0")
+ //鍒ゆ柇鏄惁鏈変笉鑹暟鎹�
+ var groupedItems = defectobjs.GroupBy(item => item.defect_code) // 鎸夌紪鐮乧ode鍒嗙粍
+ .Select(group => new { defect_code = group.Key, badqty = group.Sum(item => Convert.ToDecimal(item.badqty)) }).ToList(); // 姹囨�绘暟閲弎ty
+ if (groupedItems.Count <= 0)
{
- //鎴彇涓嶈壇鍘熷洜
- arra1 = badcode.Split(';');
+ ngqty = 0;
}
-
+ else
+ {
+ //姹囨�讳笉鑹暟閲�
+ ngqty = groupedItems.Sum(item => Convert.ToDecimal(item.badqty));
+ }
list.Clear();
//鍒ゆ柇鏄惁鏈夋姤宸ヨ褰�(鏈夛細淇敼 鏃狅細鏂板)
sql = @"select * from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code and style='B'";
@@ -2233,25 +2515,27 @@
dynamicParams.Add("@step_code", stepcode);
var data = DapperHelper.selectdata(sql, dynamicParams);
//鑾峰彇寮�宸ヨ褰曠殑榛樿閫変腑鐨勮澶�(浜х嚎)涓庢姤宸ユ椂鐨勮澶囦骇绾垮仛瀵规瘮鍒ゆ柇
- sql = @"select A.eqp_code,B.name from TK_Wrk_Record A
- inner join TEqpInfo B on A.eqp_code=B.code
- where A.wo_code=@wo_code and A.step_code=@step_code and A.style='S'";
- dynamicParams.Add("@wo_code", mesordercode);
- dynamicParams.Add("@step_code", stepcode);
- var da = DapperHelper.selectdata(sql, dynamicParams);
- if (da.Rows[0]["EQP_CODE"].ToString() != eqpcode)
- {
- mes.code = "300";
- mes.count = 0;
- mes.Message = "鎿嶄綔澶辫触,褰撳墠鎶ュ伐浜х嚎搴斾负锛�" + da.Rows[0]["NAME"].ToString() + "!";
- mes.data = null;
- return mes;
- }
+ //sql = @"select A.eqp_code,B.name from TK_Wrk_Record A
+ // inner join TEqpInfo B on A.eqp_code=B.code
+ // where A.wo_code=@wo_code and A.step_code=@step_code and eqp_code=@eqpcode and A.style='S'";
+ //dynamicParams.Add("@wo_code", mesordercode);
+ //dynamicParams.Add("@step_code", stepcode);
+ //dynamicParams.Add("@eqpcode", eqpcode);
+ //var da = DapperHelper.selectdata(sql, dynamicParams);
+ //if (da.Rows[0]["EQP_CODE"].ToString() != eqpcode)
+ //{
+ // mes.code = "300";
+ // mes.count = 0;
+ // mes.Message = "鎿嶄綔澶辫触,褰撳墠鎶ュ伐浜х嚎搴斾负锛�" + da.Rows[0]["NAME"].ToString() + "!";
+ // mes.data = null;
+ // return mes;
+ //}
if (data.Rows.Count > 0)
{
//鑾峰彇涓昏〃鏈�澶D
sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_Record')+1,1) as id";
var dt = DapperHelper.selecttable(sql);
+
//鍐欏叆寮�鎶ュ伐璁板綍琛�
sql = @"insert into TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date,inbarcode)
values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date,@inbarcode)";
@@ -2283,14 +2567,14 @@
});
}
- if (badcode != "" && ngqty != "0")
+ if (groupedItems.Count > 0)
{
//鍐欏叆缂洪櫡璁板綍琛�
- for (int i = 0; i < arra1.Length; i++)
+ for (int i = 0; i < groupedItems.Count; i++)
{
- sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
- values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
- list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "B", lm_user = username, lm_date = date } });
+ sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date)
+ values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+ list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty = groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "B", lm_user = username, lm_date = date } });
}
}
@@ -2354,14 +2638,14 @@
});
}
- if (badcode != "" && ngqty != "0")
+ if (groupedItems.Count > 0)
{
//鍐欏叆缂洪櫡璁板綍琛�
- for (int i = 0; i < arra1.Length; i++)
+ for (int i = 0; i < groupedItems.Count; i++)
{
- sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
- values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
- list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "B", lm_user = username, lm_date = date } });
+ sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date)
+ values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+ list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty = groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "B", lm_user = username, lm_date = date } });
}
}
@@ -2485,20 +2769,27 @@
#endregion
#region[鐢熶骇寮�鎶ュ伐, 鏀舵枡鎻愪氦]
- public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inbarcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string remarks, string username)
+ public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inbarcode, string inuser, string taskqty, string sqty, List<ReportDefectList> defectobjs, string remarks, string username)
{
var sql = "";
string[] arra1 = new string[] { };
+ decimal ngqty = 0;
List<object> list = new List<object>();
var dynamicParams = new DynamicParameters();
try
{
string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
- //鎴彇涓嶈壇鍘熷洜
- if (ngqty != "" || ngqty != "0")
+ //鍒ゆ柇鏄惁鏈変笉鑹暟鎹�
+ var groupedItems = defectobjs.GroupBy(item => item.defect_code) // 鎸夌紪鐮乧ode鍒嗙粍
+ .Select(group => new { defect_code = group.Key, badqty = group.Sum(item => Convert.ToDecimal(item.badqty)) }).ToList(); // 姹囨�绘暟閲弎ty
+ if (groupedItems.Count <= 0)
{
- //鎴彇涓嶈壇鍘熷洜
- arra1 = badcode.Split(';');
+ ngqty = 0;
+ }
+ else
+ {
+ //姹囨�讳笉鑹暟閲�
+ ngqty = groupedItems.Sum(item => Convert.ToDecimal(item.badqty));
}
list.Clear();
@@ -2532,7 +2823,7 @@
mes.data = null;
return mes;
}
- if ((decimal.Parse(sqty) + decimal.Parse(ngqty)) > decimal.Parse(da.Rows[0]["FQTY"].ToString())) //鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鍙戞枡鏁伴噺
+ if ((decimal.Parse(sqty) + ngqty) > decimal.Parse(da.Rows[0]["FQTY"].ToString())) //鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鍙戞枡鏁伴噺
{
mes.code = "300";
mes.count = 0;
@@ -2552,7 +2843,7 @@
{
decimal sum_sqty = data.AsEnumerable().Select(d => d.Field<decimal>("SQTY")).Sum(); //鑾峰彇鍚屽崟鍙�,鍚屽伐搴�,鍚屽鍗忎緵搴斿晢鏀舵枡鎬绘暟閲�
decimal sum_fqty = da.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum(); //鑾峰彇鍚屽崟鍙�,鍚屽伐搴�,鍚屽鍗忎緵搴斿晢鍙戞枡鎬绘暟閲�
- if ((sum_sqty + decimal.Parse(sqty) + decimal.Parse(ngqty)) > sum_fqty) //宸叉敹鏂欐�绘暟+褰撳墠鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鎬诲彂鏂欐暟閲�
+ if ((sum_sqty + decimal.Parse(sqty) + ngqty) > sum_fqty) //宸叉敹鏂欐�绘暟+褰撳墠鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鎬诲彂鏂欐暟閲�
{
mes.code = "300";
mes.count = 0;
@@ -2575,14 +2866,14 @@
values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
- if (badcode != "" && ngqty != "0")
+ if (groupedItems.Count > 0)
{
//鍐欏叆缂洪櫡璁板綍琛�
- for (int i = 0; i < arra1.Length; i++)
+ for (int i = 0; i < groupedItems.Count; i++)
{
- sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
- values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
- list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "S", lm_user = username, lm_date = date } });
+ sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date)
+ values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+ list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty = groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "S", lm_user = username, lm_date = date } });
}
}
@@ -2624,14 +2915,14 @@
values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
- if (badcode != "" && ngqty != "0")
+ if (groupedItems.Count > 0)
{
//鍐欏叆缂洪櫡璁板綍琛�
- for (int i = 0; i < arra1.Length; i++)
+ for (int i = 0; i < groupedItems.Count; i++)
{
- sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
- values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
- list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "S", lm_user = username, lm_date = date } });
+ sql = @"insert into CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date)
+ values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+ list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty = groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "S", lm_user = username, lm_date = date } });
}
}
@@ -2704,7 +2995,7 @@
str = sql,
parm = new
{
- m_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+ m_id = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString())
}
@@ -2721,18 +3012,33 @@
bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
- id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+ id = int.Parse(json.Data.Rows[i]["M_ID"].ToString())
}
});
- //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
- sql = @"insert into CSR_WorkRecord_DefectHandle(record_subid,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date)
- values(@record_subid,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+ //鍥炲啓缂洪櫡璁板綍琛ㄧ殑寰呭鐞嗘暟閲�
+ sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@bad_qty,defect_pendqty=defect_pendqty-@repair_qty-@bad_qty,bad_qty=bad_qty+@bad_qty
+ where wo_code=@wo_code and step_code=@step_code and id=@id and style='B'";
list.Add(new
{
str = sql,
parm = new
{
- record_subid = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
+ repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+ bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
+ wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+ step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
+ id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+ }
+ });
+ //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+ sql = @"insert into CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date)
+ values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+ list.Add(new
+ {
+ str = sql,
+ parm = new
+ {
+ defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
stepseq = json.Data.Rows[i]["SEQ"].ToString(),
@@ -2760,7 +3066,7 @@
str = sql,
parm = new
{
- m_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+ m_id = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString())
}
@@ -2777,18 +3083,33 @@
bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
- id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+ id = int.Parse(json.Data.Rows[i]["M_ID"].ToString())
}
});
- //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
- sql = @"insert into CSR_WorkRecord_DefectHandle(record_subid,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date)
- values(@record_subid,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+ //鍥炲啓缂洪櫡璁板綍琛ㄧ殑寰呭鐞嗘暟閲�
+ sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@bad_qty,defect_pendqty=defect_pendqty-@repair_qty-@bad_qty,bad_qty=bad_qty+@bad_qty
+ where wo_code=@wo_code and step_code=@step_code and id=@id and style='S'";
list.Add(new
{
str = sql,
parm = new
{
- record_subid = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
+ repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+ bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
+ wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+ step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
+ id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+ }
+ });
+ //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+ sql = @"insert into CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date)
+ values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+ list.Add(new
+ {
+ str = sql,
+ parm = new
+ {
+ defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
stepseq = json.Data.Rows[i]["SEQ"].ToString(),
@@ -3025,7 +3346,7 @@
#endregion
#region[宸ュ簭妫�楠�,鎻愪氦]
- public static ToMessage SaveMesOrderStepCheckItem(string stu_torgcode,string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, string username)
+ public static ToMessage SaveMesOrderStepCheckItem(string stu_torgcode, string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, string username)
{
var sql = "";
string checktypename = "";
@@ -3132,7 +3453,7 @@
#region[MES宸ュ崟鎵归噺鍏抽棴鏌ヨ]
- public static ToMessage MesOrderBitchClosedSearch(string stu_torgcode,string stu_torgtypecode,string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+ public static ToMessage MesOrderBitchClosedSearch(string stu_torgcode, string stu_torgtypecode, string mesorderstus, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
{
var dynamicParams = new DynamicParameters();
string search = "";
@@ -3167,6 +3488,11 @@
{
search += "and A.m_po like '%'+@sourceorder+'%' ";
dynamicParams.Add("@sourceorder", sourceorder);
+ }
+ if (saleordercode != "" && saleordercode != null)
+ {
+ search += "and W.saleOrderCode like '%'+@saleordercode+'%' ";
+ dynamicParams.Add("@saleordercode", saleordercode);
}
if (ordertype != "" && ordertype != null)
{
@@ -3206,11 +3532,12 @@
// --------------鏌ヨ鎸囧畾鏁版嵁--------------
var total = 0; //鎬绘潯鏁�
var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
- A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date
+ A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,W.saleOrderCode,U.username as lm_user,A.lm_date
,(select sum(S.good_qty) from TK_Wrk_Step S where S.wo_code=A.wo_code and S.isend='Y') as good_qty
,(select sum(S.ng_qty) from TK_Wrk_Step S where S.wo_code=A.wo_code and S.isend='Y') as ng_qty
,(select sum(S.bad_qty) from TK_Wrk_Step S where S.wo_code=A.wo_code and S.isend='Y') as bad_qty
from TK_Wrk_Man A
+ left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code and A.sourceid=W.id
left join TMateriel_Info B on A.materiel_code=B.partcode
left join TOrganization C on A.wkshp_code=C.org_code
left join T_Sec_Stck D on A.stck_code=D.code
@@ -4816,7 +5143,7 @@
inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.step_code=S.step_code
inner join TK_Wrk_Man M on S.wo_code=M.wo_code
inner join TMateriel_Info P on M.materiel_code=P.partcode
- left join TKimp_Ewo E on M.sourceid=E.id
+ left join TKimp_Ewo E on M.sourceid=E.id
left join T_Sec_Stck K on E.stck_code=K.code
where A.style='B' and S.isend='Y' and A.good_qty>0
union all
--
Gitblit v1.9.3