%@ WebHandler Language="C#" Class="testformgoods" %>
using System;
using System.Web;
using System.Web.SessionState;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using Curtain.DataAccess;
using DK.XuWei.WebMes;
///
/// TP_PM_TESTFORM2_GOODS
/// xuwei create 2021-08-31
///
public class testformgoods : IHttpHandler, IReadOnlySessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (mes.LoginCheck() && context.Request["m"] is object)
{
Button b = new Button();
if(mes.RightCheck(""))
{
b.testformgoodsButtonIndex = true;
b.testformgoodsButtonInsert = true;
b.testformgoodsButtonInsertBatch = true;
b.testformgoodsButtonCopy = true;
b.testformgoodsButtonUpdate = true;
b.testformgoodsButtonDelete = true;
b.testformgoodsButtonCancel = true;
b.testformgoodsButtonSearch = true;
b.testformgoodsButtonDetail = true;
b.testformgoodsButtonCheckbox = true;
b.testformgoodsButtonExport = true;
b.testformgoodsButtonReload = true;
};
switch (context.Request["m"].ToString().ToLower())
{
case "b":
{
//按钮
context.Response.Write(new JsonResult(b).ToJson());
break;
}
case "a":
{
//添加
//if (b.testformgoodsButtonDetail && context.Request["id"] is object)
if (b.testformgoodsButtonDetail)
context.Response.Write(detail());
else
{
List list = new List();
xRecord r = new xRecord();
list.Add(r);
context.Response.Write(new JsonResult(list).ToJson());
}
break;
}
case "s":
{
//搜索
if (b.testformgoodsButtonIndex)
context.Response.Write(search(context.Request.Form));
else
context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
break;
}
case "t":
{
//详细
if (b.testformgoodsButtonDetail)
context.Response.Write(detail());
else
context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
break;
}
case "i":
{
//插入
if (b.testformgoodsButtonInsert)
context.Response.Write(insert(context.Request.Form));
else
context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
break;
}
case "u":
{
//修改
if (b.testformgoodsButtonUpdate)
context.Response.Write(update(context.Request.Form));
else
context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
break;
}
case "d":
{
//删除
if (b.testformgoodsButtonDelete)
context.Response.Write(delete());
else
context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
break;
}
case "e":
{
//导出
if (b.testformgoodsButtonExport)
{
context.Response.Write(export());
}
else
{
context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
}
break;
}
default:
{
break;
}
}
}
else
{
context.Response.Write(new JsonResult(JsonStatus.loginError).ToJson());
}
}
///
/// TP_PM_TESTFORM2_GOODS 查询
///
/// json
private string search(NameValueCollection form)
{
using(IDataAccess conn=DataAccess.Create())
{
int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "";
string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
//暂时开放所有权限
string right = "ALL";
string sqlStr = @"
WITH
--取测试产品
GOODS AS
(
SELECT
TF.NAME,
TFG.GUID,
TFG.TESTFORMGUID,
TFG.BARCODE,
TFG.CREATEUSERID,
TFG.CREATETIME
FROM
TP_PM_TESTFORM2_GOODS TFG
INNER JOIN TP_PM_TESTFORM2 TF ON TFG.TESTFORMGUID = TF.ID
WHERE
TFG.VALUEFLAG = 1
AND TF.VALUEFLAG = 1
AND TFG.TESTFORMGUID = @TESTFORMGUID@
),
--取注浆信息
GROUTING AS
(
SELECT
GDD.BARCODE,
GDD.GOODSCODE,
GLT.GOODSLEVELTYPENAME,
GDD.GROUTINGDATE,
GDD.GROUTINGLINECODE,
GDD.MOULDCODE,
GDD.USERCODE,
GDD.DELIVERTIME,
GDD.SCRAPFLAG,
GDD.SPECIALREPAIRFLAG
FROM
GOODS
LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GOODS.BARCODE = GDD.BARCODE
LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT ON GDD.GOODSLEVELTYPEID = GLT.GOODSLEVELTYPEID
),
--取生产数据
PRODUCTIONDATA AS
(
SELECT
P.*
FROM
GOODS G
LEFT JOIN TP_PM_PRODUCTIONDATA P ON P.BARCODE = G.BARCODE
WHERE
P.VALUEFLAG = 1
),
--取工序信息
PROCEDUREDATA AS
(
SELECT
P.PRODUCTIONDATAID,
P.BARCODE,
P.PROCEDURENAME,
P.USERCODE,
P.ISREFIRE,
P.ISREWORKED
FROM
PRODUCTIONDATA P
WHERE
P.PRODUCTIONDATAID IN (SELECT MAX( MID.PRODUCTIONDATAID ) FROM PRODUCTIONDATA MID GROUP BY MID.BARCODE)
GROUP BY
P.PRODUCTIONDATAID,
P.BARCODE,
P.PROCEDURENAME,
P.USERCODE,
P.ISREFIRE,
P.ISREWORKED
),
--取半检信息(一检 88:3#交坯 91:3#毛坯库入)
SEMICHECK1 AS
(
SELECT
S.BARCODE,
LISTAGG(TO_CHAR(D.DEFECTNAME) || '_' ||TO_CHAR(D.DEFECTPOSITIONNAME), ',') WITHIN GROUP (ORDER BY S.BARCODE) AS DEFECTNAME
FROM
GOODS G
LEFT JOIN TP_PM_SEMICHECK S ON S.BARCODE = G.BARCODE
LEFT JOIN TP_PM_SEMICHECKDEFECT D ON D.SEMICHECKID = S.SEMICHECKID
WHERE
S.VALUEFLAG = 1
AND D.VALUEFLAG = 1
AND S.PROCEDUREID IN (88,91)
GROUP BY
S.BARCODE
),
--取半检信息(二检 117:3#二检[半检])
SEMICHECK2 AS
(
SELECT
S.BARCODE,
LISTAGG(TO_CHAR(D.DEFECTNAME) || '_' ||TO_CHAR(D.DEFECTPOSITIONNAME), ',') WITHIN GROUP (ORDER BY S.BARCODE) AS DEFECTNAME
FROM
GOODS G
LEFT JOIN TP_PM_SEMICHECK S ON S.BARCODE = G.BARCODE
LEFT JOIN TP_PM_SEMICHECKDEFECT D ON D.SEMICHECKID = S.SEMICHECKID
WHERE
S.VALUEFLAG = 1
AND D.VALUEFLAG = 1
AND S.PROCEDUREID IN (117)
GROUP BY
S.BARCODE
),
--取成检信息
PRODUCTIONCHECK AS
(
SELECT
P.BARCODE,
LISTAGG(TO_CHAR(D.DEFECTNAME) || '_' ||TO_CHAR(D.DEFECTPOSITIONNAME), ',') WITHIN GROUP (ORDER BY P.BARCODE) AS DEFECTNAME
FROM
GOODS G
--3#质量登记 105
INNER JOIN PRODUCTIONDATA P ON G.BARCODE = P.BARCODE AND P.MODELTYPE IN (-1, -4, -5)
AND P.CHECKBATCHNO = 1
LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT ON P.GOODSLEVELTYPEID = GLT.GOODSLEVELTYPEID
LEFT JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
WHERE
D.VALUEFLAG = 1
GROUP BY
P.BARCODE
),
--取入窑信息
KILN AS
(
SELECT
P.BARCODE,
P.KILNCODE,
P.KILNCARCODE,
P.CREATETIME
FROM
GOODS G
--3#入窑 102
INNER JOIN PRODUCTIONDATA P ON G.BARCODE = P.BARCODE AND P.PROCEDUREID = 102
)
SELECT
DISTINCT
G.GUID,
G.GUID AS SID,
G.TESTFORMGUID,
G.NAME,
GR.GOODSCODE,
GR.GOODSLEVELTYPENAME AS LASTLEVEL,
GR.GROUTINGDATE,
GR.GROUTINGLINECODE,
GR.MOULDCODE,
GR.DELIVERTIME,
GR.SCRAPFLAG,
GR.SPECIALREPAIRFLAG,
P.PRODUCTIONDATAID,
P.BARCODE,
P.PROCEDURENAME,
P.USERCODE,
P.ISREFIRE,
P.ISREWORKED,
K.KILNCODE,
K.KILNCARCODE,
K.CREATETIME AS KILNCREATETIME,
SC1.DEFECTNAME AS SEMICHECK1DEFECT,
SC2.DEFECTNAME AS SEMICHECK2DEFECT,
PC.DEFECTNAME AS CHECKDEFECT
FROM
GOODS G
LEFT JOIN GROUTING GR ON GR.BARCODE = G.BARCODE
LEFT JOIN SEMICHECK1 SC1 ON SC1.BARCODE = G.BARCODE
LEFT JOIN SEMICHECK2 SC2 ON SC2.BARCODE = G.BARCODE
LEFT JOIN PROCEDUREDATA P ON P.BARCODE = G.BARCODE
LEFT JOIN PRODUCTIONCHECK PC ON PC.BARCODE = G.BARCODE
LEFT JOIN KILN K ON K.BARCODE = G.BARCODE
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("TESTFORMGUID", HttpContext.Current.Request["TESTFORMGUID"]));
//sqlPara.Add(new CDAParameter("ACCOUNTID", HttpContext.Current.Session["accountId"]));
//sqlPara.Add(new CDAParameter("CREATEUSERID", HttpContext.Current.Session["userId"]));
//暂时开放所有权限
//sqlPara.Add(new CDAParameter("RIGHT", right));
//if(!string.IsNullOrEmpty(form["GUID"]))
//{
// sqlStr += " AND m.GUID = @GUID@ ";
// sqlPara.Add(new CDAParameter("GUID", form["GUID"]));
//}
//if(sort != "")
//{
// sqlStr += " ORDER BY " + sort + " " + order;
//}
int total = 0;
DataTable dt = conn.SelectPages(page, rows,out total, sqlStr, sqlPara.ToArray());
return new JsonResult(dt) { total = total}.ToJson();
}
}
///
/// 详细 TP_PM_TESTFORM2_GOODS
///
/// json
private string detail()
{
using(IDataAccess conn= DataAccess.Create())
{
DataTable dt = conn.ExecuteDatatable(@"
SELECT
m.GUID,
m.TESTFORMGUID,
m.BARCODE,
m.VALUEFLAG,
m.ACCOUNTID,
m.CREATEUSERID,
m.CREATETIME,
m.UPDATEUSERID,
m.UPDATETIME
FROM
TP_PM_TESTFORM2_GOODS m
LEFT JOIN
TP_PM_GROUTINGDAILYDETAIL GDD
ON m.BARCODE = GDD.BARCODE
WHERE
m.VALUEFLAG = '1'
AND m.ACCOUNTID = @ACCOUNTID@
AND m.GUID = @GUID@
",
new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
new CDAParameter("GUID",HttpContext.Current.Request["id"])
);
return new JsonResult(dt).ToJson();
}
}
///
/// 插入 TP_PM_TESTFORM2_GOODS
///
/// json
private string insert(NameValueCollection form)
{
using(IDataAccess conn= DataAccess.Create())
{
//添加产品处理
object result0 = conn.ExecuteScalar(@"
SELECT DISTINCT 1 FROM TP_PM_TESTFORM2_GOODS WHERE TESTFORMGUID = @TESTFORMID@ AND BARCODE =@BARCODE@ AND VALUEFLAG = 1
",
new CDAParameter("BARCODE", form["BARCODE"]),
new CDAParameter("TESTFORMID", form["TESTFORMGUID"])
);
string str = result0 + "";
if (str == "1")
{
return new JsonResult(JsonStatus.otherError){ success = false, message = "条码重复", total = 0, rows = "" }.ToJson();
}
object result1 = conn.ExecuteScalar(@"
SELECT DISTINCT 1 FROM TP_PM_GROUTINGDAILYDETAIL WHERE BARCODE =@BARCODE@ AND VALUEFLAG = 1
",
new CDAParameter("BARCODE", form["BARCODE"])
) ;
string str1 = result1+ "";
if (str1 == "")
{
return new JsonResult(JsonStatus.otherError){ success = false, message = "条码不存在", total = 0, rows = "" }.ToJson();
}
//string primaryKey = conn.GetSequenceNextval("SEQ_TP_PM_TESTFORM2_GOODS_ID").ToString();
//string primaryKey = Guid.NewGuid().ToString().Replace("_", "");
int result = conn.ExecuteNonQuery(@"
INSERT INTO TP_PM_TESTFORM2_GOODS (
TESTFORMGUID,
BARCODE,
ACCOUNTID,CREATEUSERID,UPDATEUSERID
) VALUES (
@TESTFORMGUID@,
@BARCODE@,
@ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
)
",
//new CDAParameter("GUID",primaryKey),
new CDAParameter("TESTFORMGUID",form["TESTFORMGUID"]),
new CDAParameter("BARCODE",form["BARCODE"]),
new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
new CDAParameter("CREATEUSERID",HttpContext.Current.Session["userId"]),
new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"])
);
int resultup = conn.ExecuteNonQuery(@"
UPDATE TP_PM_GROUTINGDAILYDETAIL
SET
TESTFORMFLAG =2
WHERE
BARCODE = @BARCODE@
",
new CDAParameter("BARCODE",form["BARCODE"])
);
return new JsonResult(JsonStatus.success).ToJson();
}
}
///
/// 更新 TP_PM_TESTFORM2_GOODS
///
/// json
private string update(NameValueCollection form)
{
using(IDataAccess conn=DataAccess.Create())
{
int result = conn.ExecuteNonQuery(@"
UPDATE TP_PM_TESTFORM2_GOODS
SET
TESTFORMGUID = @TESTFORMGUID@,
BARCODE = @BARCODE@,
UPDATEUSERID = @UPDATEUSERID@,
UPDATETIME = sysdate
WHERE
GUID = @GUID@
",
new CDAParameter("TESTFORMGUID",form["TESTFORMGUID"]),
new CDAParameter("BARCODE",form["BARCODE"]),
new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"]),
new CDAParameter("GUID",HttpContext.Current.Request["id"])
);
return new JsonResult(JsonStatus.success).ToJson();
}
}
///
/// 删除 TP_PM_TESTFORM2_GOODS
///
/// json
private string delete()
{
using(IDataAccess conn= DataAccess.Create())
{
if (HttpContext.Current.Request["id"] is object)
{
string guidStr = "'" + HttpContext.Current.Request["id"].Replace(",", "','") + "'";
DataTable dt = conn.ExecuteDatatable(@"
SELECT
BARCODE
FROM
TP_PM_TESTFORM2_GOODS
WHERE
GUID IN ( {GUID} )
".Replace("{GUID}", guidStr)
);
for (int i = 0; i < dt.Rows.Count; i++)
{
int resultup = conn.ExecuteNonQuery(@"
UPDATE TP_PM_GROUTINGDAILYDETAIL
SET
TESTFORMFLAG =0
WHERE
BARCODE = @BARCODE@
",
new CDAParameter("BARCODE", dt.Rows[i]["BARCODE"])
);
}
//int result = conn.ExecuteNonQuery(@"
// DELETE
// TP_PM_TESTFORM2_GOODS
// WHERE
// INSTR(',' || @GUID@ || ',' , ',' || GUID || ',') > 0
// ",
// new CDAParameter("GUID", HttpContext.Current.Request["id"])
//);
int result = conn.ExecuteNonQuery(@"
DELETE
TP_PM_TESTFORM2_GOODS
WHERE
GUID IN ( {GUID} )
".Replace("{GUID}", guidStr)
);
return new JsonResult(JsonStatus.success).ToJson();
}
else
{
return new JsonResult(JsonStatus.otherError).ToJson();
}
}
}
///
/// 导出 TP_PM_TESTFORM2_GOODS
///
/// json
private string export()
{
return search(new NameValueCollection());
}
private class Button
{
public bool testformgoodsButtonIndex = false;
public bool testformgoodsButtonInsert = false;
public bool testformgoodsButtonInsertBatch = false;
public bool testformgoodsButtonCopy = false;
public bool testformgoodsButtonUpdate = false;
public bool testformgoodsButtonDelete = false;
public bool testformgoodsButtonCancel = false;
public bool testformgoodsButtonSearch = false;
public bool testformgoodsButtonDetail = false;
public bool testformgoodsButtonCheckbox = false;
public bool testformgoodsButtonExport = false;
public bool testformgoodsButtonReload = false;
}
private class xRecord
{
public string sid { get; set; }
public string TESTFORMGUID { get; set; }
public string BARCODE { get; set; }
}
public bool IsReusable
{
get
{
return false;
}
}
}