فهرست منبع

SAP同步物料

昱硕 冯 1 سال پیش
والد
کامیت
98f0acea69

+ 3 - 4
wwwroot/App_Code/SapApi.cs

@@ -278,7 +278,7 @@ public class SapApi
     /// <param name="ZTYPE">消息类型: S 成功,E 错误,W 警告,I 信息,A 中断</param>
     /// <param name="ZMSG">消息文本</param>
     /// <returns></returns>
-    public static DataTable ZMMFM054(out string ZTYPE, out string ZMSG)
+    public static DataTable ZMMFM054(out string ZTYPE, out string ZMSG,string syncType, string value)
     {
         RfcConfigParameters rfcPara = new RfcConfigParameters();
         rfcPara.Add(RfcConfigParameters.AppServerHost, appServerHost);
@@ -296,9 +296,8 @@ public class SapApi
         RfcRepository rfcRep = rfcDest.Repository;
 
         //周期性同步
-        DateTime date = new DateTime(); 
+        DateTime date = DateTime.Now; 
         DateTime dateMinusOneDay = date.AddDays(-1);
-        string syncType = string.Empty;
 
         //接口API
         IRfcFunction rfcApi = rfcRep.CreateFunction("ZMMFM054");
@@ -307,7 +306,7 @@ public class SapApi
 		if (syncType == "MATNR")
 		{
             //单独获取某物料的主数据信息
-            rfcApi.SetValue("IN_MATNR", "CS326B01000B01");
+            rfcApi.SetValue("IN_MATNR", value);
         }
 		else if (syncType == "MTART")
 		{

+ 1 - 1
wwwroot/mes/pc/bompackunit/bompackunit.ashx

@@ -256,7 +256,7 @@ public class bompackunit : IHttpHandler, IReadOnlySessionState
     {
         string ZTYPE;
         string ZMSG;
-        DataTable dtResult = SapApi.ZMMFM054(out ZTYPE, out ZMSG);
+        DataTable dtResult = SapApi.ZMMFM054(out ZTYPE, out ZMSG,null,null);
 
         if ("E".Equals(ZTYPE) || dtResult == null || dtResult.Rows.Count == 0)
         {

+ 286 - 16
wwwroot/mes/pc/sapmaterialcode/sapmaterialcode.ashx

@@ -9,22 +9,292 @@ using System.Data;
 using Curtain.DataAccess;
 using DK.XuWei.WebMes;
 
-/// <summary>
-/// TP_PC_BOMPACKUNIT
-/// xuwei create 2022-04-15
-/// </summary>
 public class bompackunit : IHttpHandler, IReadOnlySessionState
 {
-    public void ProcessRequest(HttpContext context)
-    {
-       
-    }
-    
-    public bool IsReusable
-    {
-        get
-        {
-            return false;
-        }
-    }
+	public void ProcessRequest(HttpContext context)
+	{
+		context.Response.ContentType = "text/plain";
+
+		if (context.Request["m"] is object)
+		{
+			switch (context.Request["m"].ToString().ToLower())
+			{
+				case "s":
+					{
+						context.Response.Write(search(context.Request.Form));
+						break;
+					}
+				case "sync":
+					{
+						context.Response.Write(sync(context));
+						break;
+					}
+				default:
+					{
+						break;
+					}
+			}
+		}
+		else
+		{
+			context.Response.Write(new JsonResult(JsonStatus.loginError).ToJson());
+		}
+	}
+
+	/// <summary>
+	/// 查询
+	/// </summary>
+	/// <returns>json</returns>
+	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 sqlStr = @"SELECT * FROM TP_PC_SAPBOMDETAIL WHERE 1= 1";
+
+			List<CDAParameter> sqlPara = new List<CDAParameter>();
+
+			if (!string.IsNullOrEmpty(form["MATNR"]))
+			{
+				sqlStr += " AND MATNR = @MATNR@ ";
+				sqlPara.Add(new CDAParameter("MATNR", form["MATNR"]));
+			}
+			int total = 0;
+			DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+			return new JsonResult(dt) { total = total }.ToJson();
+		}
+	}
+
+	/// <summary>
+	/// 同步
+	/// </summary>
+	/// <returns>json</returns>
+	private string sync(HttpContext context)
+	{
+		string ZTYPE;
+		string ZMSG;
+		DataTable dtResult = SapApi.ZMMFM054(out ZTYPE, out ZMSG,"ALL", context.Request["MATNR"]);
+
+		if ("E".Equals(ZTYPE) || dtResult == null || dtResult.Rows.Count == 0)
+		{
+			return new JsonResult(JsonStatus.otherError).ToJson();
+		}
+
+		using (IDataAccess conn = DataAccess.Create())
+		{
+			// 开启事务
+			conn.BeginTransaction();
+
+			string delsql = @"DELETE FROM TP_PC_SAPBOMDETAIL";
+			List<CDAParameter> sqlPara = new List<CDAParameter>();
+			// 删除所有
+			int result = conn.ExecuteNonQuery(delsql);
+
+			// 插入新的
+			string sqlString = @"
+            INSERT INTO TP_PC_SAPBOMDETAIL (
+				MATNR
+				,WERKS
+				,MAKTX
+				,MATKL
+				,WGBEZ
+				,MEINS
+				,LABOR
+				,LGFSB
+				,MTART
+				,LVORM
+				,BSTRF
+				,PRDHA
+				,VTEXT
+				,BSTME
+				,VOLUM
+				,BESKZ
+				,SOBSL
+				,LGPRO
+				,MTPOSMARA
+				,GROES
+				,STPRS
+				,UMREZ
+				,PEINH
+				,XCHAR
+				,ZGG
+				,ZYS
+				,ZCSJ
+				,VRKME
+				,ERSDA
+				,MAABC
+				,BRGEW
+				,NTGEW
+				,VOLEH
+				,ZWLFL
+				,ZWXGG
+				,ZWXMZ
+				,ZWXJZ
+				,ZEWSL
+				,ZEWDW
+				,ZMEINS
+				,ZZXBZ
+				,ZWYM
+				,ZNMAE
+				,ZMYYSL
+				,ZCPCCBZQ
+				,ZCPCCBZH
+				,ZBY1
+				,ZBY2
+				,ZBY3
+				,ZBY4
+				,ZBY5
+				,ZBY6
+				,ACCOUNTID
+				,VALUEFLAG
+				,CREATEUSERID
+				,UPDATEUSERID
+				) values(
+				@MATNR@
+				,@WERKS@
+				,@MAKTX@
+				,@MATKL@
+				,@WGBEZ@
+				,@MEINS@
+				,@LABOR@
+				,@LGFSB@
+				,@MTART@
+				,@LVORM@
+				,@BSTRF@
+				,@PRDHA@
+				,@VTEXT@
+				,@BSTME@
+				,@VOLUM@
+				,@BESKZ@
+				,@SOBSL@
+				,@LGPRO@
+				,@MTPOSMARA@
+				,@GROES@
+				,@STPRS@
+				,@UMREZ@
+				,@PEINH@
+				,@XCHAR@
+				,@ZGG@
+				,@ZYS@
+				,@ZCSJ@
+				,@VRKME@
+				,@ERSDA@
+				,@MAABC@
+				,@BRGEW@
+				,@NTGEW@
+				,@VOLEH@
+				,@ZWLFL@
+				,@ZWXGG@
+				,@ZWXMZ@
+				,@ZWXJZ@
+				,@ZEWSL@
+				,@ZEWDW@
+				,@ZMEINS@
+				,@ZZXBZ@
+				,@ZWYM@
+				,@ZNMAE@
+				,@ZMYYSL@
+				,@ZCPCCBZQ@
+				,@ZCPCCBZH@
+				,@ZBY1@
+				,@ZBY2@
+				,@ZBY3@
+				,@ZBY4@
+				,@ZBY5@
+				,@ZBY6@
+				,@ACCOUNTID@
+				,@VALUEFLAG@
+				,@CREATEUSERID@
+				,@UPDATEUSERID@
+				)";
+
+			decimal menge = 0;
+			foreach (DataRow row in dtResult.Rows)
+			{
+				decimal.TryParse(row["BSTRF"] + "", out menge);
+				menge = menge == 0 ? 1 : menge;
+
+				result += conn.ExecuteNonQuery(sqlString,
+					new CDAParameter("MATNR", row["MATNR"]),
+					new CDAParameter("WERKS", "5000"),
+					new CDAParameter("MAKTX", row["MAKTX"]),
+					new CDAParameter("MATKL", row["MATKL"]),
+					new CDAParameter("WGBEZ", row["WGBEZ"]),
+					new CDAParameter("MEINS", row["MEINS"]),
+					new CDAParameter("LABOR", row["LABOR"]),
+					new CDAParameter("LGFSB", row["LGFSB"]),
+					new CDAParameter("MTART", row["MTART"]),
+					new CDAParameter("LVORM", row["LVORM"]),
+					new CDAParameter("BSTRF", row["BSTRF"]),
+					new CDAParameter("PRDHA", row["PRDHA"]),
+					new CDAParameter("VTEXT", row["VTEXT"]),
+					new CDAParameter("BSTME", row["BSTME"]),
+					new CDAParameter("VOLUM", row["VOLUM"]),
+					new CDAParameter("BESKZ", row["BESKZ"]),
+					new CDAParameter("SOBSL", row["SOBSL"]),
+					new CDAParameter("LGPRO", row["LGPRO"]),
+					new CDAParameter("MTPOSMARA", row["MTPOS_MARA"]),
+					new CDAParameter("GROES", row["GROES"]),
+					new CDAParameter("STPRS", row["STPRS"]),
+					new CDAParameter("UMREZ", row["UMREZ"]),
+					new CDAParameter("PEINH", row["PEINH"]),
+					new CDAParameter("XCHAR", row["XCHAR"]),
+					new CDAParameter("ZGG", row["ZGG"]),
+					new CDAParameter("ZYS", row["ZYS"]),
+					new CDAParameter("ZCSJ", row["ZCSJ"]),
+					new CDAParameter("VRKME", row["VRKME"]),
+					new CDAParameter("ERSDA", row["ERSDA"]),
+					new CDAParameter("MAABC", row["MAABC"]),
+					new CDAParameter("BRGEW", row["BRGEW"]),
+					new CDAParameter("NTGEW", row["NTGEW"]),
+					new CDAParameter("VOLEH", row["VOLEH"]),
+					new CDAParameter("ZWLFL", row["ZWLFL"]),
+					new CDAParameter("ZWXGG", row["ZWXGG"]),
+					new CDAParameter("ZWXMZ", row["ZWXMZ"]),
+					new CDAParameter("ZWXJZ", row["ZWXJZ"]),
+					new CDAParameter("ZEWSL", row["ZEWSL"]),
+					new CDAParameter("ZEWDW", row["ZEWDW"]),
+					new CDAParameter("ZMEINS", row["ZMEINS"]),
+					new CDAParameter("ZZXBZ", row["ZZXBZ"]),
+					new CDAParameter("ZWYM", row["ZWYM"]),
+					new CDAParameter("ZNMAE", row["ZNMAE"]),
+					new CDAParameter("ZMYYSL", row["ZMYYSL"]),
+					new CDAParameter("ZCPCCBZQ", row["ZCPCC_BZQ"]),
+					new CDAParameter("ZCPCCBZH", row["ZCPCC_BZH"]),
+					new CDAParameter("ZBY1", row["ZBY1"]),
+					new CDAParameter("ZBY2", row["ZBY2"]),
+					new CDAParameter("ZBY3", row["ZBY3"]),
+					new CDAParameter("ZBY4", row["ZBY4"]),
+					new CDAParameter("ZBY5", row["ZBY5"]),
+					new CDAParameter("ZBY6", row["ZBY6"]),
+					new CDAParameter("ACCOUNTID", HttpContext.Current.Session["accountId"]),
+					new CDAParameter("VALUEFLAG", 1),
+					new CDAParameter("CREATEUSERID", HttpContext.Current.Session["userId"]),
+					new CDAParameter("UPDATEUSERID", HttpContext.Current.Session["userId"])
+				);
+			}
+
+			if (result > 0)
+			{
+				conn.Commit();
+				return new JsonResult(JsonStatus.success).ToJson();
+			}
+			else
+			{
+				conn.Rollback();
+				return new JsonResult(JsonStatus.error).ToJson();
+			}
+		}
+	}
+
+	public bool IsReusable
+	{
+		get
+		{
+			return false;
+		}
+	}
 }

+ 101 - 4
wwwroot/mes/pc/sapmaterialcode/sapmaterialcode_index.html

@@ -25,8 +25,7 @@
 			<div id="bompackunitSearchDiv" style="display: block; padding: 10px;">
 				<form id="bompackunitForm">
 					<div>
-						物料编码:<input class="easyui-textbox" id="IDNRK" name="IDNRK" data-options="required:false,prompt:'',tipPosition:'top'" style="width:100px;height:32px;">
-						名称:<input class="easyui-textbox" id="NAME" name="NAME" data-options="required:false,prompt:'',tipPosition:'top'" style="width:100px;height:32px;">
+						物料编码:<input class="easyui-textbox" id="MATNR" name="MATNR" data-options="required:false,prompt:'',tipPosition:'top'" style="width:100px;height:32px;">
 						<a href="javascript:void(0)" id="bompackunitButtonSearchReset" title="清空" class="easyui-linkbutton" plain="false" onclick="$('#bompackunitForm').form('clear')">清空</a>
 						<a href="javascript:void(0)" id="bompackunitButtonSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="bompackunitButtonSearchSubmit_Click()">搜索</a>
 					</div>
@@ -37,16 +36,114 @@
 		<table id="bompackunitDatagrid" data-options="toolbar: '#bompackunitToolbar',showFooter:false">
 			<thead>
 				<tr>
-					<th data-options="field:'IDNRK',title:'物料明细唯一码',align:'left',sortable:true"></th>
-					<th data-options="field:'NAME',title:'名称',align:'left',sortable:true"></th>
+					<th data-options="field:'SAPBOMDETAILID',title:'主数据ID',align:'left',sortable:true"></th>
+					<th data-options="field:'MATNR',title:'物料编码',align:'left',sortable:true"></th>
+					<th data-options="field:'WERKS',title:'工厂',align:'left',sortable:true"></th>
+					<th data-options="field:'MAKTX',title:'物料描述',align:'left',sortable:true"></th>
+					<th data-options="field:'MATKL',title:'物料组',align:'left',sortable:true"></th>
+					<th data-options="field:'WGBEZ',title:'物料组描述',align:'left',sortable:true"></th>
+					<th data-options="field:'MEINS',title:'基本计量单位',align:'left',sortable:true"></th>
+					<th data-options="field:'LABOR',title:'物料状态 ',align:'left',sortable:true"></th>
+					<th data-options="field:'LGFSB',title:'外部采购库存地点',align:'left',sortable:true"></th>
+					<th data-options="field:'MTART',title:'物料类型',align:'left',sortable:true"></th>
+					<th data-options="field:'LVORM',title:'已删除',align:'left',sortable:true"></th>
+					<th data-options="field:'BSTRF',title:'舍入值',align:'left',sortable:true"></th>
+					<th data-options="field:'PRDHA',title:'产品层次',align:'left',sortable:true"></th>
+					<th data-options="field:'VTEXT',title:'产品层次描述',align:'left',sortable:true"></th>
+					<th data-options="field:'BSTME',title:'采购订单单位',align:'left',sortable:true"></th>
+					<th data-options="field:'VOLUM',title:'体积(包装后) ',align:'left',sortable:true"></th>
+					<th data-options="field:'BESKZ',title:'采购类型',align:'left',sortable:true"></th>
+					<th data-options="field:'SOBSL',title:'特殊采购类',align:'left',sortable:true"></th>
+					<th data-options="field:'LGPRO',title:'生产存储地点',align:'left',sortable:true"></th>
+					<th data-options="field:'MTPOSMARA',title:'普通项目类别组',align:'left',sortable:true"></th>
+					<th data-options="field:'GROES',title:'型号',align:'left',sortable:true"></th>
+					<th data-options="field:'STPRS',title:'标准价格',align:'left',sortable:true"></th>
+					<th data-options="field:'UMREZ',title:'分子',align:'left',sortable:true"></th>
+					<th data-options="field:'PEINH',title:'价格单位',align:'left',sortable:true"></th>
+					<th data-options="field:'XCHAR',title:'批次管理',align:'left',sortable:true"></th>
+					<th data-options="field:'ZGG',title:'规格',align:'left',sortable:true"></th>
+					<th data-options="field:'ZYS',title:'颜色',align:'left',sortable:true"></th>
+					<th data-options="field:'ZCSJ',title:'出水距',align:'left',sortable:true"></th>
+					<th data-options="field:'VRKME',title:'销售单位',align:'left',sortable:true"></th>
+					<th data-options="field:'ERSDA',title:'创建日期',align:'left',sortable:true"></th>
+					<th data-options="field:'MAABC',title:'ABC标识',align:'left',sortable:true"></th>
+					<th data-options="field:'BRGEW',title:'毛重',align:'left',sortable:true"></th>
+					<th data-options="field:'NTGEW',title:'净重',align:'left',sortable:true"></th>
+					<th data-options="field:'VOLEH',title:'体积单位',align:'left',sortable:true"></th>
+					<th data-options="field:'ZWLFL',title:'标签物料分类',align:'left',sortable:true"></th>
+					<th data-options="field:'ZWXGG',title:'标签外箱规格',align:'left',sortable:true"></th>
+					<th data-options="field:'ZWXMZ',title:'标签外箱毛重',align:'left',sortable:true"></th>
+					<th data-options="field:'ZWXJZ',title:'标签外箱净重 ',align:'left',sortable:true"></th>
+					<th data-options="field:'ZEWSL',title:'标签额外数量',align:'left',sortable:true"></th>
+					<th data-options="field:'ZEWDW',title:'标签额外单位',align:'left',sortable:true"></th>
+					<th data-options="field:'ZMEINS',title:'标签重量单位',align:'left',sortable:true"></th>
+					<th data-options="field:'ZZXBZ',title:'执行标准',align:'left',sortable:true"></th>
+					<th data-options="field:'ZWYM',title:'唯一码',align:'left',sortable:true"></th>
+					<th data-options="field:'ZNMAE',title:'标签物料分类英文',align:'left',sortable:true"></th>
+					<th data-options="field:'ZMYYSL',title:'名义用水量',align:'left',sortable:true"></th>
+					<th data-options="field:'ZCPCCBZQ',title:'产品尺寸(包装前)',align:'left',sortable:true"></th>
+					<th data-options="field:'ZCPCCBZH',title:'产品尺寸(包装后)',align:'left',sortable:true"></th>
 				</tr>
 		</table>
 	</div>
+	<div id="dd" class="easyui-dialog" data-options="iconCls:'icon-save',resizable:true,modal:true" closed="true">
+		<div padding:10px;>是否进行同步?</div>
+	</div>
+
 	<script type="text/javascript">
 		//加载完成
 		$(function () {
 
 		});
+
+		//搜索提交
+		function bompackunitButtonSearchSubmit_Click() {
+			$('#bompackunitDatagrid').datagridLoad({
+				title: '',
+				idField: 'SID',
+				queryParams: $('#bompackunitForm').serializeJson(),
+				url: 'sapmaterialcode.ashx?m=s',
+				columnMoving: false
+			});
+		}
+
+		// 同步按钮
+		function bompackunitButtonSync_Click() {
+			var matnr = $('#MATNR').val();
+			$('#dd').dialog({
+				title: '系统询问',
+				width: 300,
+				height: 200,
+				closed: false,
+				cache: false,
+				href: '',
+				modal: true,
+				buttons: [{
+					text: '是',
+					handler: function () {
+						$.messager.progress();
+						$.get('sapmaterialcode.ashx?m=sync&&MATNR=' + matnr , function (data) {
+							var json = JSON.parse(data);
+							if (json["success"] == true) {
+								$.messager.progress('close');
+								$.messager.alert("操作成功", json['message'], 'info');
+								$('#dd').dialog({ closed: true });
+								bompackunitButtonSearchSubmit_Click();
+							}
+							else {
+								$.messager.progress('close');
+								$.messager.alert("数据错误", json['message'], 'error');
+							}
+						});
+					}
+				}, {
+					text: '否',
+					handler: function () {
+						$('#dd').dialog({ closed: true });
+					}
+				}]
+			});
+		}
 	</script>
 </body>
 </html>