From 8fdbaa96f141543fe9f6210975734809a209a0c8 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期五, 07 六月 2024 15:03:16 +0800
Subject: [PATCH] 1.报工增加按序和不按序报工操作,工序调整增加按序和不按序报工调整 2.增加SOP管理:设备SOP管理、工艺SOP管理功能
---
VueWebCoreApi/Tools/ScanStartReport.cs | 485 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 468 insertions(+), 17 deletions(-)
diff --git a/VueWebCoreApi/Tools/ScanStartReport.cs b/VueWebCoreApi/Tools/ScanStartReport.cs
index 779e32b..8cdd831 100644
--- a/VueWebCoreApi/Tools/ScanStartReport.cs
+++ b/VueWebCoreApi/Tools/ScanStartReport.cs
@@ -13,7 +13,7 @@
public static ToMessage mes = new ToMessage(); //瀹氫箟鍏ㄥ眬杩斿洖淇℃伅瀵硅薄
- #region[鐢熶骇寮�鎶ュ伐:鑷埗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇锛氬伐鍗�+宸ュ簭鏉$爜]
+ #region[鐢熶骇寮�鎶ュ伐:鑷埗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇锛氬伐鍗�+宸ュ簭鏉$爜,鎸夊簭鐢熶骇]
/// <summary>
/// 鎵爜淇℃伅涓哄伐鍗�+宸ュ簭鏉$爜
/// </summary>
@@ -67,7 +67,7 @@
rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //宸ュ簭缂栫爜
rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //宸ュ簭鍚嶇О
rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //宸ュ簭鎻忚堪
- rt.stepprice= data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
+ rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
flwtype = data.Rows[0]["FLWTYPE"].ToString();//鑾峰彇宸ュ簭灞炴��
@@ -133,7 +133,7 @@
{
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - good_qty - ng_qty - laborbad_qty - materielbad_qty; //鏈姤鏁伴噺=浠诲姟鏁伴噺-宸叉姤鏁伴噺-涓嶈壇鏁伴噺-宸ュ簾鏁伴噺-鏂欏簾鏁伴噺
- rt.reportqty = good_qty + ng_qty + laborbad_qty+ materielbad_qty; //宸叉姤鏁伴噺=鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺
+ rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //宸叉姤鏁伴噺=鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺
mes.code = "200";
mes.count = 1;
mes.message = "鏌ユ壘鎴愬姛!";
@@ -185,7 +185,7 @@
decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾鎬诲伐搴熸暟閲�
decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鎬绘枡搴熸暟閲�
//鏈亾鍓╀綑鍙姤鏁伴噺=涓婇亾鎶ュ伐鎬绘暟閲�-鏈亾鎶ュ伐鎬绘暟閲�-鏈亾涓嶈壇鎬绘暟閲�-鏈亾宸ュ簾鎬绘暟-鏈亾鏂欏簾鎬绘暟
- decimal sybqty = sgood_qty - good_qty - ng_qty - laborbad_qty- materielbad_qty;
+ decimal sybqty = sgood_qty - good_qty - ng_qty - laborbad_qty - materielbad_qty;
if (sybqty <= 0)
{
mes.code = "300";
@@ -206,7 +206,7 @@
}
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = sybqty; //鏈姤鏁伴噺=鏈亾鍓╀綑鍙姤鏁伴噺
- rt.reportqty = good_qty + ng_qty + laborbad_qty+ materielbad_qty;//宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾宸ュ簾鎬绘暟+鏈亾鏂欏簾鎬绘暟
+ rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty;//宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾宸ュ簾鎬绘暟+鏈亾鏂欏簾鎬绘暟
mes.code = "200";
mes.count = 1;
mes.message = "寮圭獥鎶ュ伐鐣岄潰!";
@@ -237,7 +237,7 @@
decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾鎬诲伐搴熸暟閲�
decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鎬绘枡搴熸暟閲�
//鏈亾鍓╀綑鍙姤鏁伴噺=涓婇亾鏀舵枡鎬绘暟閲�-鏈亾鎶ュ伐鎬绘暟閲�-鏈亾涓嶈壇鎬绘暟閲�-鏈亾鎬诲伐搴熸暟閲�-鏈亾鎬绘枡搴熸暟閲�
- decimal sybqty = sqty - good_qty - ng_qty - laborbad_qty- materielbad_qty;
+ decimal sybqty = sqty - good_qty - ng_qty - laborbad_qty - materielbad_qty;
if (sybqty <= 0)
{
mes.code = "300";
@@ -258,7 +258,7 @@
}
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = sybqty; //鏈姤鏁伴噺=鏈亾鍓╀綑鍙姤鏁伴噺
- rt.reportqty = good_qty + ng_qty + laborbad_qty+materielbad_qty; //宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾鎬诲伐搴熸暟+鏈亾鎬绘枡搴熸暟
+ rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾鎬诲伐搴熸暟+鏈亾鎬绘枡搴熸暟
mes.code = "200";
mes.count = 1;
mes.message = "鏌ユ壘鎴愬姛!";
@@ -385,7 +385,7 @@
}
#endregion
- #region[鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭]
+ #region[鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭,鎸夊簭鏀跺彂鏂橾
/// <summary>
/// 鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭
/// </summary>
@@ -502,7 +502,7 @@
decimal ng_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();// 涓嶈壇鏁伴噺
decimal laborbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //宸ュ簾鏁伴噺
decimal materielbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏂欏簾鏁伴噺
- decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty-materielbad_qty; //鍓╀綑鍙彂鏁伴噺
+ decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty - materielbad_qty; //鍓╀綑鍙彂鏁伴噺
if (kfqty <= 0)
{
mes.code = "300";
@@ -570,7 +570,7 @@
decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾宸ュ簾鏁伴噺
decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鏂欏簾鏁伴噺
//鏈亾鍓╀綑鍙彂鏁伴噺=涓婇亾鎶ュ伐鏁伴噺-鏈亾鍙戞枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
- decimal sybqty = sgood_qty - sqty - ng_qty - laborbad_qty- materielbad_qty;
+ decimal sybqty = sgood_qty - sqty - ng_qty - laborbad_qty - materielbad_qty;
if (sybqty <= 0)
{
mes.code = "300";
@@ -591,7 +591,7 @@
}
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = sybqty; //鏈彂鏁伴噺=鍓╀綑鍙彂鏁伴噺
- rt.reportqty = sqty + ng_qty + laborbad_qty+ materielbad_qty; //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺
+ rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺
rt.startqty = sybqty; //鏀舵枡鏁伴噺=鍓╀綑鍙彂鏁伴噺
mes.code = "200";
@@ -624,7 +624,7 @@
decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾宸ュ簾鏁伴噺
decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鏂欏簾鏁伴噺
//鏈亾鍓╀綑鍙彂鏁伴噺=涓婇亾鏀舵枡鏁伴噺-鏈亾鍙戞枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
- decimal sybqty = ssqty - sqty - ng_qty - laborbad_qty-materielbad_qty;
+ decimal sybqty = ssqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
if (sybqty <= 0)
{
mes.code = "300";
@@ -645,7 +645,7 @@
}
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = sybqty; //鏈彂鏁伴噺=鍓╀綑鍙彂鏁伴噺
- rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty; //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺
+ rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺
rt.startqty = sybqty; //鏀舵枡鏁伴噺=鍓╀綑鍙彂鏁伴噺
mes.code = "200";
@@ -815,7 +815,7 @@
decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾宸ュ簾鏁伴噺
decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鏂欏簾鏁伴噺
//鍓╀綑鍙彂鏁伴噺=鏈亾鍙戞枡鏁伴噺-鏈亾鏀舵枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
- decimal ksqty = fqty - sqty - ng_qty - laborbad_qty-materielbad_qty;
+ decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
if (ksqty <= 0)
{
mes.code = "300";
@@ -828,7 +828,7 @@
{
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = ksqty; //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
- rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty; //宸叉敹鏁伴噺
+ rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //宸叉敹鏁伴噺
rt.startqty = ksqty; //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺
data0.Merge(data1);//灏嗘寚瀹氱殑dt鍚堝苟
@@ -938,7 +938,7 @@
decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾宸ュ簾鏁伴噺
decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鏂欏簾鏁伴噺
//鍓╀綑鍙彂鏁伴噺=鏈亾鍙戞枡鏁伴噺-鏈亾鏀舵枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
- decimal ksqty = fqty - sqty - ng_qty - laborbad_qty- materielbad_qty;
+ decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
if (ksqty <= 0)
{
mes.code = "300";
@@ -951,7 +951,7 @@
{
rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
rt.noreportqty = ksqty; //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
- rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty; //宸叉敹鏁伴噺
+ rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //宸叉敹鏁伴噺
rt.startqty = ksqty; //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺
data1.Merge(data2);//灏嗘寚瀹氱殑dt鍚堝苟
@@ -1046,5 +1046,456 @@
return mes;
}
#endregion
+
+
+ #region[鐢熶骇寮�鎶ュ伐:鑷埗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇锛氬伐鍗�+宸ュ簭鏉$爜,涓嶆寜搴忕敓浜
+ /// <summary>
+ /// 鎵爜淇℃伅涓哄伐鍗�+宸ュ簭鏉$爜
+ /// </summary>
+ /// <param name="ordercode">宸ュ崟缂栧彿</param>
+ /// <param name="stepcode">宸ュ簭缂栫爜</param>
+ /// <returns></returns>
+ public static ToMessage NoZZEncodingSeach(string ordercode, string stepcode)
+ {
+ var sql = "";
+ string flwtype = ""; //宸ュ簭灞炴��
+ string isbott = ""; //棣栭亾宸ュ簭
+ string isend = ""; //鏈亾宸ュ簭
+ List<object> list = new List<object>();
+ ScanStartReportData rt = new ScanStartReportData();
+ var dynamicParams = new DynamicParameters();
+ try
+ {
+ //鍒ゆ柇褰撳墠宸ュ崟鏄惁鍏抽棴
+ sql = @"select * from TK_Wrk_Man where wo_code=@ordercode and status='CLOSED'";
+ dynamicParams.Add("@ordercode", ordercode);
+ var da0 = DapperHelper.selectdata(sql, dynamicParams);
+ if (da0.Rows.Count > 0)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ崟宸插叧闂�,涓嶅厑璁稿紑鎶ュ伐鎿嶄綔!";
+ mes.data = null;
+ return mes;
+ }
+
+ //1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
+ sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.stepprice,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name
+ 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 TMateriel_Info P on M.materiel_code=P.partcode
+ left join TOrganization L on M.wkshp_code=L.torg_code
+ where A.wo_code=@ordercode and A.step_code=@stepcode";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@stepcode", stepcode);
+ var data = DapperHelper.selectdata(sql, dynamicParams);
+ if (data.Rows.Count > 0)
+ {
+ rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //杞﹂棿缂栫爜
+ rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //杞﹂棿鍚嶇О
+ rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
+ rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
+ rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
+ rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //浜у搧瑙勬牸
+ rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //宸ュ簭缂栫爜
+ rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //宸ュ簭鍚嶇О
+ rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //宸ュ簭鎻忚堪
+ rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+
+ flwtype = data.Rows[0]["FLWTYPE"].ToString();//鑾峰彇宸ュ簭灞炴��
+ isbott = data.Rows[0]["ISBOTT"].ToString();//棣栭亾宸ュ簭
+ isend = data.Rows[0]["ISEND"].ToString();//鏈亾宸ュ簭
+ rt.seq = data.Rows[0]["SEQ"].ToString();//宸ュ簭搴忓彿
+
+ //鑾峰彇褰撳墠宸ュ簭涓嬮亾宸ュ簭
+ sql = @"select A.isbott,A.isend,T.stepcode,T.stepname,A.stepprice from TK_Wrk_Step A
+ left join TStep T on A.step_code=T.stepcode
+ where A.wo_code=@ordercode and A.seq=@seq+1 ";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
+ var dt = DapperHelper.selectdata(sql, dynamicParams);
+ if (dt.Rows.Count > 0) //鏈変笅閬撳伐搴�
+ {
+ rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//涓嬮亾宸ュ簭缂栫爜
+ rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//涓嬮亾宸ュ簭鍚嶇О
+ rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
+ }
+ if (isend == "Y") //褰撳墠宸ュ簭鏄湯閬撳伐搴�
+ {
+ rt.nextstepcode = "";//data.Rows[0]["STEPCODE"].ToString();//褰撳墠宸ュ簭缂栫爜
+ rt.nextstepname = "";// data.Rows[0]["STEPNAME"].ToString();//褰撳墠宸ュ簭鍚嶇О
+ rt.nextstepprice = "";// data.Rows[0]["STEPPRICE"].ToString();//褰撳墠宸ュ簭宸ヤ环
+ }
+ }
+ else
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ簭浠诲姟涓嶅瓨鍦�!";
+ mes.data = null;
+ return mes;
+ }
+ switch (flwtype)
+ {
+ case "Z": //鑷埗宸ュ簭
+ //棣栭亾宸ュ簭鏃讹紝鍒ゆ柇鏄惁鏈夋姤宸ヨ褰�
+ sql = @"select * from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@stepcode", stepcode);
+ var data1 = DapperHelper.selectdata(sql, dynamicParams);
+ if (data1.Rows.Count > 0)
+ {
+ decimal good_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("GOOD_QTY")).Sum(); //鎶ュ伐鎬绘暟閲�
+ decimal ng_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum(); //涓嶈壇鏁伴噺
+ decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //宸ュ簾鏁伴噺
+ decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏂欏簾鏁伴噺
+ //鍓╀綑鍙姤宸ユ暟閲�=浠诲姟鏁伴噺-(鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾搴熸暟閲�+鏂欏簾鏁伴噺)
+ decimal kbqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - (good_qty + ng_qty + laborbad_qty + materielbad_qty);
+ if (kbqty <= 0)//鏃犲彲鎶ュ伐鏁伴噺
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ簭鏃犲彲鎶ュ伐鏁伴噺!";
+ mes.data = null;
+ return mes;
+ }
+ else
+ {
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - good_qty - ng_qty - laborbad_qty - materielbad_qty; //鏈姤鏁伴噺=浠诲姟鏁伴噺-宸叉姤鏁伴噺-涓嶈壇鏁伴噺-宸ュ簾鏁伴噺-鏂欏簾鏁伴噺
+ rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //宸叉姤鏁伴噺=鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺
+ mes.code = "200";
+ mes.count = 1;
+ mes.message = "鏌ユ壘鎴愬姛!";
+ mes.data = rt;
+ }
+ }
+ else
+ {
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //鏈姤鏁伴噺
+ rt.reportqty = 0; //宸叉姤鏁伴噺
+ mes.code = "200";
+ mes.count = 1;
+ mes.message = "鏌ユ壘鎴愬姛!";
+ mes.data = rt;
+ }
+ break;
+ case "W": //澶栧崗宸ュ簭
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ崟宸ュ簭浠诲姟涓哄鍗�,璇峰墠寰�澶栧崗鎿嶄綔鏍囩椤垫搷浣�!";
+ mes.data = null;
+ break;
+ default: //鑷埗+澶栧崗宸ュ簭
+ break;
+ }
+ }
+ catch (Exception e)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = e.Message;
+ mes.data = null;
+ return mes;
+ }
+ return mes;
+ }
+ #endregion
+
+ #region[鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭,鎸夊簭鏀跺彂鏂橾
+ /// <summary>
+ /// 鎵爜淇℃伅涓哄伐鍗�+宸ュ簭鏉$爜
+ /// </summary>
+ /// <param name="ordercode">宸ュ崟缂栧彿</param>
+ /// <param name="stepcode">宸ュ簭缂栫爜</param>
+ /// <returns></returns>
+ public static ToMessage NoWXEncodingSeach(string SelectType, string ordercode, string stepcode)
+ {
+ var sql = "";
+ string flwtype = ""; //宸ュ簭灞炴��
+ string isbott = ""; //棣栭亾宸ュ簭
+ string isend = ""; //鏈亾宸ュ簭
+ List<object> list = new List<object>();
+ ScanStartReportDataOut rt = new ScanStartReportDataOut();
+ var dynamicParams = new DynamicParameters();
+ try
+ {
+ //鍒ゆ柇褰撳墠宸ュ崟鏄惁鍏抽棴
+ sql = @"select * from TK_Wrk_Man where wo_code=@ordercode and status='CLOSED'";
+ dynamicParams.Add("@ordercode", ordercode);
+ var da0 = DapperHelper.selectdata(sql, dynamicParams);
+ if (da0.Rows.Count > 0)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ崟宸插叧闂�,涓嶅厑璁稿紑鎶ュ伐鎿嶄綔!";
+ mes.data = null;
+ return mes;
+ }
+
+ //1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
+ sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.stepprice,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name
+ 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 TMateriel_Info P on M.materiel_code=P.partcode
+ left join TOrganization L on M.wkshp_code=L.torg_code
+ where A.wo_code=@ordercode and A.step_code=@stepcode";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@stepcode", stepcode);
+ var data = DapperHelper.selectdata(sql, dynamicParams);
+ if (data.Rows.Count > 0)
+ {
+ rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //杞﹂棿缂栫爜
+ rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //杞﹂棿鍚嶇О
+ rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
+ rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
+ rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
+ rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //浜у搧瑙勬牸
+ rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //宸ュ簭缂栫爜
+ rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //宸ュ簭鍚嶇О
+ rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //宸ュ簭鎻忚堪
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
+ flwtype = data.Rows[0]["FLWTYPE"].ToString();//鑾峰彇宸ュ簭灞炴��
+ isbott = data.Rows[0]["ISBOTT"].ToString();//棣栭亾宸ュ簭
+ isend = data.Rows[0]["ISEND"].ToString();//鏈亾宸ュ簭
+ rt.seq = data.Rows[0]["SEQ"].ToString();//宸ュ簭搴忓彿
+
+ //鑾峰彇褰撳墠宸ュ簭涓嬮亾宸ュ簭
+ sql = @"select A.isbott,A.isend,T.stepcode,T.stepname,A.stepprice from TK_Wrk_Step A
+ left join TStep T on A.step_code=T.stepcode
+ where A.wo_code=@ordercode and A.seq=@seq+1 ";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
+ var dt = DapperHelper.selectdata(sql, dynamicParams);
+ if (dt.Rows.Count > 0) //鏈変笅閬撳伐搴�
+ {
+ rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//涓嬮亾宸ュ簭缂栫爜
+ rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//涓嬮亾宸ュ簭鍚嶇О
+ rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
+ }
+ if (isend == "Y") //褰撳墠宸ュ簭鏄湯閬撳伐搴�
+ {
+ rt.nextstepcode = "";// data.Rows[0]["STEPCODE"].ToString();//褰撳墠宸ュ簭缂栫爜
+ rt.nextstepname = "";// data.Rows[0]["STEPNAME"].ToString();//褰撳墠宸ュ簭鍚嶇О
+ rt.nextstepprice = ""; //data.Rows[0]["NEXTSTEPPRICE"].ToString();//涓嬮亾宸ュ簭宸ヤ环
+ }
+ }
+ else
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠鎵爜宸ュ簭浠诲姟涓嶅瓨鍦�!";
+ mes.data = null;
+ return mes;
+ }
+ switch (SelectType)
+ {
+ case "OUT": //鍙戞枡
+ switch (flwtype)
+ {
+ case "Z":
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠鏍囩涓鸿嚜鍒舵爣绛�,璇峰墠寰�鑷埗鎿嶄綔鏍囩椤垫壂鐮�!";
+ mes.data = null;
+ break;
+ case "W":
+ //1.鍒ゆ柇鏄惁鏈夊彂鏂欒褰�
+ sql = @"select * from TK_Wrk_OutRecord R
+ left join TCustomer C on R.wx_code=C.code
+ where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@stepcode", stepcode);
+ var data0 = DapperHelper.selectdata(sql, dynamicParams);
+ if (data0.Rows.Count > 0) //鏈夊彂鏂欒褰�
+ {
+ decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum(); //鍙戞枡鏁伴噺
+ decimal ng_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();// 涓嶈壇鏁伴噺
+ decimal laborbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //宸ュ簾鏁伴噺
+ decimal materielbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏂欏簾鏁伴噺
+ decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty - materielbad_qty; //鍓╀綑鍙彂鏁伴噺
+ if (kfqty <= 0)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ簭鏃犲彲鍙戞枡鏁伴噺!";
+ mes.data = null;
+ return mes;
+ }
+ else
+ {
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.noreportqty = kfqty; //鏈彂鏁伴噺=鍓╀綑鍙彂鏁伴噺
+ rt.reportqty = fqty; //宸插彂鏁伴噺= 鍙戞枡鏁伴噺
+ rt.startqty = kfqty; //鍙戞枡鏁伴噺=鍓╀綑鍙彂鏁伴噺
+ mes.code = "200";
+ mes.count = 2;
+ mes.message = "鏌ヨ鎴愬姛!";
+ mes.data = rt;
+ }
+ }
+ else
+ {
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //鏈彂鏁伴噺=浠诲姟鏁伴噺
+ rt.reportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //宸插彂鏁伴噺=浠诲姟鏁伴噺
+ rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //鍙戞枡鏁伴噺=浠诲姟鏁伴噺
+ mes.code = "200";
+ mes.count = 2;
+ mes.message = "寮圭獥鍙戞枡鐣岄潰!";
+ mes.data = rt;
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ case "IN": //鏀舵枡
+ switch (flwtype)
+ {
+ case "Z"://鑷埗
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠鏍囩涓鸿嚜鍒舵爣绛�,璇峰墠寰�鑷埗鎿嶄綔鏍囩椤垫壂鐮�!";
+ mes.data = null;
+ break;
+ case "W":
+
+ //1.鍒ゆ柇鏄惁鏈夊彂鏂欒褰�
+ sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code,
+ isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty
+ from TK_Wrk_OutRecord R
+ left join TCustomer C on R.wx_code=C.code
+ where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'
+ group by R.wo_code,R.step_code,R.wx_code,C.name,R.materiel_code";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@stepcode", stepcode);
+ var data0 = DapperHelper.selectdata(sql, dynamicParams);
+ if (data0.Rows.Count > 0) //鏈夊彂鏂欒褰�
+ {
+ //1.鍒ゆ柇鏄惁鏈夋敹鏂欒褰�
+ sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code,
+ isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty
+ from TK_Wrk_OutRecord R
+ left join TCustomer C on R.wx_code=C.code
+ where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='S'
+ group by R.wo_code,R.step_code,R.wx_code,C.name,R.materiel_code";
+ dynamicParams.Add("@ordercode", ordercode);
+ dynamicParams.Add("@stepcode", stepcode);
+ var data1 = DapperHelper.selectdata(sql, dynamicParams);
+ if (data1.Rows.Count > 0) //鏈夋敹鏂欒褰�
+ {
+ decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();//鏈亾鍙戞枡鏁伴噺
+ decimal sqty = data1.AsEnumerable().Select(d => d.Field<decimal>("SQTY")).Sum();//鏈亾鏀舵枡鏁伴噺
+ decimal ng_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();//鏈亾涓嶈壇鏁伴噺
+ decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //鏈亾宸ュ簾鏁伴噺
+ decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //鏈亾鏂欏簾鏁伴噺
+ //鍓╀綑鍙彂鏁伴噺=鏈亾鍙戞枡鏁伴噺-鏈亾鏀舵枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
+ decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
+ if (ksqty <= 0)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ簭锛�" + data.Rows[0]["STEPNAME"].ToString() + " 鏃犲彲鏀舵枡鏁伴噺!";
+ mes.data = null;
+ return mes;
+ }
+ else
+ {
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.noreportqty = ksqty; //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
+ rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //宸叉敹鏁伴噺
+ rt.startqty = ksqty; //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺
+
+ data0.Merge(data1);//灏嗘寚瀹氱殑dt鍚堝苟
+ rt.list = data0.AsEnumerable().GroupBy(r => new
+ {
+ wo_code = r["wo_code"],
+ step_code = r["step_code"],
+ code = r["code"],
+ name = r["name"]
+ }).Select(g => new
+ {
+ Name = g.Key.code,
+ tp = g.Key.name,
+ fqty = g.Sum(i => (decimal)i["fqty"]),
+ sqty = g.Sum(i => (decimal)i["sqty"]),
+ ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
+ laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+ materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
+ }).ToList();
+
+ mes.code = "200";
+ mes.count = 3;
+ mes.message = "寮圭獥鏀舵枡鐣岄潰!";
+ mes.data = rt;
+ }
+
+ }
+ else
+ {
+ decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();//鏈亾鍙戞枡鏁伴噺
+ rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+ rt.noreportqty = fqty; //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
+ rt.reportqty = 0; //宸叉敹鏁伴噺
+ rt.startqty = fqty; //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺
+ //
+ data0.Merge(data1);//灏嗘寚瀹氱殑dt鍚堝苟
+ rt.list = data0.AsEnumerable().GroupBy(r => new
+ {
+ wo_code = r["wo_code"],
+ step_code = r["step_code"],
+ code = r["code"],
+ name = r["name"]
+ }).Select(g => new
+ {
+ Name = g.Key.code,
+ tp = g.Key.name,
+ fqty = g.Sum(i => (decimal)i["fqty"]),
+ sqty = g.Sum(i => (decimal)i["sqty"]),
+ ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
+ laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+ materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
+ }).ToList();
+
+ mes.code = "200";
+ mes.count = 3;
+ mes.message = "寮圭獥鏀舵枡鐣岄潰!";
+ mes.data = rt;
+ }
+ }
+ else
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = "褰撳墠宸ュ簭锛�" + data.Rows[0]["STEPNAME"].ToString() + " 鏈彂鏂�,璇峰厛鍙戞枡!";
+ mes.data = null;
+ return mes;
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ catch (Exception e)
+ {
+ mes.code = "300";
+ mes.count = 0;
+ mes.message = e.Message;
+ mes.data = null;
+ return mes;
+ }
+ return mes;
+ }
+ #endregion
}
}
\ No newline at end of file
--
Gitblit v1.9.3