1.生产入库信息查询接口增加是否源单查询字段
2.报表增加MES入库记录删除接口
3.增加存货档案关联工艺查询多存货
4.增加存货档案关联工艺提交多存货
4.通用基础资料中:仓库基础资料接口增加noid(erp中的仓库id)
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿/å·¥åº)æ¥è¯¢å¤åè´§] |
| | | /// <summary> |
| | | /// åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿/å·¥åº)æ¥è¯¢å¤åè´§ |
| | | /// </summary> |
| | | /// <param name="partcode">ç©æç¼ç </param> |
| | | /// <returns></returns> |
| | | [Route(template: "TMaterielFileAssociationRouteList")] |
| | | [HttpPost] |
| | | public JsonResult TMaterielFileAssociationRouteList(List<string> partcode) |
| | | { |
| | | var token = HttpContext.Request.Headers["Token"].ToString(); |
| | | User us = JwtTools.Denocode(token.ToString()); |
| | | mes = ProductModelBLL.TMaterielFileAssociationRouteList(partcode, us); |
| | | return Json(mes); |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤] |
| | | /// <summary> |
| | | /// åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤ |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤å¤åè´§] |
| | | /// <summary> |
| | | /// åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤å¤åè´§ |
| | | /// </summary> |
| | | /// <param name="json">æäº¤æ°æ®å¯¹è±¡</param> |
| | | /// <returns></returns> |
| | | [Route(template: "SaveTMaterielFileList")] |
| | | [HttpPost] |
| | | public JsonResult SaveTMaterielFileList(List<MaterialCraftsSave> json) |
| | | { |
| | | var token = HttpContext.Request.Headers["Token"].ToString(); |
| | | User us = JwtTools.Denocode(token.ToString()); |
| | | mes = ProductModelBLL.SaveTMaterielFileList(us, json); |
| | | return Json(mes); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | #region[å·¥å产åä¿¡æ¯ä¸ææ¡æ¥è¯¢] |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[MESå
¥åºè®°å½å é¤] |
| | | /// <summary> |
| | | /// MESå
¥åºè®°å½å é¤ |
| | | /// </summary> |
| | | /// <param name="dt">æäº¤æ°æ®</param> |
| | | /// <returns></returns> |
| | | [Route(template: "DeleteMesInStorageRecord")] |
| | | [HttpPost] |
| | | public JsonResult DeleteMesInStorageRecord(DataTable dt) |
| | | { |
| | | var token = HttpContext.Request.Headers["Token"].ToString(); |
| | | User us = JwtTools.Denocode(token.ToString()); |
| | | mes = ReportManagerBLL.DeleteMesInStorageRecord(dt, us); |
| | | return Json(mes); |
| | | } |
| | | #endregion |
| | | |
| | | #region[T+å
¥åºè®°å½å é¤] |
| | | /// <summary> |
| | | /// T+å
¥åºè®°å½å é¤ |
| | |
| | | public JsonResult DeleteInStorageRecord(DataTable dt) |
| | | { |
| | | var token = HttpContext.Request.Headers["Token"].ToString(); |
| | | //var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyY29kZSI6Ijk5OTkiLCJ1c2VybmFtZSI6Iuezu-e7n-euoeeQhuWRmCIsInN0b3JnX2NvZGUiOiIiLCJzdG9yZ19uYW1lIjoiIiwiaXNfc3lzdGVtX2FkbWluIjoiWSIsInJvbGVfY29kZSI6IiIsInJvbGVfZGF0YXBlcm1pc3Npb25zIjoiIiwidXNlcnR5cGUiOiJQQyIsInJlZGlza2V5IjoiTmV3TUVTTG9naW5Vc2VySURQQzk5OTkiLCJtZXNTZXR0aW5nIjoie1wicm91dGVcIjp0cnVlLFwiaXNPcmRlclwiOnRydWUsXCJkZXZpY2VcIjp0cnVlLFwidGVjaFwiOnRydWUsXCJ3b3JrT3JkZXJcIjp0cnVlLFwiZXZlcnlcIjpmYWxzZSxcImxhc3RcIjpmYWxzZX0iLCJ0aW1lb3V0IjoiMjAyNC0xMC0yNFQxMjozNTo1MC4zNDI1NzE2KzA4OjAwIn0.Nbc-1sXd4QLLsnj8wH9XC7iWEmP0wDG82gwLxIh94e4"; |
| | | User us = JwtTools.Denocode(token.ToString()); |
| | | mes = ReportManagerBLL.DeleteInStorageRecord(dt, us); |
| | | return Json(mes); |
| | |
| | | /// <summary> |
| | | /// ç产å
¥åºä¿¡æ¯æ¥è¯¢ |
| | | /// </summary> |
| | | /// <param name="issouceorder">æ¯å¦æºå(Y/N)</param> |
| | | /// <param name="deptno">é¨é¨ç¼ç (T8使ç¨)</param> |
| | | /// <param name="saleordercode">éå®åå·</param> |
| | | /// <param name="wkshopcode">车é´ç¼ç </param> |
| | |
| | | /// <returns></returns> |
| | | [Route(template: "ProductInHouseOrderSearch")] |
| | | [HttpGet] |
| | | public JsonResult ProductInHouseOrderSearch(string deptno, string saleordercode, string wkshopcode, string erpordercode = null, string mesordercode = null, string partcode = null, string partname = null, string partspec = null) |
| | | public JsonResult ProductInHouseOrderSearch(string issouceorder, string deptno, string saleordercode, string wkshopcode, string erpordercode = null, string mesordercode = null, string partcode = null, string partname = null, string partspec = null) |
| | | { |
| | | mes = WorkOrderBLL.ProductInHouseOrderSearch(deptno, saleordercode, wkshopcode, erpordercode, mesordercode, partcode, partname, partspec); |
| | | mes = WorkOrderBLL.ProductInHouseOrderSearch(issouceorder,deptno, saleordercode, wkshopcode, erpordercode, mesordercode, partcode, partname, partspec); |
| | | return Json(mes); |
| | | } |
| | | #endregion |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æ¥è¯¢å¤åè´§] |
| | | public static ToMessage TMaterielFileAssociationRouteList(List<string> partcode, User us) |
| | | { |
| | | return ProductModelDAL.TMaterielFileAssociationRouteList(partcode, us); |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤] |
| | | public static ToMessage SaveTMaterielFile(User us, List<MaterialCraftsSave> json) |
| | | { |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤å¤åè´§] |
| | | public static ToMessage SaveTMaterielFileList(User us, List<MaterialCraftsSave> json) |
| | | { |
| | | return ProductModelDAL.SaveTMaterielFileList(us, json); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | #region[å·¥å产åä¿¡æ¯ä¸ææ¡æ¥è¯¢] |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[MESå
¥åºè®°å½å é¤] |
| | | public static ToMessage DeleteMesInStorageRecord(DataTable dt, User us) |
| | | { |
| | | return ReportManagerDAL.DeleteMesInStorageRecord(dt, us); |
| | | } |
| | | #endregion |
| | | |
| | | #region[T+å
¥åºè®°å½å é¤] |
| | | public static ToMessage DeleteInStorageRecord(DataTable dt, User us) |
| | | { |
| | |
| | | #endregion |
| | | |
| | | #region[ç产å
¥åºä¿¡æ¯æ¥è¯¢] |
| | | public static ToMessage ProductInHouseOrderSearch(string deptno, string saleordercode, string wkshopcode, string erpordercode, string mesordercode, string partcode, string partname, string partspec) |
| | | public static ToMessage ProductInHouseOrderSearch(string issouceorder, string deptno, string saleordercode, string wkshopcode, string erpordercode, string mesordercode, string partcode, string partname, string partspec) |
| | | { |
| | | return WorkOrderDAL.ProductInHouseOrderSearch(deptno, saleordercode, wkshopcode, erpordercode, mesordercode, partcode, partname, partspec); |
| | | return WorkOrderDAL.ProductInHouseOrderSearch(issouceorder, deptno, saleordercode, wkshopcode, erpordercode, mesordercode, partcode, partname, partspec); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | try |
| | | { |
| | | //è·åä»åºæ°æ® |
| | | sql = @"select code,name from TSecStck"; |
| | | sql = @"select noid,code,name from TSecStck"; |
| | | var data = DapperHelper.selecttable(sql); |
| | | mes.code = "200"; |
| | | mes.message = "æ¥è¯¢æå!"; |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æ¥è¯¢å¤åè´§] |
| | | public static ToMessage TMaterielFileAssociationRouteList(List<string> partcode, User us) |
| | | { |
| | | string sql = ""; |
| | | var dynamicParams = new DynamicParameters(); |
| | | List<MaterialRoutList> list = new List<MaterialRoutList>(); |
| | | try |
| | | { |
| | | dynamic dynObj = JObject.Parse(us.mesSetting); |
| | | bool route = dynObj.route; |
| | | if (route) //å·¥èºè·¯çº¿ç |
| | | { |
| | | // 1. æ¹éè·åææç©æçåºç¡ä¿¡æ¯ |
| | | var baseInfoSql = @"SELECT M.partcode, M.partname, M.default_route as default_routecode, R.name as default_routename |
| | | FROM TMateriel_Info M |
| | | LEFT JOIN TFlw_Rout R ON M.default_route = R.code |
| | | WHERE M.partcode IN @PartCodes"; |
| | | var baseInfos = DapperHelper.select<dynamic>(baseInfoSql, new { PartCodes = partcode }).ToDictionary(x => (string)x.partcode, x => x); |
| | | if (!baseInfos.Any()) |
| | | { |
| | | mes.code = "200"; |
| | | mes.message = "æªæ¾å°å¯¹åºçç©æä¿¡æ¯"; |
| | | mes.data = list; |
| | | return mes; |
| | | } |
| | | // 2. æ¹éè·åææç©æçå·¥èºè·¯çº¿ä¿¡æ¯ |
| | | var routeSql = @"SELECT mi.partcode AS partcode,fr.code AS routecode,fr.name AS routename, |
| | | CASE |
| | | WHEN mr.materiel_code IS NOT NULL THEN 'Y' |
| | | ELSE 'N' |
| | | END AS flag |
| | | FROM TMateriel_Info mi |
| | | CROSS JOIN TFlw_Rout fr |
| | | LEFT JOIN TMateriel_Route mr ON mi.partcode = mr.materiel_code AND fr.code = mr.route_code |
| | | WHERE mi.partcode IN @PartCodes AND fr.enable = 'Y' |
| | | ORDER BY mi.partcode, fr.code"; |
| | | var allRoutes = DapperHelper.select<dynamic>(routeSql, new { PartCodes = partcode }).GroupBy(x => (string)x.partcode).ToDictionary(g => g.Key, g => g.ToList()); |
| | | |
| | | // 3. æ¹éè·åææå·¥åºä¿¡æ¯ï¼ä¸æ¬¡æ§æ¥è¯¢ï¼ |
| | | var allRouteCodes = allRoutes.Values |
| | | .SelectMany(routes => routes.Select(r => (string)r.routecode)) |
| | | .Distinct() |
| | | .ToList(); |
| | | |
| | | Dictionary<string, DataTable> routeSteps = new Dictionary<string, DataTable>(); |
| | | |
| | | if (allRouteCodes.Any()) |
| | | { |
| | | var stepSql = @"SELECT A.rout_code as route_code, A.seq, B.stepcode, B.stepname, B.enable |
| | | FROM TFlw_Rtdt A |
| | | INNER JOIN TStep B ON A.step_code = B.stepcode |
| | | WHERE A.rout_code IN @RouteCodes AND B.is_delete <> '1' |
| | | ORDER BY A.rout_code, A.seq ASC"; |
| | | var allSteps = DapperHelper.select<dynamic>(stepSql, new { RouteCodes = allRouteCodes }); |
| | | // å°å·¥åºæ°æ®æå·¥èºè·¯çº¿ç¼ç åç» |
| | | routeSteps = allSteps |
| | | .GroupBy(x => (string)x.route_code) |
| | | .ToDictionary( |
| | | g => g.Key, |
| | | g => |
| | | { |
| | | // å°å¨æç±»å转æ¢ä¸ºDataTableï¼æ ¹æ®æ¨åæä»£ç çè¿åç±»åè°æ´ï¼ |
| | | var dt = new DataTable(); |
| | | dt.Columns.Add("seq"); |
| | | dt.Columns.Add("stepcode"); |
| | | dt.Columns.Add("stepname"); |
| | | dt.Columns.Add("enable"); |
| | | |
| | | foreach (var step in g.OrderBy(s => s.seq)) |
| | | { |
| | | dt.Rows.Add(step.seq, step.stepcode, step.stepname, step.enable); |
| | | } |
| | | return dt; |
| | | }); |
| | | } |
| | | // 4. å¨å
åä¸ç»åæ°æ® |
| | | foreach (var part in partcode) |
| | | { |
| | | if (!baseInfos.ContainsKey(part)) continue; |
| | | |
| | | var baseInfo = baseInfos[part]; |
| | | var routlist = new MaterialRoutList |
| | | { |
| | | partcode = baseInfo.partcode, |
| | | partname = baseInfo.partname, |
| | | defalutroutecode = baseInfo.default_routecode, |
| | | defalutroutename = baseInfo.default_routename, |
| | | children = new List<RouteList>() |
| | | }; |
| | | |
| | | // æ·»å è¯¥ç©æçå·¥èºè·¯çº¿ |
| | | if (allRoutes.ContainsKey(part)) |
| | | { |
| | | foreach (var routeInfo in allRoutes[part]) |
| | | { |
| | | var rout = new RouteList |
| | | { |
| | | routecode = routeInfo.routecode, |
| | | routename = routeInfo.routename, |
| | | flag = routeInfo.flag |
| | | }; |
| | | |
| | | // æ·»å å·¥åºä¿¡æ¯ |
| | | if (routeSteps.ContainsKey(rout.routecode)) |
| | | { |
| | | rout.Data = routeSteps[rout.routecode]; |
| | | } |
| | | |
| | | routlist.children.Add(rout); |
| | | } |
| | | } |
| | | |
| | | list.Add(routlist); |
| | | } |
| | | |
| | | mes.data = list; |
| | | mes.code = "200"; |
| | | mes.message = $"æ¥è¯¢æåï¼å
±å¤ç{list.Count}ä¸ªç©æ"; |
| | | } |
| | | else //å·¥åºç |
| | | { |
| | | // 1. æ¹éè·åææç©æåºç¡ä¿¡æ¯ |
| | | var baseInfoSql = @"SELECT partcode, partname FROM TMateriel_Info |
| | | WHERE partcode IN @PartCodes"; |
| | | var baseInfos = DapperHelper.select<dynamic>(baseInfoSql, new { PartCodes = partcode }) |
| | | .ToDictionary(x => (string)x.partcode, x => x); |
| | | |
| | | if (!baseInfos.Any()) |
| | | { |
| | | mes.code = "200"; |
| | | mes.message = "æªæ¾å°å¯¹åºçç©æä¿¡æ¯"; |
| | | mes.data = new List<MaterialRoutList>(); |
| | | return mes; |
| | | } |
| | | |
| | | // 2. æ¹éè·åææç©æçå·¥åºä¿¡æ¯ |
| | | var stepSql = @"SELECT A.materiel_code as partcode, A.step_seq, A.step_code, |
| | | S.stepname, A.isbott, A.isend |
| | | FROM TMateriel_Step A |
| | | INNER JOIN TStep S ON A.step_code = S.stepcode |
| | | WHERE A.materiel_code IN @PartCodes AND S.is_delete <> '1' |
| | | ORDER BY A.materiel_code, A.step_seq"; |
| | | |
| | | var allSteps = DapperHelper.select<dynamic>(stepSql, new { PartCodes = partcode }) |
| | | .GroupBy(x => (string)x.partcode) |
| | | .ToDictionary(g => g.Key, g => g.ToList()); |
| | | |
| | | // 3. å
åä¸ç»åæ°æ® |
| | | foreach (var part in partcode) |
| | | { |
| | | if (!baseInfos.ContainsKey(part)) continue; |
| | | |
| | | var baseInfo = baseInfos[part]; |
| | | var routlist = new MaterialRoutList |
| | | { |
| | | partcode = baseInfo.partcode, |
| | | partname = baseInfo.partname, |
| | | children = new List<RouteList>() |
| | | }; |
| | | |
| | | // æ·»å å·¥åºä¿¡æ¯ |
| | | if (allSteps.ContainsKey(part)) |
| | | { |
| | | // 转æ¢ä¸ºDataTableï¼å¦éä¿æåæç»æï¼ |
| | | var stepData = allSteps[part]; |
| | | var dataTable = new DataTable(); |
| | | dataTable.Columns.Add("step_seq"); |
| | | dataTable.Columns.Add("step_code"); |
| | | dataTable.Columns.Add("step_name"); |
| | | dataTable.Columns.Add("isbott"); |
| | | dataTable.Columns.Add("isend"); |
| | | |
| | | foreach (var step in stepData.OrderBy(s => s.step_seq)) |
| | | { |
| | | dataTable.Rows.Add(step.step_seq, step.step_code, |
| | | step.stepname, step.isbott, step.isend); |
| | | } |
| | | |
| | | routlist.children.Add(new RouteList { Data = dataTable }); |
| | | } |
| | | |
| | | list.Add(routlist); |
| | | } |
| | | |
| | | mes.data = list; |
| | | mes.code = "200"; |
| | | mes.message = $"æ¥è¯¢æåï¼å
±å¤ç{list.Count}ä¸ªç©æ"; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = e.Message; |
| | | mes.data = null; |
| | | } |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤] |
| | | public static ToMessage SaveTMaterielFile(User us, List<MaterialCraftsSave> json) |
| | | { |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[åè´§æ¡£æ¡å
³èå·¥èº(å·¥èºè·¯çº¿æå·¥åº)æäº¤å¤åè´§] |
| | | public static ToMessage SaveTMaterielFileList(User us, List<MaterialCraftsSave> json) |
| | | { |
| | | var sql = ""; |
| | | List<object> list = new List<object>(); |
| | | var dynamicParams = new DynamicParameters(); |
| | | try |
| | | { |
| | | list.Clear(); |
| | | dynamic dynObj = JObject.Parse(us.mesSetting); |
| | | bool route = dynObj.route; |
| | | if (route) //å·¥èºè·¯çº¿ç |
| | | { |
| | | for (int i = 0; i < json.Count; i++) |
| | | { |
| | | if (json[i].children == null || json[i].children.Count <= 0) |
| | | { |
| | | //æ¸
é¤ç©æå
³èå·¥èºè·¯çº¿è¡¨æ°æ® |
| | | sql = @"delete TMateriel_Route where materiel_code=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | //æ è®°ç©æè¡¨å
³èå·¥èºè·¯çº¿æ è¯ |
| | | sql = @"update TMateriel_Info set is_retdproc='N',default_route='' where partcode=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | //æ¸
é¤èæå·¥ä»·è¡¨å¯¹åºæ°æ® |
| | | sql = @"delete TPrteEqp_Stad where materiel_code=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | } |
| | | else |
| | | { |
| | | //æ¸
é¤åè´§å
³èå·¥èºè·¯çº¿è¡¨æ°æ® |
| | | sql = @"delete TMateriel_Route where materiel_code=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | //循ç¯åå
¥åè´§å
³èå·¥èºè·¯çº¿è¡¨ |
| | | for (int j = 0; j < json[i].children.Count; j++) |
| | | { |
| | | sql = @"insert into TMateriel_Route(materiel_code,route_code,lm_user,lm_date) values(@materiel_code,@route_code,@lm_user,@lm_date)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | materiel_code = json[i].partcode, |
| | | route_code = json[i].children[j].code, |
| | | lm_user = us.usercode, |
| | | lm_date = DateTime.Now.ToString() |
| | | } |
| | | }); |
| | | } |
| | | //æ è®°ç©æè¡¨å
³èå·¥èºè·¯çº¿æ è¯ |
| | | sql = @"update TMateriel_Info set is_retdproc='Y',default_route=@defaultroute_code where partcode=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode, defaultroute_code = json[i].defaultroute_code } }); |
| | | |
| | | //æ¸
é¤èæå·¥ä»·è¡¨å½å产å对åºå·¥èºè·¯çº¿ä¸å
嫿¤æ¬¡è®¾ç½®çå
¶å®æ°æ® |
| | | //stringåå²è½¬string[] |
| | | string[] routcode = Array.ConvertAll<string, string>(string.Join(",", json[i].children.Select(s => s.code)).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); |
| | | sql = @"delete TPrteEqp_Stad where materiel_code=@partcode and route_code not in @routecode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode, routecode = routcode } }); |
| | | } |
| | | } |
| | | } |
| | | else //å·¥åºç |
| | | { |
| | | for (int i = 0; i < json.Count; i++) |
| | | { |
| | | if (json[i].children == null || json[i].children.Count <= 0) |
| | | { |
| | | //æ¸
é¤ç©æå
³èå·¥èºè·¯çº¿è¡¨æ°æ® |
| | | sql = @"delete TMateriel_Step where materiel_code=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | //æ è®°ç©æè¡¨å
³èå·¥èºè·¯çº¿æ è¯ |
| | | sql = @"update TMateriel_Info set is_retdproc='N',default_route='' where partcode=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | //æ¸
é¤èæå·¥ä»·è¡¨å¯¹åºæ°æ® |
| | | sql = @"delete TPrteEqp_Stad where materiel_code=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | } |
| | | else |
| | | { |
| | | //æ¸
é¤åè´§å
³èå·¥èºè·¯çº¿è¡¨æ°æ® |
| | | sql = @"delete TMateriel_Step where materiel_code=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode } }); |
| | | //循ç¯åå
¥åè´§å
³èå·¥èºè·¯çº¿è¡¨ |
| | | for (int j = 0; j < json[i].children.Count; j++) |
| | | { |
| | | sql = @"insert into TMateriel_Step(materiel_code,step_seq,step_code,isbott,isend,lm_user,lm_date) |
| | | values(@materiel_code,@step_seq,@step_code,@isbott,@isend,@lm_user,@lm_date)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | materiel_code = json[i].partcode, |
| | | step_seq = json[i].children[j].seq, |
| | | step_code = json[i].children[j].code, |
| | | isbott = json[i].children[j].isbott, |
| | | isend = json[i].children[j].isend, |
| | | lm_user = us.usercode, |
| | | lm_date = DateTime.Now.ToString() |
| | | } |
| | | }); |
| | | } |
| | | //æ è®°ç©æè¡¨å
³èå·¥èºè·¯çº¿æ è¯ |
| | | sql = @"update TMateriel_Info set is_retdproc='Y',default_route=@defaultroute_code where partcode=@partcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode, defaultroute_code = json[i].defaultroute_code } }); |
| | | |
| | | //æ¸
é¤èæå·¥ä»·è¡¨å½å产å对åºå·¥åºä¸å
嫿¤æ¬¡è®¾ç½®çå
¶å®æ°æ® |
| | | //stringåå²è½¬string[] |
| | | string[] stepcode = Array.ConvertAll<string, string>(string.Join(",", json[i].children.Select(s => s.code)).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); |
| | | sql = @"delete TPrteEqp_Stad where materiel_code=@partcode and step_code not in @stepcode"; |
| | | list.Add(new { str = sql, parm = new { partcode = json[i].partcode, stepcode = stepcode } }); |
| | | } |
| | | } |
| | | } |
| | | bool aa = DapperHelper.DoTransaction(list); |
| | | if (aa) |
| | | { |
| | | //åå
¥æä½è®°å½è¡¨ |
| | | LogHelper.DbOperateLog(us.usercode, "åè´§å
³èå·¥èº", "产åï¼" + string.Join(",", json.Select(x => x.partcode)) + "å
³èäºå·¥èº:" + string.Join(",", json.SelectMany(x => x.children?.Select(c => c.code) ?? Enumerable.Empty<string>())), us.usertype); |
| | | 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 PartSelect() |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[MESå
¥åºè®°å½å é¤] |
| | | public static ToMessage DeleteMesInStorageRecord(DataTable dt, User us) |
| | | { |
| | | var sql = ""; |
| | | var dynamicParams = new DynamicParameters(); |
| | | try |
| | | { |
| | | //åå¨è¿ç¨å |
| | | sql = @"h_p_IFCLD_DeleteInProductOrder"; |
| | | dynamicParams.Add("@RecordSub", dbType: DbType.Object, value: dt); |
| | | // æ·»å è¾åºåæ° |
| | | dynamicParams.Add("@StatusCode", dbType: DbType.Int32, direction: ParameterDirection.Output); |
| | | dynamicParams.Add("@Message", dbType: DbType.String, size: 255, direction: ParameterDirection.Output); |
| | | bool a = DapperHelper.IsProcedure(sql, dynamicParams); |
| | | // è·åè¾åºåæ°çå¼ |
| | | var statusCode = dynamicParams.Get<int>("@StatusCode"); |
| | | var message = dynamicParams.Get<string>("@Message"); |
| | | if (a) |
| | | { |
| | | mes.code = statusCode.ToString(); |
| | | mes.count = 0; |
| | | mes.message = message; |
| | | mes.data = null; |
| | | } |
| | | else |
| | | { |
| | | mes.code = statusCode.ToString(); |
| | | mes.count = 0; |
| | | mes.message = message; |
| | | mes.data = null; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = e.Message; |
| | | mes.data = null; |
| | | } |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | #region[T+å
¥åºè®°å½å é¤] |
| | | public static ToMessage DeleteInStorageRecord(DataTable dt, User us) |
| | | { |
| | |
| | | var dynamicParams = new DynamicParameters(); |
| | | try |
| | | { |
| | | sql = @"select * from TK_Wrk_Man where m_po=@erpordercode and status<> 'CLOSED'"; |
| | | sql = @"select * from TK_Wrk_Man where m_po=@erpordercode and sourceid=@sourceid"; |
| | | dynamicParams.Add("@erpordercode", erpordercode); |
| | | dynamicParams.Add("@sourceid", erporderid); |
| | | var data = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (data.Rows.Count > 0) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "å½å订åæä¸è¾¾æªå
³éçMESå·¥å,订åä¸å
许å
³é,请å
å 餿å
³éç¸å
³å·¥å!"; |
| | | mes.data = null; |
| | | } |
| | | else |
| | | // 使ç¨LINQålambdaè¡¨è¾¾å¼æ¥è½¬æ¢wo_codeåæ®µçå¼ä¸ºéå·éå¼çå符串æ°ç» |
| | | string[] result = data.AsEnumerable().Select(row => "" + row.Field<string>("wo_code") + "").ToArray(); |
| | | //å
³éå·¥åºä»»å¡ |
| | | sql = @"update TK_Wrk_Step set status='CLOSED',closebeforestatus=status where wo_code in @wocode"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | wocode = result |
| | | } |
| | | }); |
| | | //å
³éå·¥å |
| | | sql = @"update TK_Wrk_Man set status='CLOSED',closebeforestatus=status where m_po=@erpordercode and sourceid=@sourceid"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | erpordercode = erpordercode, |
| | | sourceid = erporderid |
| | | } |
| | | }); |
| | | } |
| | | //å
³é订å |
| | | sql = @"update TKimp_Ewo set status='CLOSED' where wo=@wo and id=@erporderid"; |
| | | sql = @"update TKimp_Ewo set status='CLOSED',closebeforestatus=status where wo=@wo and id=@erporderid"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | |
| | | erporderid = erporderid |
| | | } |
| | | }); |
| | | } |
| | | bool aa = DapperHelper.DoTransaction(list); |
| | | if (aa) |
| | | { |
| | |
| | | } |
| | | // --------------æ¥è¯¢æå®æ°æ®-------------- |
| | | 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.route_code,B.default_route,R.name as route_name,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name, |
| | | var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.idTopInventory,A.TopInventoryCode,A.TopInventoryName,A.route_code,B.default_route,R.name as route_name,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name, |
| | | A.stck_code,D.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,A.saleOrderDeliveryDate,W.saleOrderCode,U.username as lm_user,A.lm_date,A.data_sources,A.isstep,A.clerkuser, |
| | | B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6,A.printcount |
| | | from TK_Wrk_Man A |
| | |
| | | } |
| | | // --------------æ¥è¯¢æå®æ°æ®-------------- |
| | | 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.torg_name as wkshp_name, |
| | | var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.idTopInventory,A.TopInventoryCode,A.TopInventoryName,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name, |
| | | A.stck_code,D.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,A.saleOrderDeliveryDate,W.saleOrderCode,U.username as lm_user,A.lm_date,S.laborbad_qty,S.materielbad_qty, |
| | | B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6 |
| | | from TK_Wrk_Man A |
| | |
| | | #endregion |
| | | |
| | | #region[ç产å
¥åºä¿¡æ¯æ¥è¯¢] |
| | | public static ToMessage ProductInHouseOrderSearch(string deptno, string saleordercode, string wkshopcode, string erpordercode, string mesordercode, string partcode, string partname, string partspec) |
| | | public static ToMessage ProductInHouseOrderSearch(string issouceorder, string deptno, string saleordercode, string wkshopcode, string erpordercode, string mesordercode, string partcode, string partname, string partspec) |
| | | { |
| | | var dynamicParams = new DynamicParameters(); |
| | | string search = ""; |
| | | try |
| | | { |
| | | if (issouceorder != "" && issouceorder != null) |
| | | { |
| | | switch (issouceorder) |
| | | { |
| | | case "Y": |
| | | search += " and AA.m_po<>'' "; |
| | | break; |
| | | case "N": |
| | | search += " and AA.m_po='' "; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | if (deptno != "" && deptno != null) |
| | | { |
| | | search += "and AA.dept_code=@deptno "; |
| | |
| | | var sql = @"select * from( |
| | | select A.inbarcode,E.saleOrderid,isnull(E.saleOrderCode,'') as saleOrderCode,E.saleOrderDetailId,E.woid as mpoid,M.m_po,E.sbid,M.id as wo_id,A.wo_code,E.materiel_id,P.partcode,P.partname,P.partspec,E.unitid,E.unitcode,E.unitname, |
| | | A.step_code,T.stepname,M.wkshp_code,O.torg_name as wkshp_name,COALESCE(K.noid, E.stck_id) as stockid,COALESCE(K.code, E.stck_code) as stockcode,k.name as stockname,E.dept_id,E.dept_code, |
| | | E.saleOrderqty,E.qty,M.plan_qty,A.good_qty,isnull(A.inhouseqty,0) as inhouseqty,A.good_qty-isnull(A.inhouseqty,0) as stinhouseqty,M.lm_date,A.style,E.voucherdate |
| | | E.saleOrderqty,E.qty,M.plan_qty,A.good_qty,isnull(A.inhouseqty,0) as inhouseqty,A.good_qty-isnull(A.inhouseqty,0) as stinhouseqty,M.lm_date,A.style, |
| | | (case when E.voucherdate is null then M.lm_date else E.voucherdate end) as voucherdate |
| | | from TK_Wrk_Record A |
| | | 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 |
| | |
| | | union all |
| | | select A.inbarcode,E.saleOrderid,isnull(E.saleOrderCode,'') as saleOrderCode,E.saleOrderDetailId,E.woid as mpoid,M.m_po,E.sbid,M.id as wo_id,A.wo_code,E.materiel_id,P.partcode,P.partname,P.partspec,E.unitid,E.unitcode,E.unitname, |
| | | A.step_code,T.stepname,M.wkshp_code,O.torg_name as wkshp_name,COALESCE(K.noid, E.stck_id) as stockid,COALESCE(K.code, E.stck_code) as stockcode,k.name as stockname,E.dept_id,E.dept_code, |
| | | E.saleOrderqty,E.qty,M.plan_qty,A.sqty as sqty,isnull(A.inhouseqty,0) as inhouseqty,A.sqty-isnull(A.inhouseqty,0) as stinhouseqty,M.lm_date,A.style,E.voucherdate |
| | | E.saleOrderqty,E.qty,M.plan_qty,A.sqty as sqty,isnull(A.inhouseqty,0) as inhouseqty,A.sqty-isnull(A.inhouseqty,0) as stinhouseqty,M.lm_date,A.style, |
| | | (case when E.voucherdate is null then M.lm_date else E.voucherdate end) as voucherdate |
| | | from TK_Wrk_OutRecord A |
| | | 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 |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | | using System.Linq; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace VueWebCoreApi.Models |
| | | { |
| | | public class MaterialRoutList |
| | | { |
| | | public string partcode { get; set; } |
| | | public string partname { get; set; } |
| | | public string defalutroutecode { get; set; } |
| | | public string defalutroutename { get; set; } |
| | | public List<RouteList> children { get; set; } |
| | | |
| | | } |
| | | public class RouteList |
| | | { |
| | | public string routecode { get; set; } |
| | | public string routename { get; set; } |
| | | public string flag { get; set; } |
| | | public DataTable Data { get; set; } |
| | | } |
| | | } |