| | |
| | | } |
| | | #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() |