金豪看板
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1797 lines
88 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using NFine.Code;
  2. using NFine.Domain.Entity.SystemManage;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Data.Common;
  6. using NFine.Repository;
  7. using System.Text;
  8. using System;
  9. using System.Configuration;
  10. using NFine.Data;
  11. using System.IO;
  12. using Newtonsoft.Json;
  13. using NFine.Domain._02_ViewModel;
  14. using NFine.Data.Extensions;
  15. using Newtonsoft.Json.Linq;
  16. namespace NFine.Application.SRM
  17. {
  18. public class WatchPanelApp : RepositoryFactory<ModuleEntity>
  19. {
  20. //到货明细
  21. public DataTable GetList1(string queryJson, ref Pagination jqgridparam)
  22. {
  23. var queryParam = queryJson.ToJObject();
  24. OperatorModel oo = NFine.Code.OperatorProvider.Provider.GetCurrent();
  25. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  26. List<DbParameter> parameter = new List<DbParameter>();
  27. string SqlText = @"
  28. select * from (
  29. SELECT *, - ,
  30. CASE WHEN -> 0 THEN '' WHEN > 0 THEN '' ELSE '' END
  31. FROM (
  32. SELECT cc.receiptNo ,dd.orderno ,dd.itemcode ,dd.planqty ,inv.invname ,
  33. isnull((
  34. SELECT SUM (lotqty)
  35. FROM icsitemlot lot with (nolock)
  36. WHERE lot.TransNO=dd.ReceiptNO AND lot.TransLine=dd.ReceiptLine
  37. AND isnull(IQCStatus,'') !='' AND cc.workpoint=lot.workpoint),0) ,
  38. isnull((
  39. SELECT SUM (lotqty)
  40. FROM icsitemlot lot with (nolock)
  41. WHERE lot.TransNO=dd.ReceiptNO AND lot.TransLine=dd.ReceiptLine
  42. AND isnull(IQCStatus,'') !='' AND cc.workpoint=lot.workpoint
  43. AND NOT EXISTS (
  44. SELECT 1 FROM ICSWareHouseLotInfo info
  45. WHERE info.lotno=lot.lotno AND info.workpoint=lot.workpoint)),0)
  46. FROM ICSINVReceipt cc with (nolock)
  47. LEFT JOIN ICSINVReceiptDetail dd with (nolock) ON cc.ReceiptNO=dd.ReceiptNO AND dd.workpoint=cc.workpoint
  48. LEFT JOIN ICSINVENTORY inv with (nolock) ON inv.invcode=dd.itemcode AND dd.workpoint=inv.workpoint
  49. WHERE cc.mtime >=DATEADD(week, -1,getdate())
  50. and cc.workpoint='" + workpoint + @"'
  51. ) ff ) gg
  52. ";
  53. DataTable dt = Repository().FindTablePageBySql_Other(SqlText, "MESconnstr", parameter.ToArray(), ref jqgridparam);
  54. return dt;
  55. }
  56. //来料不合格明细
  57. public DataTable GetList2(string queryJson, ref Pagination jqgridparam)
  58. {
  59. var queryParam = queryJson.ToJObject();
  60. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  61. OperatorModel oo = NFine.Code.OperatorProvider.Provider.GetCurrent();
  62. List<DbParameter> parameter = new List<DbParameter>();
  63. string SqlText = @"
  64. select * from (
  65. SELECT cc.receiptNo ,dd.orderno ,dd.itemcode , inv.invname ,
  66. sum(lot.lotqty) ,kk.CKITEMDESC
  67. FROM ICSINVReceipt cc with (nolock)
  68. LEFT JOIN ICSINVReceiptDetail dd with (nolock) ON cc.ReceiptNO=dd.ReceiptNO AND dd.workpoint=cc.workpoint
  69. LEFT JOIN ICSINVENTORY inv with (nolock) ON inv.invcode=dd.itemcode AND dd.workpoint=inv.workpoint
  70. left join icsitemlot lot with (nolock) on lot.TransNO=dd.ReceiptNO AND lot.TransLine=dd.ReceiptLine
  71. AND cc.workpoint=lot.workpoint
  72. left join (select * from (select ROW_NUMBER()over(partition by LOTNO order by mtime desc,id ) rowId,lotno ,errdata ,
  73. CASE WHEN NG='' THEN CKITEMDESC ELSE NG END CKITEMDESC
  74. from ICSIQCErrList ck with (nolock) where workpoint='" + workpoint + @"' and errdata='' ) as AuctionRecords
  75. where rowId=1) kk on kk.lotno=lot.lotno
  76. WHERE 1=1
  77. and cc.mtime >=DATEADD(MONTH, -1,getdate())
  78. -- and kk.errdata=''
  79. and isnull(lot.iqcstatus,'') =''
  80. and cc.workpoint='" + workpoint + @"'
  81. group by cc.receiptNo ,dd.orderno ,dd.itemcode , inv.invname ,kk.CKITEMDESC ) jj
  82. ";
  83. DataTable dt = Repository().FindTablePageBySql_Other(SqlText, "MESconnstr", parameter.ToArray(), ref jqgridparam);
  84. return dt;
  85. }
  86. //配料信息表
  87. public DataTable GetList3(string queryJson, ref Pagination jqgridparam)
  88. {
  89. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  90. var queryParam = queryJson.ToJObject();
  91. string type = queryParam["type"].ToString();
  92. OperatorModel oo = NFine.Code.OperatorProvider.Provider.GetCurrent();
  93. List<DbParameter> parameter = new List<DbParameter>();
  94. string SqlText = @" if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_TJRdTrans'))
  95. drop table #Temp_TJRdTrans
  96. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_TJRdTransLog'))
  97. drop table #Temp_TJRdTransLog
  98. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_TJResult'))
  99. drop table #Temp_TJResult
  100. select tt.rdcode ,tt.invcode , tt.rdstatus , tt.depname ,tt.fromstoragecode ,
  101. tt.mocode ,'' ,tt.rduser ,tt.mtime , CASE WHEN isnull(tt.actqty,0) !=0 then '' else '' end ,
  102. tt.rdNO,case when PLANQTY<0 then '退' else '' end LogType
  103. into #Temp_TJRdTrans
  104. from ICSRdTransTer tt with (nolock)
  105. left join icsmo mo with (nolock) on mo.mocode=tt.mocode and mo.moseq=tt.moseq and mo.workpoint=tt.workpoint
  106. where tt.rdtype=''
  107. AND TT.MTIME >DATEADD(MONTH, -1, GETDATE())
  108. AND TT.WORKPOINT='" + workpoint + @"'
  109. and CASE WHEN isnull(tt.actqty,0) !=0 then '' else '' end ='" + type + @"'
  110. SELECT * into #Temp_TJRdTransLog FROM (
  111. select LOG.MUSERNAME,LOG.TransNO,LOG.TransLine,LOG.MTIME ,row_number() over (partition by LOG.BUSINESSCODE,LOG.TransNO,LOG.TransLine order by LOG.LOTNO desc,ID) rn
  112. from ICSWareHouseLotInfoLog LOG with (nolock)
  113. WHERE EXISTS(SELECT 1 FROM #Temp_TJRdTrans TT
  114. WHERE tt.rdNO =LOG.TransLine
  115. AND TT.=LOG.TransNO AND LOG.BUSINESSCODE=tt.LogType and ='' )
  116. AND LOG.WORKPOINT='" + workpoint + @"'
  117. ) FF
  118. WHERE RN=1
  119. select distinct ,,,,
  120. CONVERT(varchar(19), , 21) ,CONVERT(varchar(19), , 21) , into #Temp_TJResult
  121. from (
  122. SELECT tt.*,log.MUSERNAME ,log.mtime
  123. FROM #Temp_TJRdTrans tt
  124. LEFT JOIN #Temp_TJRdTransLog log on tt.rdNO =LOG.TransLine AND TT.=LOG.TransNO ) gg ";
  125. DataTable dt = Repository().FindTablePageBySql_OtherTemp(SqlText, " #Temp_TJResult ",
  126. @" if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_TJRdTrans'))
  127. drop table #Temp_TJRdTrans
  128. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_TJRdTransLog'))
  129. drop table #Temp_TJRdTransLog
  130. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_TJResult'))
  131. drop table #Temp_TJResult ",
  132. "MESconnstr", parameter.ToArray(), ref jqgridparam);
  133. return dt;
  134. }
  135. //待入库明细
  136. public DataTable GetList4(string queryJson, ref Pagination jqgridparam)
  137. {
  138. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  139. var queryParam = queryJson.ToJObject();
  140. OperatorModel oo = NFine.Code.OperatorProvider.Provider.GetCurrent();
  141. List<DbParameter> parameter = new List<DbParameter>();
  142. string SqlText = @"
  143. select * from (
  144. SELECT cc.receiptNo ,dd.orderno ,dd.itemcode , inv.invname ,
  145. sum(lot.lotqty) ,(select top 1 bincode from ICSWareHouseLotInfo info where info.lotno=lot.lotno
  146. and info.workpoint=cc.workpoint) ,lot.lotno
  147. FROM ICSINVReceipt cc with (nolock)
  148. LEFT JOIN ICSINVReceiptDetail dd with (nolock) ON cc.ReceiptNO=dd.ReceiptNO AND dd.workpoint=cc.workpoint
  149. LEFT JOIN ICSINVENTORY inv with (nolock) ON inv.invcode=dd.itemcode AND dd.workpoint=inv.workpoint
  150. left join icsitemlot lot with (nolock) on lot.TransNO=dd.ReceiptNO AND lot.TransLine=dd.ReceiptLine AND cc.workpoint=lot.workpoint
  151. left join ICSWareHouseLotInfolog kk with (nolock) on kk.lotno=lot.lotno and kk.workpoint=cc.workpoint and kk.transtype='收'
  152. WHERE 1=1
  153. and kk.lotno is null
  154. and lot.IQCStatus= ''
  155. and cc.mtime >=DATEADD(month, -1,getdate())
  156. and cc.workpoint='" + workpoint + @"'
  157. group by cc.receiptNo ,dd.orderno ,dd.itemcode , inv.invname ,lot.lotno ,kk.tostackcode,cc.workpoint
  158. ) jj
  159. ";
  160. DataTable dt = Repository().FindTablePageBySql_Other(SqlText, "MESconnstr", parameter.ToArray(), ref jqgridparam);
  161. return dt;
  162. }
  163. //生产进度汇总表
  164. public DataTable GetList_WIPJinDu(string queryJson, string filters, ref Pagination jqgridparam)
  165. {
  166. try
  167. {
  168. List<DbParameter> parameter = new List<DbParameter>();
  169. #region 过滤条件
  170. string SQLWhere = "";
  171. if (!queryJson.Contains("[]"))
  172. {
  173. JObject jobject = JObject.Parse(queryJson);
  174. JArray array = JArray.Parse(jobject["value"].ToString());
  175. SQLWhere += " and A.SEGCODE in (";
  176. foreach(JObject j in array) {
  177. SQLWhere += "'" + j["value"].ToString()+"',";
  178. }
  179. SQLWhere= SQLWhere.TrimEnd(',');
  180. SQLWhere += ")";
  181. }
  182. #endregion
  183. string SqlText = GetCaiJiSQL(SQLWhere);
  184. DataTable dt = SqlHelper.GetDataTableBySql(SqlText);
  185. return dt;
  186. }
  187. catch (Exception ex)
  188. {
  189. WriteLogFile(ex.ToString(), "看板异常");
  190. }
  191. return null;
  192. }
  193. public DataTable GetList_WIPJinDu(string value)
  194. {
  195. try
  196. {
  197. WriteLogFile("参数:"+ value, "看板异常");
  198. List<DbParameter> parameter = new List<DbParameter>();
  199. #region 过滤条件
  200. string SQLWhere = "";
  201. if (!string.IsNullOrEmpty(value))
  202. {
  203. SQLWhere += " and A.SEGCODE in ('" + value .Replace(",","','")+ "')";
  204. }
  205. #endregion
  206. string SqlText = GetCaiJiSQL(SQLWhere);
  207. DataTable dt = SqlHelper.GetDataTableBySql(SqlText);
  208. return dt;
  209. }
  210. catch (Exception ex)
  211. {
  212. WriteLogFile(ex.ToString(), "看板异常");
  213. }
  214. return null;
  215. }
  216. private string GetCaiJiSQL(string SQLWhere)
  217. {
  218. string SqlText = @"
  219. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempMOSelect'))
  220. drop table #TempMOSelect
  221. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempCaiJi'))
  222. drop table #TempCaiJi
  223. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_MINDaJian'))
  224. drop table #Temp_MINDaJian
  225. select distinct lot.lotno,mo.mocode as , mo.moseq ,
  226. a.StartPlanDate as ,c.INVPARSETYPE as ,
  227. mo.ITEMCODE as ,mo.moplanqty as ,lot.lotqty,a.mtime 线,A.SEGCODE AS 线
  228. into #TempMOSelect
  229. from icsmo2user A with (nolock)
  230. inner JOIN ICSMO mo with (nolock) ON A.MOCODE=mo.MOCODE AND A.MOSEQ=mo.MOSEQ
  231. left join ICSITEMLot lot with (nolock) on mo.mocode=lot.transno and mo.moseq=lot.transline
  232. LEFT JOIN ICSINVENTORY C with (nolock) ON C.INVCODE=mo.ITEMCODE
  233. where mo.itemcode like '30%' and a.rcard=''
  234. and a.StartPlanDate >= dateadd(day,-30,getdate())
  235. " + SQLWhere + @"
  236. select hh.lotno,hh.AB面,min(hh.mtime) mtime,tt.lotqty lotqty,,
  237. into #TempCaiJi
  238. from(
  239. select Rcard lotno,case when plane='BOTTOM' then 'B' else 'A' end AB面,min(mtime) mtime
  240. from ICSSZAOIDATA
  241. where Rcard is not null and Rcard!=''
  242. and Rcard in (select lotno from #TempMOSelect)
  243. group by Rcard,case when plane='BOTTOM' then 'B' else 'A' end
  244. union all
  245. select snno lotno,case when type='1' then 'A' else 'B' end AB面,min(data4) mtime
  246. from ICSAIODATA dd
  247. where snno is not null and snno!=''
  248. and snno in (select lotno from #TempMOSelect tt)
  249. group by snno ,case when type='1' then 'A' else 'B' end
  250. ) hh
  251. left join #TempMOSelect tt on hh.lotno=tt.lotno
  252. group by hh.lotno,hh.AB面,tt.lotqty,,
  253. select min(hh.mtime) mtime ,
  254. into #Temp_MINDaJian
  255. from ICSSMTFEEDINGINFO hh
  256. inner join #TempCaiJi tt on hh.mocode=tt.
  257. group by
  258. select * ,
  259. case when is not null and !=0 then cast(Convert(decimal(18,2),*1.0000/*100) as nvarchar) +'%'
  260. else '0%' end
  261. from (
  262. select gg.线,gg. ,gg.AB面,gg. ,gg. ,gg. ,gg.线 ,cc2.mtime ,
  263. (select min(mtime) from #TempCaiJi cc
  264. where cc.=gg. and cc.=gg. and cc.AB面=gg.AB面 ) ,
  265. gg.,
  266. (select sum(lotqty) from #TempCaiJi cc
  267. where cc.=gg. and cc.=gg. and cc.AB面=gg.AB面 )
  268. from (
  269. select cc.AB面,mm., mm.,
  270. mm.,mm.,
  271. mm. ,mm.,min(线) 线,mm.线
  272. from #TempCaiJi cc
  273. left join #TempMOSelect mm with (nolock) on cc.lotno=mm.lotno
  274. group by cc.AB面,mm., mm.,
  275. mm.,mm.,
  276. mm. ,mm.,mm.线
  277. ) gg
  278. left join #Temp_MINDaJian cc2 on cc2.=gg.
  279. ) jj
  280. order by 2,1,3
  281. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempMOSelect'))
  282. drop table #TempMOSelect
  283. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempCaiJi'))
  284. drop table #TempCaiJi
  285. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_MINDaJian'))
  286. drop table #Temp_MINDaJian
  287. ";
  288. return SqlText;
  289. }
  290. //项目阶段
  291. public DataTable GetProjectJD()
  292. {
  293. List<DbParameter> parameter = new List<DbParameter>();
  294. string sql = @" select distinct REPLACE(PROJECTSTAGE, '生产确认表', '待装配') NAME from EXP_PROJECTPRODUCTIONSCHEDULE
  295. where OQC is null and not (PROJECTID>='2117101' and PROJECTID<='2117116') and REPLACE(PROJECTSTAGE, '', '') is not null";
  296. DataTable dt = OracleHelper.GetTable(sql, "Oracleconnstr", parameter.ToArray());
  297. return dt;
  298. //DataTable tblDatas = new DataTable("Datas");
  299. //tblDatas.Columns.Add("NAME", Type.GetType("System.String"));
  300. //for (int i = 0; i < 5; i++)
  301. //{
  302. // DataRow newRow;
  303. // newRow = tblDatas.NewRow();
  304. // newRow["NAME"] = i.ToString();
  305. // tblDatas.Rows.Add(newRow);
  306. //}
  307. //return tblDatas;
  308. }
  309. //设备类型
  310. public DataTable GetEQPType()
  311. {
  312. List<DbParameter> parameter = new List<DbParameter>();
  313. string sql = @" select distinct DEVICETYPE NAME from EXP_PROJECTPRODUCTIONSCHEDULE
  314. where OQC is null and not (PROJECTID>='2117101' and PROJECTID<='2117116') and DEVICETYPE is not null ";
  315. DataTable dt = OracleHelper.GetTable(sql, "Oracleconnstr", parameter.ToArray());
  316. return dt;
  317. }
  318. //状态
  319. public DataTable GetStatus()
  320. {
  321. List<DbParameter> parameter = new List<DbParameter>();
  322. string sql = @" select distinct case when PROJECTSTAGE ='FAT完成' then '完成' when PROJECTSTAGE ='FQC' then '完成'
  323. when BEGINDATE like '%-%-%' and TO_DATE(BEGINDATE,'YYYY-MM-DD')-sysdate < 7 and NVL(RTRIM(PROJECTSCHEDULE,'%'),0) <80 then '' else STATUS end NAME
  324. from EXP_PROJECTPRODUCTIONSCHEDULE
  325. where OQC is null and not (PROJECTID>='2117101' and PROJECTID<='2117116')
  326. and case when PROJECTSTAGE ='FAT完成' then '' when PROJECTSTAGE ='FQC' then ''
  327. when BEGINDATE like '%-%-%' and TO_DATE(BEGINDATE,'YYYY-MM-DD')-sysdate < 7 and NVL(RTRIM(PROJECTSCHEDULE,'%'),0) <80 then '' else STATUS end is not null ";
  328. DataTable dt = OracleHelper.GetTable(sql, "Oracleconnstr", parameter.ToArray());
  329. return dt;
  330. }
  331. //生产进度-层析柱Qty
  332. public DataTable GetWIPQty1()
  333. {
  334. try
  335. {
  336. List<DbParameter> parameter = new List<DbParameter>();
  337. string SqlText = @"
  338. SELECT
  339. sum(case when REPLACE( PROJECTSTAGE, '', '' ) like '%%' or
  340. REPLACE( PROJECTSTAGE, '', '' ) not like '%%'
  341. then to_number ( QUANTITY ) else 0 end ) WIPQTY,
  342. sum(case when REPLACE( PROJECTSTAGE, '', '' ) not like '%%' and
  343. REPLACE( PROJECTSTAGE, '', '' ) like '%%'
  344. then to_number ( QUANTITY ) else 0 end ) COMQTY,
  345. sum(to_number ( QUANTITY ) ) ZQTY,
  346. REPLACE( REPLACE( REPLACE( PROJECTSTAGE, '', '' ), '', '' ), '', '' ) PROJECTStr
  347. FROM
  348. EXP_PROJECTPRODUCTIONSCHEDULE
  349. WHERE
  350. 1 = 1
  351. and not (PROJECTID>='2117101' and PROJECTID<='2117116')
  352. and DEVICETYPE in ('EAC系列')
  353. and OQC is null
  354. GROUP BY REPLACE( REPLACE( REPLACE( PROJECTSTAGE, '', '' ), '', '' ), '', '' )
  355. HAVING sum(to_number ( QUANTITY ) )>0 ";
  356. DataTable dt = OracleHelper.GetTable(SqlText, "Oracleconnstr", parameter.ToArray());
  357. return dt;
  358. }
  359. catch (Exception ex)
  360. {
  361. WriteLogFile(ex.ToString(), "看板异常");
  362. }
  363. return null;
  364. }
  365. //生产进度-设备Qty
  366. public DataTable GetWIPQty5()
  367. {
  368. try
  369. {
  370. List<DbParameter> parameter = new List<DbParameter>();
  371. string SqlText = @" SELECT
  372. sum(case when REPLACE( PROJECTSTAGE, '', '' ) like '%%' or
  373. REPLACE( PROJECTSTAGE, '', '' ) not like '%%'
  374. then to_number ( QUANTITY ) else 0 end ) WIPQTY,
  375. sum(case when REPLACE( PROJECTSTAGE, '', '' ) not like '%%' and
  376. REPLACE( PROJECTSTAGE, '', '' ) like '%%'
  377. then to_number ( QUANTITY ) else 0 end ) COMQTY,
  378. sum(to_number ( QUANTITY ) ) ZQTY,
  379. REPLACE( REPLACE( REPLACE( PROJECTSTAGE, '', '' ), '', '' ), '', '' ) PROJECTStr
  380. FROM
  381. EXP_PROJECTPRODUCTIONSCHEDULE
  382. WHERE
  383. 1 = 1
  384. AND NOT ( PROJECTID >= '2117101' AND PROJECTID <= '2117116' )
  385. AND DEVICETYPE NOT IN ( 'SAC系列','EAC系列' )
  386. AND OQC IS NULL
  387. GROUP BY REPLACE( REPLACE( REPLACE( PROJECTSTAGE, '', '' ), '', '' ), '', '' )
  388. HAVING sum(to_number ( QUANTITY ) )>0 ";
  389. DataTable dt = OracleHelper.GetTable(SqlText, "Oracleconnstr", parameter.ToArray());
  390. return dt;
  391. }
  392. catch (Exception ex)
  393. {
  394. WriteLogFile(ex.ToString(), "看板异常");
  395. }
  396. return null;
  397. }
  398. //生产进度 柱状图 (在制数 完成数 )
  399. public DataTable GetWIPQty2()
  400. {
  401. try
  402. {
  403. //生产确认表 有值中: 电装开始 有值 就是已开工,电装开始 无值 就是待开工
  404. List<DbParameter> parameter = new List<DbParameter>();
  405. string SqlText = @" SELECT
  406. SUM(CASE WHEN PRODUCTIONCONFIRM IS NOT NULL AND ELECTRICASSEMBLYSTART IS NOT NULL
  407. THEN to_number(QUANTITY) ELSE 0 END) YKGQty,
  408. SUM(CASE WHEN PRODUCTIONCONFIRM IS NOT NULL AND ELECTRICASSEMBLYSTART IS NULL
  409. THEN to_number(QUANTITY) ELSE 0 END) DKGQty
  410. from EXP_PROJECTPRODUCTIONSCHEDULE
  411. WHERE 1=1 AND PRODUCTIONCONFIRM IS NOT NULL
  412. and not (PROJECTID>='2117101' and PROJECTID<='2117116')
  413. and OQC is null ";
  414. DataTable dt = OracleHelper.GetTable(SqlText, "Oracleconnstr", parameter.ToArray());
  415. return dt;
  416. }
  417. catch (Exception ex)
  418. {
  419. WriteLogFile(ex.ToString(), "看板异常");
  420. }
  421. return null;
  422. }
  423. //设备类型在制数
  424. public DataTable GetWIPQty3()
  425. {
  426. try
  427. {
  428. //生产确认表 有值 FQC 无值
  429. List<DbParameter> parameter = new List<DbParameter>();
  430. string SqlText = @" SELECT
  431. SUM( to_number(QUANTITY) ) Qty,nvl(DEVICETYPE,'') EQPTypeName
  432. from EXP_PROJECTPRODUCTIONSCHEDULE
  433. WHERE 1=1 AND PRODUCTIONCONFIRM IS NOT NULL
  434. and not (PROJECTID>='2117101' and PROJECTID<='2117116')
  435. AND OQC IS NULL
  436. GROUP BY DEVICETYPE ";
  437. DataTable dt = OracleHelper.GetTable(SqlText, "Oracleconnstr", parameter.ToArray());
  438. return dt;
  439. }
  440. catch (Exception ex)
  441. {
  442. WriteLogFile(ex.ToString(), "看板异常");
  443. }
  444. return null;
  445. }
  446. //待开工项目(Qty)
  447. public DataTable GetWIPQty4()
  448. {
  449. try
  450. {
  451. //生产确认表 有值 电装开始 无值
  452. List<DbParameter> parameter = new List<DbParameter>();
  453. string SqlText = @"
  454. SELECT SUM ( to_number ( QUANTITY ) ) Qty,
  455. SUBSTR ( BEGINDATE, 0, 4+instr ( SUBSTR ( BEGINDATE, 6, 3 ), '-' ) ) MonthStr
  456. FROM
  457. EXP_PROJECTPRODUCTIONSCHEDULE
  458. WHERE
  459. 1 = 1
  460. AND( (ELECTRICASSEMBLYSTART IS NULL
  461. AND PRODUCTIONCONFIRM IS NOT NULL
  462. and OQC IS NULL
  463. ) or PROJECTSTAGE='' )
  464. AND BEGINDATE IS NOT NULL
  465. and not (PROJECTID>='2117101' and PROJECTID<='2117116')
  466. GROUP BY
  467. SUBSTR ( BEGINDATE, 0, 4+instr ( SUBSTR ( BEGINDATE, 6, 3 ), '-' ) ),
  468. SUBSTR ( BEGINDATE, 0, 4 ),
  469. to_number ( SUBSTR ( BEGINDATE, 6, instr ( SUBSTR ( BEGINDATE, 6, 3 ), '-' ) - 1 ) )
  470. ORDER BY
  471. SUBSTR ( BEGINDATE, 0, 4 ),
  472. to_number ( SUBSTR ( BEGINDATE, 6, instr ( SUBSTR ( BEGINDATE, 6, 3 ), '-' ) - 1 ) )
  473. ";
  474. DataTable dt = OracleHelper.GetTable(SqlText, "Oracleconnstr", parameter.ToArray());
  475. return dt;
  476. }
  477. catch (Exception ex)
  478. {
  479. WriteLogFile(ex.ToString(), "看板异常");
  480. }
  481. return null;
  482. }
  483. //收货进度
  484. public DataTable GetRCVJingDu()
  485. {
  486. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  487. List<DbParameter> parameter = new List<DbParameter>();
  488. string SqlText = @"
  489. if exists(select* from tempdb..sysobjects where id= object_id('tempdb..#TEMP_ItemCK'))
  490. drop table #TEMP_ItemCK
  491. select sum(lotqty) Qty,cktype
  492. INTO #TEMP_ItemCK
  493. from(
  494. select lot.lotno, lot.lotqty, lot.IQCStatus, lot.step,
  495. case when lot.step= '' and lot.IQCStatus= '' then ''
  496. when isnull(lot.step,'')!='' and lot.IQCStatus='' then ''
  497. when lot.IQCStatus= '' then '' else '' end CKType
  498. from ICSINVReceipt cc with (nolock)
  499. left join ICSINVReceiptDetail dd with (nolock) on cc.ReceiptNO= dd.ReceiptNO and dd.workpoint= cc.workpoint
  500. left join ICSITEMLot lot with (nolock) on lot.mcode= dd.itemcode and lot.TransNO= dd.ReceiptNO
  501. and lot.TransLine= dd.ReceiptLine and dd.workpoint= lot.workpoint
  502. where not exists(select 1 from ICSWareHouseLotInfoLog log with (nolock) where log.lotno= lot.lotno)
  503. and lot.lotno is not null
  504. and cc.workpoint ='" + workpoint + @"'
  505. and cc.mtime >=DATEADD(week, -1,getdate())
  506. ) gg
  507. where cktype!=''
  508. group by cktype
  509. select * from (
  510. SELECT QTY,CKTYPE,cast(CONVERT(DECIMAL(18,2),QTY/(SELECT SUM(QTY) FROM #TEMP_ItemCK )*100) as NVARCHAR) +'%' Qtypercent
  511. from #TEMP_ItemCK
  512. union all
  513. SELECT 0,'', '0%' Qtypercent
  514. where not EXISTS(select 1 from #TEMP_ItemCK where cktype='')
  515. union all
  516. SELECT 0,'', '0%' Qtypercent
  517. where not EXISTS(select 1 from #TEMP_ItemCK where cktype='')
  518. union all
  519. SELECT 0,'', '0%' Qtypercent
  520. where not EXISTS(select 1 from #TEMP_ItemCK where cktype='')
  521. ) ff
  522. order by case CKTYPE when '' then 0 when '' then 1 when '' then 2 else 3 end
  523. ";
  524. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  525. return dt;
  526. }
  527. //到货数量(item)
  528. public DataTable GetRCVQty(string type)
  529. {
  530. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  531. List<DbParameter> parameter = new List<DbParameter>();
  532. string SqlText = "";
  533. switch (type)
  534. {
  535. case "日":
  536. SqlText = @"
  537. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  538. DROP TABLE #TEMP_Itemrr_tt
  539. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  540. DROP TABLE #TEMP_Itemrr_tt2
  541. SELECT CONVERT( VARCHAR ( 100 ), DATEADD( DAY, number *- 1, getdate( ) ), 23 ) AS
  542. INTO #TEMP_Itemrr_tt2
  543. FROM master.dbo.spt_values
  544. WHERE type = 'p'
  545. AND number <= 6 AND number >= 0
  546. SELECT SUM( planqty ) QTY,
  547. CONVERT ( VARCHAR ( 100 ), mtime, 23 )
  548. INTO #TEMP_Itemrr_tt
  549. FROM
  550. ICSINVReceiptDetail
  551. WHERE
  552. mtime >= CONVERT ( VARCHAR ( 10 ), DATEADD( DAY, - 6, getdate( ) ), 23 ) + ' 00:00:00'
  553. AND workpoint = '" + workpoint + @"'
  554. GROUP BY
  555. CONVERT ( VARCHAR ( 100 ), mtime, 23 )
  556. SELECT substring( aa.,6,5) ,
  557. isnull( bb.qty, 0 ) QTY
  558. FROM
  559. #TEMP_Itemrr_tt2 aa
  560. LEFT JOIN #TEMP_Itemrr_tt bb ON aa. = bb.
  561. ORDER BY 1
  562. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  563. DROP TABLE #TEMP_Itemrr_tt
  564. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  565. DROP TABLE #TEMP_Itemrr_tt2 ";
  566. break;
  567. case "周":
  568. SqlText = @"
  569. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  570. DROP TABLE #TEMP_Itemrr_tt
  571. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  572. DROP TABLE #TEMP_Itemrr_tt2
  573. SELECT DATEPART(wk,CONVERT( VARCHAR ( 10 ), DATEADD( week, -1*NUMBER, getdate( ) ),23)+' 00:00:00') AS ,
  574. CONVERT( VARCHAR ( 4 ), DATEADD( week, -1*NUMBER, getdate( ) ),23)
  575. INTO #TEMP_Itemrr_tt2
  576. FROM master.dbo.spt_values
  577. WHERE
  578. type = 'p'
  579. AND number <= 7 AND number >= 0
  580. SELECT SUM( planqty ) QTY,
  581. DATEPART(wk, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23) INTO #TEMP_Itemrr_tt
  582. FROM
  583. ICSINVReceiptDetail with (nolock)
  584. WHERE
  585. mtime >= CONVERT( VARCHAR ( 10 ), DATEADD( week, -7, getdate( ) ),23)+' 00:00:00'
  586. AND workpoint = '" + workpoint + @"'
  587. GROUP BY DATEPART(wk, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23)
  588. ORDER BY CONVERT( VARCHAR ( 4 ),mtime,23),DATEPART(wk, mtime)
  589. SELECT
  590. aa.,
  591. isnull( bb.qty, 0 ) QTY
  592. FROM
  593. #TEMP_Itemrr_tt2 aa
  594. LEFT JOIN #TEMP_Itemrr_tt bb ON aa. = bb. AND aa. = bb.
  595. ORDER BY aa., aa.
  596. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  597. DROP TABLE #TEMP_Itemrr_tt
  598. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  599. DROP TABLE #TEMP_Itemrr_tt2
  600. "; break;
  601. case "月":
  602. SqlText = @"
  603. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  604. DROP TABLE #TEMP_Itemrr_tt
  605. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  606. DROP TABLE #TEMP_Itemrr_tt2
  607. SELECT DATEPART(month,CONVERT( VARCHAR ( 10 ), DATEADD( month, -1*NUMBER, getdate( ) ),23)+' 00:00:00') AS ,
  608. CONVERT( VARCHAR ( 4 ), DATEADD( month, -1*NUMBER, getdate( ) ),23)
  609. INTO #TEMP_Itemrr_tt2
  610. FROM master.dbo.spt_values
  611. WHERE
  612. type = 'p'
  613. AND number <= 11 AND number >= 0
  614. SELECT SUM( planqty ) QTY,
  615. DATEPART(month, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23) INTO #TEMP_Itemrr_tt
  616. FROM
  617. ICSINVReceiptDetail with (nolock)
  618. WHERE
  619. mtime >= CONVERT( VARCHAR ( 10 ), DATEADD( month, -11, getdate( ) ),23)+' 00:00:00'
  620. AND workpoint = '" + workpoint + @"'
  621. GROUP BY DATEPART(month, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23)
  622. ORDER BY CONVERT( VARCHAR ( 4 ),mtime,23),DATEPART(month, mtime)
  623. SELECT
  624. aa.,
  625. isnull( bb.qty, 0 ) QTY
  626. FROM
  627. #TEMP_Itemrr_tt2 aa
  628. LEFT JOIN #TEMP_Itemrr_tt bb ON aa. = bb. AND aa. = bb.
  629. ORDER BY aa., aa.
  630. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  631. DROP TABLE #TEMP_Itemrr_tt
  632. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  633. DROP TABLE #TEMP_Itemrr_tt2
  634. "; break;
  635. case "年": SqlText = @"
  636. SELECT SUM( planqty ) QTY,
  637. CONVERT( VARCHAR ( 4 ),mtime,23)
  638. FROM
  639. ICSINVReceiptDetail with (nolock)
  640. WHERE workpoint = '" + workpoint + @"'
  641. GROUP BY CONVERT( VARCHAR ( 4 ),mtime,23)
  642. ORDER BY CONVERT( VARCHAR ( 4 ),mtime,23)
  643. "; break;
  644. }
  645. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  646. return dt;
  647. }
  648. //入库数量(item)
  649. public DataTable GetWareInQty(string type)
  650. {
  651. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  652. List<DbParameter> parameter = new List<DbParameter>();
  653. string SqlText = "";
  654. switch (type)
  655. {
  656. case "日":
  657. SqlText = @"
  658. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  659. DROP TABLE #TEMP_Itemrr_tt
  660. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  661. DROP TABLE #TEMP_Itemrr_tt2
  662. SELECT CONVERT( VARCHAR ( 100 ), DATEADD( DAY, number *- 1, getdate( ) ), 23 ) AS
  663. INTO #TEMP_Itemrr_tt2
  664. FROM master.dbo.spt_values
  665. WHERE type = 'p'
  666. AND number <= 6 AND number >= 0
  667. SELECT SUM( TRANSQTY ) QTY,
  668. CONVERT ( VARCHAR ( 100 ), MTIME, 23 )
  669. INTO #TEMP_Itemrr_tt
  670. FROM
  671. ICSWareHouseLotInfoLOG log with (nolock)
  672. WHERE
  673. MTIME >= CONVERT ( VARCHAR ( 10 ), DATEADD( DAY, - 6, getdate( ) ), 23 ) + ' 00:00:00'
  674. AND workpoint = '" + workpoint + @"' and log.transtype in ('收','退')
  675. GROUP BY
  676. CONVERT ( VARCHAR ( 100 ), MTIME, 23 )
  677. SELECT substring( aa.,6,5) ,
  678. isnull( bb.qty, 0 ) QTY
  679. FROM
  680. #TEMP_Itemrr_tt2 aa
  681. LEFT JOIN #TEMP_Itemrr_tt bb ON aa. = bb.
  682. ORDER BY 1
  683. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  684. DROP TABLE #TEMP_Itemrr_tt
  685. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  686. DROP TABLE #TEMP_Itemrr_tt2 ";
  687. break;
  688. case "周":
  689. SqlText = @"
  690. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  691. DROP TABLE #TEMP_Itemrr_tt
  692. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  693. DROP TABLE #TEMP_Itemrr_tt2
  694. SELECT DATEPART(wk,CONVERT( VARCHAR ( 10 ), DATEADD( week, -1*NUMBER, getdate( ) ),23)+' 00:00:00') AS ,
  695. CONVERT( VARCHAR ( 4 ), DATEADD( week, -1*NUMBER, getdate( ) ),23)
  696. INTO #TEMP_Itemrr_tt2
  697. FROM master.dbo.spt_values
  698. WHERE
  699. type = 'p'
  700. AND number <= 7 AND number >= 0
  701. SELECT SUM( transqty ) QTY,
  702. DATEPART(wk, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23) INTO #TEMP_Itemrr_tt
  703. FROM
  704. ICSWareHouseLotInfolog log with (nolock)
  705. WHERE
  706. mtime >= CONVERT( VARCHAR ( 10 ), DATEADD( week, -7, getdate( ) ),23)+' 00:00:00'
  707. AND workpoint = '" + workpoint + @"' and log.transtype in ('收','退')
  708. GROUP BY DATEPART(wk, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23)
  709. ORDER BY CONVERT( VARCHAR ( 4 ),mtime,23),DATEPART(wk, mtime)
  710. SELECT
  711. aa.,
  712. isnull( bb.qty, 0 ) QTY
  713. FROM
  714. #TEMP_Itemrr_tt2 aa
  715. LEFT JOIN #TEMP_Itemrr_tt bb ON aa. = bb. AND aa. = bb.
  716. ORDER BY aa., aa.
  717. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  718. DROP TABLE #TEMP_Itemrr_tt
  719. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  720. DROP TABLE #TEMP_Itemrr_tt2
  721. "; break;
  722. case "月":
  723. SqlText = @"
  724. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  725. DROP TABLE #TEMP_Itemrr_tt
  726. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  727. DROP TABLE #TEMP_Itemrr_tt2
  728. SELECT DATEPART(month,CONVERT( VARCHAR ( 10 ), DATEADD( month, -1*NUMBER, getdate( ) ),23)+' 00:00:00') AS ,
  729. CONVERT( VARCHAR ( 4 ), DATEADD( month, -1*NUMBER, getdate( ) ),23)
  730. INTO #TEMP_Itemrr_tt2
  731. FROM master.dbo.spt_values
  732. WHERE
  733. type = 'p'
  734. AND number <= 11 AND number >= 0
  735. SELECT SUM( transqty ) QTY,
  736. DATEPART(month, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23) INTO #TEMP_Itemrr_tt
  737. FROM
  738. ICSWareHouseLotInfolog log with (nolock)
  739. WHERE
  740. mtime >= CONVERT( VARCHAR ( 10 ), DATEADD( month, -11, getdate( ) ),23)+' 00:00:00'
  741. AND workpoint = '" + workpoint + @"' and log.transtype in ('收','退')
  742. GROUP BY DATEPART(month, mtime) ,CONVERT( VARCHAR ( 4 ),mtime,23)
  743. ORDER BY CONVERT( VARCHAR ( 4 ),mtime,23),DATEPART(month, mtime)
  744. SELECT
  745. aa.,
  746. isnull( bb.qty, 0 ) QTY
  747. FROM
  748. #TEMP_Itemrr_tt2 aa
  749. LEFT JOIN #TEMP_Itemrr_tt bb ON aa. = bb. AND aa. = bb.
  750. ORDER BY aa., aa.
  751. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt' ) )
  752. DROP TABLE #TEMP_Itemrr_tt
  753. IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id( 'tempdb..#TEMP_Itemrr_tt2' ) )
  754. DROP TABLE #TEMP_Itemrr_tt2
  755. "; break;
  756. case "年": SqlText = @"
  757. SELECT SUM( transqty ) QTY,
  758. CONVERT( VARCHAR ( 4 ),mtime,23)
  759. FROM
  760. ICSWareHouseLotInfolog log with (nolock)
  761. WHERE workpoint = '" + workpoint + @"' and log.transtype in ('收','退')
  762. GROUP BY CONVERT( VARCHAR ( 4 ),mtime,23)
  763. ORDER BY CONVERT( VARCHAR ( 4 ),mtime,23)
  764. "; break;
  765. }
  766. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  767. return dt;
  768. }
  769. //配料进度
  770. public DataTable GetPeiLiaoJingDu()
  771. {
  772. string workpoint = ConfigurationManager.ConnectionStrings["WorkPointCode"].ConnectionString;
  773. List<DbParameter> parameter = new List<DbParameter>();
  774. string SqlText = @"
  775. select UnDoQty, DoneQty,
  776. case when DoneQty + UnDoQty=0 then '0%' else cast(Convert(decimal(18, 2), DoneQty / (DoneQty + UnDoQty) * 100) as NVARCHAR) + '%' end DoneQtyPer,
  777. case when DoneQty + UnDoQty=0 then '0%' else cast(Convert(decimal(18, 2), UnDoQty / (DoneQty + UnDoQty) * 100) as NVARCHAR) + '%' end UnDoQtyPer
  778. from(
  779. select isnull(sum(case when isnull(actqty, 0) = 0 then planqty else 0 end),0) UnDoQty,
  780. isnull(sum(case when isnull(actqty, 0) = 0 then 0 else actqty end),0) DoneQty
  781. from ICSRdTransTer with (nolock)
  782. where RdType = ''
  783. and planqty > 0 and workpoint ='" + workpoint + @"'
  784. and mtime >=DATEADD(MONTH, -1,getdate())
  785. ) gg
  786. ";
  787. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  788. DataTable retdd = new DataTable();
  789. retdd.Columns.Add("cktype", Type.GetType("System.String"));
  790. retdd.Columns.Add("Qty", Type.GetType("System.Decimal"));
  791. retdd.Columns.Add("Qtypercent", Type.GetType("System.String"));
  792. if (dt != null && dt.Rows.Count > 0)
  793. {
  794. DataRow newRow = retdd.NewRow();
  795. newRow["cktype"] = "待配料";
  796. newRow["Qty"] = Convert.ToDecimal(dt.Rows[0]["UnDoQty"].ToString());
  797. newRow["Qtypercent"] = dt.Rows[0]["UnDoQtyPer"].ToString();
  798. retdd.Rows.Add(newRow);
  799. DataRow newRow2 = retdd.NewRow();
  800. newRow2["cktype"] = "已配料";
  801. newRow2["Qty"] = Convert.ToDecimal(dt.Rows[0]["DoneQty"].ToString());
  802. newRow2["Qtypercent"] = dt.Rows[0]["DoneQtyPer"].ToString();
  803. retdd.Rows.Add(newRow2);
  804. }
  805. else
  806. {
  807. DataRow newRow = retdd.NewRow();
  808. newRow["cktype"] = "待配料";
  809. newRow["Qty"] = 0;
  810. newRow["Qtypercent"] = "0%";
  811. retdd.Rows.Add(newRow);
  812. DataRow newRow2 = retdd.NewRow();
  813. newRow2["cktype"] = "已配料";
  814. newRow2["Qty"] = 0;
  815. newRow2["Qtypercent"] = "0%";
  816. retdd.Rows.Add(newRow2);
  817. }
  818. return retdd;
  819. }
  820. public DataTable GetSScode(string cookie) {
  821. string sql = @"
  822. select distinct a.sscode as name,a.sscode as value,'' as selected
  823. from ICSSS as a,ICSSEG as b,ICSSHIFTTYPE as c
  824. where a.SEGID = b.ID and a.SHIFTTYPEID = c.ID and
  825. b.WorkPoint = a.WorkPoint and c.WorkPoint = a.WorkPoint
  826. order by 1 ";
  827. DataTable table= Repository().GetDataTableBySql_Other(sql, "MESconnstr", null);
  828. foreach (DataRow row in table.Rows)
  829. {
  830. if (!string.IsNullOrEmpty(cookie))
  831. {
  832. JObject jobject = JObject.Parse(cookie);
  833. JArray array = JArray.Parse(jobject["value"].ToString());
  834. foreach (JObject j in array) {
  835. if (j["value"].ToString() == row["value"].ToString())
  836. row["selected"] = "true";
  837. }
  838. }
  839. }
  840. table.AcceptChanges();
  841. return table;
  842. }
  843. public static void WriteLogFile(string input, string txtName)
  844. {
  845. try
  846. {
  847. string logAdress = "C:\\看板日志" + "\\";
  848. if (!System.IO.Directory.Exists(logAdress))
  849. {
  850. System.IO.Directory.CreateDirectory(logAdress);//不存在就创建目录
  851. }
  852. string adress = logAdress + txtName;
  853. if (!System.IO.Directory.Exists(adress))
  854. {
  855. System.IO.Directory.CreateDirectory(adress);//不存在就创建目录
  856. }
  857. // string logAdress = ConfigurationManager.AppSettings["logAdress"].ToString();
  858. /**/
  859. ///指定日志文件的目录
  860. string fname = adress + "\\" + "log" + DateTime.Now.ToString("yy-MM-dd") + ".txt";
  861. /**/
  862. ///定义文件信息对象
  863. FileInfo finfo = new FileInfo(fname);
  864. if (!finfo.Exists)
  865. {
  866. FileStream fs;
  867. fs = File.Create(fname);
  868. fs.Close();
  869. finfo = new FileInfo(fname);
  870. }
  871. /**/
  872. ///判断文件是否存在以及是否大于2K
  873. if (finfo.Length > 1024 * 1024 * 10)
  874. {
  875. /**/
  876. ///文件超过10MB则重命名
  877. File.Move(logAdress + "\\Log\\" + txtName + ".txt", Directory.GetCurrentDirectory() + DateTime.Now.TimeOfDay + "\\Log\\" + txtName + ".txt");
  878. /**/
  879. ///删除该文件
  880. //finfo.Delete();
  881. }
  882. //finfo.AppendText();
  883. /**/
  884. ///创建只写文件流
  885. using (FileStream fs = finfo.OpenWrite())
  886. {
  887. /**/
  888. ///根据上面创建的文件流创建写数据流
  889. StreamWriter w = new StreamWriter(fs);
  890. /**/
  891. ///设置写数据流的起始位置为文件流的末尾
  892. ///设置写数据流的起始位置为文件流的末尾
  893. w.BaseStream.Seek(0, SeekOrigin.End);
  894. w.WriteLine("*****************Start*****************");
  895. w.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  896. /**/
  897. ///写入当前系统时间并换行
  898. /**/
  899. ///写入日志内容并换行
  900. w.WriteLine(input);
  901. /**/
  902. ///写入------------------------------------“并换行
  903. w.WriteLine("------------------END------------------------");
  904. /**/
  905. ///清空缓冲区内容,并把缓冲区内容写入基础流
  906. w.Flush();
  907. /**/
  908. ///关闭写数据流
  909. w.Close();
  910. }
  911. }
  912. catch (Exception ex)
  913. { }
  914. }
  915. public string ConvertDataTableToJson(DataTable dt)
  916. {
  917. StringBuilder sbs = new StringBuilder();
  918. if (dt.Rows.Count > 0)//如果有记录
  919. {
  920. sbs.Append("{'" + dt.TableName + "':[");
  921. string str = "";
  922. foreach (DataRow dr in dt.Rows)//开始拼
  923. {
  924. string result = "";
  925. foreach (DataColumn dc in dt.Columns)
  926. {
  927. result += string.Format(",'{0}':'{1}'",
  928. dc.ColumnName, dr[dc.ColumnName]);
  929. }
  930. result = result.Substring(1);
  931. result = ",{" + result + "}";
  932. str += result;
  933. }
  934. str = str.Substring(1);
  935. sbs.Append(str);
  936. sbs.Append("]}");
  937. }
  938. else//如果没有记录
  939. {
  940. sbs.Append("");
  941. }
  942. return sbs.ToString();
  943. }
  944. #region 执行大看板
  945. public DataTable GetZhiXing_MO(string ItemNumber)
  946. {
  947. string SqlText = "";
  948. SqlText = @"
  949. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempCCDD'))
  950. drop table #TempCCDD
  951. SELECT DISTINCT C.molotcode as ,C.ITEMCODE ,dd.INVNAME ,C.MOCODE ,LL.OPSEQ,
  952. a.OPCODE ,ppp.opname ,us.UserName ,
  953. CASE WHEN A.ACTIONRESULT='COLLECT_BEGIN' then '--------' WHEN A.ACTIONRESULT='COLLECT_END' then '--------' end as ,
  954. SUM(DATEDIFF(MINUTE, B.BeginDateTime, B.EndDateTime)) as '',
  955. isnull(SUM(DATEDIFF(MINUTE, B.BeginDateTime, B.EndDateTime))-ISNULL(xx.[],0),'') AS ,
  956. xx.[],
  957. isnull(CONVERT(VARCHAR,B.BeginDateTime,120),'') ,
  958. isnull(CONVERT(VARCHAR,B.EndDateTime,120),'') ,
  959. isnull(CONVERT(VARCHAR,xx. ,120),'') as ,
  960. isnull(CONVERT(VARCHAR,xx.,120),'') as ,
  961. xx.[],
  962. xx.[]
  963. into #TempCCDD
  964. FROM ICSLOTONWIP A
  965. LEFT JOIN ICSLOTONWIPDetail B ON A.LOTNO=B.LOTNO AND A.OPCODE=B.OPCODE
  966. LEFT JOIN ICSOP ppp on a.OPCODE=ppp.OPCODE
  967. LEFT JOIN ICSLOTSIMULATION nn on nn.LOTNO=A.LOTNO
  968. LEFT JOIN Sys_User us on us.UserCode=B.UserCodeBegin
  969. LEFT JOIN ICSMO C ON A.MOCODE=C.MOCODE AND A.MOSEQ=C.MOSEQ
  970. LEFT JOIN ICSMO2ROUTE gg ON c.MOCODE=gg.MOCODE and gg.EATTRIBUTE1=C.MOSEQ
  971. LEFT JOIN ICSINVENTORY dd on C.ITEMCODE=dd.INVCODE
  972. LEFT JOIN ICSITEMROUTE2OPLot LL ON LL.LotNo=A.LOTNO AND A.OPCODE=LL.OPCODE
  973. LEFT JOIN ICSMO2User UU ON UU.LOTNO=A.LOTNO AND UU.OPCODE=A.OPCODE AND B.ECCode=UU.CREWCODE
  974. LEFT JOIN (SELECT DISTINCT C.molotcode as ,C.ITEMCODE ,dd.INVNAME ,gg.ROUTECODE 线 ,A.LOTNO ,
  975. c.MOCODE ,c.MOSEQ , A.OPCODE ,us.UserName as ,
  976. pp.BeginTime ,
  977. pp.EndTime ,
  978. SUM(DATEDIFF(MINUTE, PP.BeginTime, PP.EndTime)) as '' ,
  979. vv.EnumText ,
  980. pp.Memo
  981. from ICSLOTONWIP A INNER JOIN ICSLOTPAUSE pp on A.Lotno=pp.lotno and A.opcode=pp.opcode
  982. LEFT JOIN Sys_User us on us.UserCode=PP.Usercode
  983. LEFT JOIN ICSMO C ON A.MOCODE=C.MOCODE AND A.MOSEQ=C.MOSEQ
  984. LEFT JOIN ICSMO2ROUTE gg ON c.MOCODE=gg.MOCODE and gg.EATTRIBUTE1=C.MOSEQ
  985. LEFT JOIN ICSINVENTORY dd on C.ITEMCODE=dd.INVCODE
  986. LEFT JOIN ICSITEMROUTE2OPLot LL ON LL.LotNo=A.LOTNO AND A.OPCODE=LL.OPCODE
  987. LEFT JOIN ICSMO2User UU ON UU.LOTNO=A.LOTNO AND UU.OPCODE=A.OPCODE AND pp.EATTRIBUTE1=UU.CREWCODE
  988. LEFT JOIN Sys_EnumValues vv on vv.EnumValue=pp.RESCODE --AND vv.EnumKey='00022'
  989. where pp.MODELCODE='' and vv.EnumKey='00022' --AND a.LOTNO=''-- and A.ACTIONRESULT = 'COLLECT_END'
  990. GROUP BY C.molotcode,C.ITEMCODE ,dd.INVNAME ,gg.ROUTECODE, A.LOTNO,c.MOCODE ,c.MOSEQ , A.OPCODE ,us.UserName,pp.BeginTime,pp.EndTime,vv.EnumText ,
  991. pp.Memo)
  992. xx on xx.[]=c.MOCODE AND xx.[]=c.MOSEQ AND A.OPCODE=xx.[] AND xx.[]=us.UserName AND xx. >B.BeginDateTime
  993. --AND xx. < B.EndDateTime
  994. AND ISNULL(xx., '2024-02-21 17:37:02') < ISNULL(B.EndDateTime, '2025-02-21 17:37:02')
  995. where 1=1 AND b.Type='' and a.WorkPoint='6000' and B.BeginDateTime>=DATEADD(mm, -3, getdate())
  996. GROUP BY C.molotcode,C.ITEMCODE ,dd.INVNAME ,gg.ROUTECODE, A.LOTNO,c.MOCODE ,c.MOSEQ , A.OPCODE ,
  997. us.UserName,xx.[],nn.ISCOM,b.MTIME,B.BeginDateTime, B.EndDateTime,xx.[],xx.[],ppp.opname,xx.[],
  998. xx.[],A.ACTIONRESULT,LL.OPSEQ
  999. ORDER BY C.molotcode, C.ITEMCODE ,LL.OPSEQ,us.UserName asc
  1000. SELECT *,case when is not null and is null then '' else '' end FROM #TempCCDD
  1001. WHERE CONVERT(varchar(10), , 21) =(SELECT MAX(CONVERT(varchar(10), , 21)) FROM #TempCCDD)
  1002. ORDER BY ,,
  1003. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempCCDD'))
  1004. drop table #TempCCDD
  1005. ";
  1006. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1007. return dt;
  1008. }
  1009. #endregion
  1010. #region 振翔生产进度区域一
  1011. public DataTable GetAreal1()
  1012. {
  1013. string where1 = "";
  1014. string SqlText = "";
  1015. SqlText = @" select * from(
  1016. select isnull(mpproduct,0) as ,isnull(mpsaleout,0) from ICSZXBoardPlan
  1017. where moth = CONVERT(CHAR(10),DATEADD(month,0,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120) )a
  1018. left join (
  1019. select isnull(realsaleout,0) from ICSZXBoardSaleout
  1020. where id = '1') b on 1=1
  1021. left join ( select isnull(realsaleout,0) from ICSZXBoardSaleout
  1022. where id = '2') on 1=1 ";
  1023. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1024. return dt;
  1025. }
  1026. #endregion
  1027. #region 振翔生产进度
  1028. public DataTable GetProductProgress(string ItemNumber)
  1029. {
  1030. string where1 = "";
  1031. string SqlText = "";
  1032. SqlText = @" --socode销售车辆号 monum工单总行 wipnum报告结束数量 wipbnum报告的数量含开工中
  1033. select tmo.socode,tmo.monum,isnull(wip.wipnum ,0) as wipnum , isnull(wipb.num ,0) as wipbnum
  1034. into #tempNum
  1035. from
  1036. (
  1037. select tso.socode ,count(*) as monum from
  1038. icsso tso
  1039. left join icsmo tmo on tso.socode = tmo.molotcode
  1040. group by tso.socode
  1041. ) tmo
  1042. left join (
  1043. select tso.socode ,count(*) as wipnum from
  1044. icsso tso
  1045. left join (select mocode,molotcode from icsmo group by mocode,molotcode) tmo on tso.socode = tmo.molotcode
  1046. LEFT JOIN ICSLOTSIMULATION wip on tmo.mocode = wip.mocode
  1047. where wip.iscom='1'
  1048. group by tso.socode
  1049. ) wip on tmo.socode = wip.socode
  1050. left join
  1051. (
  1052. select tso.socode ,count(*) as num from
  1053. icsso tso
  1054. left join (select mocode,molotcode from icsmo group by mocode,molotcode) tmo on tso.socode = tmo.molotcode
  1055. LEFT JOIN ICSLOTONWIP wip on tmo.mocode = wip.mocode
  1056. where wip.actionresult!=''
  1057. group by tso.socode
  1058. ) wipb on tmo.socode = wipb.socode
  1059. select row_number() over (order by a.,a.)as , a.* from (
  1060. select distinct tso.socode ,tso.plandate as , isnull(convert(char(4),cus.fname),'') ,
  1061. inv.invname as ,
  1062. concat(cast(cast(tnum.wipnum * 1.0 / tnum.monum as decimal(18,3))* 100 as decimal(18,1)),'%') ,
  1063. (case when tnum.wipnum/tnum.monum =1 then '' when tnum.wipbnum >0 then '' else '' end )
  1064. from
  1065. icsso tso
  1066. left join ICSCustomer cus on tso.cusid = cus.FCUSTID
  1067. left join icsmo tmo on tso.socode = tmo.molotcode
  1068. left join #tempNum tnum on tnum.socode = tso.socode
  1069. left join ICSINVENTORY inv on inv.invstd LIKE '%'+'.'+tmo.molotcode
  1070. where tso.status = 'C' and tmo.id in(select moid from ICSMO2ROUTE)) a
  1071. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempNum'))
  1072. drop table #tempNum ";
  1073. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1074. return dt;
  1075. }
  1076. #endregion
  1077. #region 振翔月进度
  1078. #endregion
  1079. #region 振翔看板产量
  1080. public DataTable GetOutput()
  1081. {
  1082. string SqlText = "";
  1083. SqlText = @" if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempNum'))
  1084. drop table #tempNum
  1085. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempData'))
  1086. drop table #tempData
  1087. --
  1088. select tmo.socode,tmo.monum,isnull(wip.wipnum ,0) as wipnum ,wip.EndTime
  1089. into #tempNum
  1090. from
  1091. (
  1092. select tso.socode ,count(*) as monum from
  1093. icsso tso
  1094. left join icsmo tmo on tso.socode = tmo.molotcode
  1095. group by tso.socode
  1096. ) tmo
  1097. left join (
  1098. select tso.socode ,count(*) as wipnum,min(wip.EndTime) EndTime from
  1099. icsso tso
  1100. left join (select mocode,molotcode from icsmo group by mocode,molotcode) tmo on tso.socode = tmo.molotcode
  1101. LEFT JOIN ICSLOTSIMULATION wip on tmo.mocode = wip.mocode
  1102. where wip.iscom='1'
  1103. group by tso.socode
  1104. ) wip on tmo.socode = wip.socode
  1105. select * into #tempData from(
  1106. select isnull(mpproduct,0) as from ICSZXBoardPlan
  1107. where moth = CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120) )a --
  1108. left join (
  1109. select isnull(mpproduct,0) as from ICSZXBoardPlan
  1110. where moth = CONVERT(CHAR(10),DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120) ) b on 1=1 --
  1111. left join (
  1112. select count(*) from #tempNum t where t.wipnum = t.monum and t.EndTime between
  1113. CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1114. and CONVERT(CHAR(10),DATEADD(month,0,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)) c on 1=1
  1115. left join (
  1116. select count(*) from #tempNum t where t.wipnum = t.monum and t.EndTime between
  1117. CONVERT(CHAR(10),DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1118. and CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)) d on 1=1
  1119. left join (
  1120. select count(*) from #tempNum t where t.wipnum = t.monum and t.EndTime >=
  1121. CONVERT(CHAR(10),DATEADD(month,-MONTH(GETDATE())+1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)) e on 1=1
  1122. select isnull(,'0') , isnull(,'0') ,
  1123. isnull(,'0') , isnull(,'0') ,isnull(,'0') ,
  1124. --case when isnull(,0) = 0 then 0 else
  1125. --convert(decimal(10,2),isnull(,0))*1.0/isnull(convert(decimal(10,2),case when = 0 then 1 else end),1) end ,
  1126. --case when isnull(,0) = 0 then 0 else
  1127. --convert(decimal(10,2),isnull(,0))*1.0/isnull(convert(decimal(10,2),case when = 0 then 1 else end),1) end ,
  1128. case when isnull(,0) = 0 then 0 else
  1129. convert(decimal(10,2),isnull(,0))*1.0/isnull(convert(decimal(10,2),case when = 0 then 1 else end),1) end ,
  1130. case when isnull(,0) = 0 then 0 else
  1131. convert(decimal(10,2),isnull(,0))*1.0/isnull(convert(decimal(10,2),case when = 0 then 1 else end),1) end ,
  1132. month(DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE()))) ,
  1133. month(DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())))
  1134. from #tempData
  1135. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempNum'))
  1136. drop table #tempNum
  1137. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempData'))
  1138. drop table #tempData
  1139. ";
  1140. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1141. return dt;
  1142. }
  1143. #endregion
  1144. #region 振翔看板月产出
  1145. public DataTable monthOutput()
  1146. {
  1147. string SqlText = "";
  1148. //SqlText = @"
  1149. // if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempMO'))
  1150. // drop table #tempMO
  1151. // if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempM'))
  1152. // drop table #tempM
  1153. // --获取当前月份前十一个月的最大工单行数据
  1154. // select mocode,max(MOSEQ) as moseq
  1155. // into #tempMO
  1156. // from icsmo
  1157. // where MTIME between CONVERT(CHAR(10),DATEADD(month,-11,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111)
  1158. // and CONVERT(CHAR(10),DATEADD(month,0,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111)
  1159. // group by mocode
  1160. // --查询出当前年月向前十二月数据
  1161. // select *
  1162. // into #tempM
  1163. // from
  1164. // (select
  1165. // CONVERT(CHAR(7),DATEADD(month,-11,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1166. // union select
  1167. // CONVERT(CHAR(7),DATEADD(month,-10,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1168. // union select
  1169. // CONVERT(CHAR(7),DATEADD(month,-9,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1170. // union select
  1171. // CONVERT(CHAR(7),DATEADD(month,-8,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1172. // union select
  1173. // CONVERT(CHAR(7),DATEADD(month,-7,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1174. // union select
  1175. // CONVERT(CHAR(7),DATEADD(month,-6,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1176. // union select
  1177. // CONVERT(CHAR(7),DATEADD(month,-5,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1178. // union select
  1179. // CONVERT(CHAR(7),DATEADD(month,-4,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1180. // union select
  1181. // CONVERT(CHAR(7),DATEADD(month,-3,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1182. // union select
  1183. // CONVERT(CHAR(7),DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1184. // union select
  1185. // CONVERT(CHAR(7),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont
  1186. // union select
  1187. // CONVERT(CHAR(7),DATEADD(month,0,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont) TempM
  1188. // --获取前十二月数据
  1189. // select Mont,isnull(num,0) as num from #tempM tm
  1190. // left join (
  1191. // select convert(varchar(7),EndTime ,111) endtime, count(*) num
  1192. // from ICSLOTONWIP wip
  1193. // left join #tempMO mo on mo.moseq = wip.MOSEQ and mo.MOCODE = wip.MOCODE
  1194. // where wip.ACTIONRESULT = 'COLLECT_END'
  1195. // group by convert(varchar(7),EndTime ,111)) wip on tm.Mont= wip.endtime
  1196. // if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempMO'))
  1197. // drop table #tempMO
  1198. // if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempM'))
  1199. // drop table #tempM
  1200. // ";
  1201. SqlText = @" if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempNum'))
  1202. drop table #tempNum
  1203. --
  1204. select tmo.socode,tmo.monum,isnull(wip.wipnum ,0) as wipnum ,wip.EndTime
  1205. into #tempNum
  1206. from
  1207. (
  1208. select tso.socode ,count(*) as monum from
  1209. icsso tso
  1210. left join icsmo tmo on tso.socode = tmo.molotcode
  1211. group by tso.socode
  1212. ) tmo
  1213. left join (
  1214. select tso.socode ,count(*) as wipnum,min(wip.EndTime) EndTime from
  1215. icsso tso
  1216. left join (select mocode,molotcode from icsmo group by mocode,molotcode) tmo on tso.socode = tmo.molotcode
  1217. LEFT JOIN ICSLOTSIMULATION wip on tmo.mocode = wip.mocode
  1218. where wip.iscom='1'
  1219. group by tso.socode
  1220. ) wip on tmo.socode = wip.socode
  1221. select count(*) num , CONVERT(CHAR(7),DATEADD(month,0,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont from #tempNum t
  1222. where t.wipnum = t.monum and t.EndTime between
  1223. CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1224. and CONVERT(CHAR(10),DATEADD(month,0,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1225. union
  1226. select count(*) num , CONVERT(CHAR(7),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont from #tempNum t
  1227. where t.wipnum = t.monum and t.EndTime between
  1228. CONVERT(CHAR(10),DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1229. and CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1230. union
  1231. select count(*) num,CONVERT(CHAR(7),DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont from #tempNum t
  1232. where t.wipnum = t.monum and t.EndTime between
  1233. CONVERT(CHAR(10),DATEADD(month,-3,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1234. and CONVERT(CHAR(10),DATEADD(month,-2,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1235. union
  1236. select count(*) num,CONVERT(CHAR(7),DATEADD(month,-3,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont from #tempNum t
  1237. where t.wipnum = t.monum and t.EndTime between
  1238. CONVERT(CHAR(10),DATEADD(month,-4,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1239. and CONVERT(CHAR(10),DATEADD(month,-3,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1240. union
  1241. select count(*) num,CONVERT(CHAR(7),DATEADD(month,-4,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont from #tempNum t
  1242. where t.wipnum = t.monum and t.EndTime between
  1243. CONVERT(CHAR(10),DATEADD(month,-5,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1244. and CONVERT(CHAR(10),DATEADD(month,-4,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1245. union
  1246. select count(*) num,CONVERT(CHAR(7),DATEADD(month,-5,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) Mont from #tempNum t
  1247. where t.wipnum = t.monum and t.EndTime between
  1248. CONVERT(CHAR(10),DATEADD(month,-6,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1249. and CONVERT(CHAR(10),DATEADD(month,-5,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),120)
  1250. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempNum'))
  1251. drop table #tempNum
  1252. ";
  1253. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1254. return dt;
  1255. }
  1256. #endregion
  1257. public DataTable GetZhiXing_OQC( )
  1258. {
  1259. string SqlText = "";
  1260. SqlText = @"
  1261. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempIPPCC'))
  1262. drop table #TempIPPCC
  1263. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempMonthcc'))
  1264. drop table #TempMonthcc
  1265. declare @begin datetime,@end datetime
  1266. set @end=GETDATE()
  1267. declare @months int
  1268. set @months=6
  1269. select convert(varchar(7),DATEADD(month,number*-1+1,@end) ,120) AS
  1270. into #TempMonthcc
  1271. from master.dbo.spt_values
  1272. where type='p'
  1273. AND number<=@months
  1274. and number>=1
  1275. order by 1
  1276. select count(1) Qty,result,
  1277. into #TempIPPCC
  1278. from (
  1279. select distinct ccode, invcode ,result,convert(varchar(7),mtime,120)
  1280. from ICSOQCLotNo
  1281. where mtime>=DATEADD(month,DATEDIFF(month,0,DATEADD(mm, -5, GETDATE() )),0)
  1282. and result in('','')
  1283. ) dd
  1284. group by ,result
  1285. select isnull( case when isnull(gg.QtyAll,0) =0 then 0 else
  1286. Convert(decimal(18,2), (isnull(gg.QtyAll,0)-isnull(FF.QtyNG,0))*1.00/gg.QtyAll*100) end
  1287. ,0) PercentNum,
  1288. cc.
  1289. FROM #TempMonthcc cc
  1290. left join (select sum(qty) QtyAll, from #TempIPPCC hh group by ) GG on cc.=gg.
  1291. left join (select isnull(sum(qty),0) QtyNG, from #TempIPPCC hh where result='' group by ) ff on cc.=ff.
  1292. ORDER BY cc.
  1293. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempIPPCC'))
  1294. drop table #TempIPPCC
  1295. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TempMonthcc'))
  1296. drop table #TempMonthcc
  1297. ";
  1298. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1299. return dt;
  1300. }
  1301. public DataTable GetZhiXing_RCVUnInWare()
  1302. {
  1303. string SqlText = "";
  1304. SqlText = @"
  1305. select A.CCODE , B.LOTNO,a.cInvCode as ,C.INVSTD ,C.INVNAME ,b.transno ,
  1306. A.iQuantity AS ,A.STNO ,CONVERT(varchar(100), a.MTime, 23) MTime ,
  1307. STUFF((select',' + MUSERName from (SELECT DISTINCT MUSERName FROM ICSOQCLotNo d where D.CCODE=a.cCode and d.InvCode=a.cInvCode ) DD for xml path('')),1,1,'')
  1308. from ICSPOArrive a with(nolock)
  1309. inner join icsitemlot b with(nolock) on a.LOTNO=b.LotNO
  1310. LEFT JOIN ICSINVENTORY C with(nolock) ON C.INVCODE = A.cInvCode
  1311. where EXISTS(select 1 from ICSOQCLotNo d with(nolock) where D.CCODE=a.cCode and d.InvCode=a.cInvCode and result='' )
  1312. and not EXISTS(select 1 from ICSWareHouseLotInfoLog ll with(nolock) where ll.lotno=a.lotno and ll.TransType='收')
  1313. order by A.CCODE,a.cInvCode,B.LOTNO ";
  1314. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1315. return dt;
  1316. }
  1317. public DataTable GetOtherData()
  1318. {
  1319. string SqlText = "";
  1320. SqlText = @"
  1321. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcustttemp1'))
  1322. drop table #Tcustttemp1
  1323. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcusttfilter'))
  1324. drop table #Tcusttfilter
  1325. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TcusttDJ'))
  1326. drop table #TcusttDJ
  1327. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcustt_TOCKQty'))
  1328. drop table #Tcustt_TOCKQty
  1329. --wip表拼出所有的检验数据
  1330. select a.ITEMCODE,a.ROUTECODE,a.OPCODE, a.OPType AS OPTIONALOP, a.OPControlSeq,b.LOTNO,
  1331. isnull(b.ACTIONRESULT,'~') as ACTIONRESULT,b.MOCODE,b.MOSEQ,d.molotcode into #Tcustttemp1
  1332. from ICSITEMROUTE2OPLot a with(nolock)
  1333. left join icslotonwip b with(nolock) on a.ITEMCODE = b.ITEMCODE and a.ROUTECODE = b.ROUTECODE and a.OPCODE = b.OPCODE
  1334. inner join (SELECT distinct a.ITEMCODE,a.ROUTECODE
  1335. from ICSITEMROUTE2OPLot a with(nolock)
  1336. left join icslotonwip b with(nolock) on a.ITEMCODE = b.ITEMCODE and a.ROUTECODE = b.ROUTECODE and a.OPCODE = b.OPCODE
  1337. WHERE b.ACTIONRESULT is not null
  1338. ) c on a.ITEMCODE = c.ITEMCODE and a.ROUTECODE = c.ROUTECODE
  1339. left join icsmo d with(nolock) on d.MOCODE = b.MOCODE and b.SEQ = d.MOSEQ
  1340. order by ITEMCODE,OPControlSeq
  1341. --wip表里有在开工的排除
  1342. select ITEMCODE,ROUTECODE,ACTIONRESULT into #Tcusttfilter from icslotonwip with(nolock)
  1343. group by ITEMCODE,ROUTECODE,ACTIONRESULT HAVING COUNT(ITEMCODE) = 1 and COUNT(ROUTECODE)=1
  1344. --
  1345. select ITEMCODE,a.ROUTECODE,OPCODE,c.MOCODE,c.MOSEQ,c.LOTNO into #TcusttDJ from #Tcustttemp1 a
  1346. inner join
  1347. (select min(OPControlSeq) OPControlSeq,ROUTECODE from #Tcustttemp1 where OPTIONALOP = '' and LOTNO is null--
  1348. and ROUTECODE in
  1349. (select ROUTECODE from (select max(a.OPControlSeq) OPControlSeq,a.ROUTECODE from #Tcustttemp1 a
  1350. inner join (select min(OPControlSeq) OPControlSeq,ROUTECODE from #Tcustttemp1 where OPTIONALOP = '' and LOTNO is null group by ROUTECODE) b
  1351. on a.ROUTECODE = b.ROUTECODE and b.OPControlSeq >a.OPControlSeq and a.ACTIONRESULT = 'COLLECT_END' group by a.ROUTECODE) a )
  1352. GROUP BY ROUTECODE) b
  1353. on a.ROUTECODE = b.ROUTECODE and a.OPControlSeq = b.OPControlSeq
  1354. inner join ( select distinct mocode,MOSEQ,ROUTECODE,LOTNO from icslotonwip with(nolock) ) c
  1355. on a.ROUTECODE =c.ROUTECODE
  1356. where
  1357. not EXISTS( select 1 from #Tcusttfilter f
  1358. where f.ITEMCODE=a.ITEMCODE and f.ROUTECODE =a.ROUTECODE )
  1359. --
  1360. --1
  1361. select count(1) Qty into #Tcustt_TOCKQty
  1362. from (
  1363. select b.molotCode [] -- , dj.LOTNO [], dj.OPCODE []
  1364. from #TcusttDJ dj
  1365. inner join #Tcustttemp1 a on dj.ROUTECODE = a.ROUTECODE and a.OPCODE = dj.OPCODE and optionalop =''
  1366. inner join icsmo b with(nolock) on dj.MOCODE = b.MOCODE and dj.MOSEQ = b.MOSEQ
  1367. inner join ICSMO2user d with(nolock) on b.mocode = d.mocode and b.moseq = d.moseq and d.opcode = dj.OPCODE
  1368. union
  1369. select c.molotCode [] --, d.LOTNO [], d.OPCODE []
  1370. from
  1371. (select * from ICSITEMROUTE2OP with(nolock) where optionalop ='' and routecode in(
  1372. select DISTINCT routecode from ICSITEMROUTE2OP with(nolock) GROUP BY routecode HAVING count(*) = 1 )) a --线
  1373. inner JOIN ICSMO2ROUTE b with(nolock) on a.routeid = b.routeid
  1374. inner join ICSMO c with(nolock) on c.id = b.moid
  1375. inner join ICSMO2user d with(nolock) on c.mocode = d.mocode and c.moseq = d.moseq
  1376. inner join ICSITEMROUTE2OPLot lot with(nolock) on lot.itemcode = a.ITEMCODE and b.ROUTECODE = lot.ROUTECODE and lot.OPCODE = d.opcode
  1377. where not exists (select 1 from ICSLOTONWIP wip with(nolock) where wip.lotno = d.LOTNO and wip.opcode =d.OPCODE and wip.actionresult ='COLLECT_END')
  1378. ) jj
  1379. --1
  1380. select count(1) Qty into #Tcustt_CKQty
  1381. from (
  1382. SELECT distinct mm.molotcode --,b.LOTNO,a.OPCODE
  1383. from ICSQualityCKDATA a with(nolock)
  1384. LEFT JOIN ICSQualityCKDATADetail b with(nolock) on a.LOTNO=b.LOTNO and a.ID=b.DATAID
  1385. LEFT JOIN ICSLOTONWIP d with(nolock) on d.LotNo=a.LOTNO and d.opcode=a.OPCODE
  1386. LEFT JOIN icsmo mm with(nolock) on mm.MOCODE =d.MOCODE and mm.MOSEQ=d.MOSEQ
  1387. LEFT JOIN ICSITEMROUTE2OPLot ll with(nolock) on ll.OPCODE=a.OPCODE and ll.LotNo=a.LOTNO
  1388. WHERE ll.OPType='' and b.MTIME>= CONVERT(varchar(7), dateadd(mm,-1,getdate()), 21) +'-01 00:00:00'
  1389. and b.CKRESULT is not null
  1390. ) jj
  1391. select isnull((select Qty from #Tcustt_TOCKQty ),0) ,
  1392. isnull((select Qty from #Tcustt_CKQty ),0) ,
  1393. isnull((select count(1) from ICSZXCheck with(nolock) where checked='0'),0) ,
  1394. isnull((select count(1) from ICSZXCheck with(nolock) where checked='1' and month>= CONVERT(varchar(7), dateadd(mm,-1,getdate()), 21) +'-01' ),0)
  1395. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcustttemp1'))
  1396. drop table #Tcustttemp1
  1397. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcusttfilter'))
  1398. drop table #Tcusttfilter
  1399. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TcusttDJ'))
  1400. drop table #TcusttDJ
  1401. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcustt_TOCKQty'))
  1402. drop table #Tcustt_TOCKQty
  1403. ";
  1404. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1405. return dt;
  1406. }
  1407. public DataTable GetCKData()
  1408. {
  1409. string SqlText = "";
  1410. SqlText = @"
  1411. SELECT TOP 100 mm.molotcode ,yy.INVNAME ,
  1412. b.MUSERName ,
  1413. pp.CKGROUPDESC ,
  1414. CONVERT(varchar(16), b.MTIME, 120) as ,
  1415. b.Type ,
  1416. CASE when b.CKRESULT ='1' then '' when b.CKRESULT ='0' then '' end as ''
  1417. from ICSQualityCKDATA a with(nolock)
  1418. LEFT JOIN ICSQualityCKDATADetail b with(nolock) on a.LOTNO=b.LOTNO and a.ID=b.DATAID
  1419. LEFT JOIN ICSLOTONWIP d with(nolock) on d.LotNo=a.LOTNO and d.opcode=a.OPCODE
  1420. LEFT JOIN ICSOQCCKLIST qq with(nolock) on qq.invcode= d.itemcode and qq.opcode=d.opcode and qq.ckgroupattr=b.Type and b.CKitemid=qq.id
  1421. LEFT JOIN icsmo mm with(nolock) on mm.MOCODE =d.MOCODE and mm.MOSEQ=d.MOSEQ
  1422. -- LEFT JOIN ICSMO2ROUTE tt on tt.mocode=mm.mocode and tt.EATTRIBUTE1=mm.MOSEQ
  1423. LEFT JOIN ICSINVENTORY yy with(nolock) on yy.INVCODE=mm.ITEMCODE
  1424. LEFT JOIN ICSITEMROUTE2OPLot ll with(nolock) on ll.OPCODE=a.OPCODE and ll.LotNo=a.LOTNO
  1425. LEFT JOIN ICSOQCCKGROUP pp with(nolock) on pp.CKGROUP=qq.CKGROUPCode
  1426. -- LEFT JOIN ICSECS sss on sss.ecscode=b.CKvalue
  1427. -- LEFT JOIN ICSECS s1 on s1.ecscode=b.CKvalue2
  1428. -- LEFT JOIN ICSECS s2 on s2.ecscode=b.CKvalue3
  1429. -- LEFT JOIN ICSECS s3 on s3.ecscode=b.CKvalue4
  1430. -- LEFT JOIN ICSECS s4 on s4.ecscode=b.CKvalue5
  1431. -- LEFT JOIN ICSECS s5 on s5.ecscode=b.CKvalue6
  1432. WHERE ll.OPType='' and 1=1
  1433. ORDER BY b.MTIME desc
  1434. ";
  1435. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1436. return dt;
  1437. }
  1438. public DataTable GetCKOKRate()
  1439. {
  1440. string SqlText = "";
  1441. SqlText = @"
  1442. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcustccff'))
  1443. drop table #Tcustccff
  1444. select convert(varchar(7),DATEADD(month,number*-1,getdate()) ,120) AS ,number
  1445. into #Tcustccff
  1446. from master.dbo.spt_values
  1447. where type='p'
  1448. AND number<=5
  1449. and number>=0
  1450. order by 1
  1451. select ff., Convert(decimal(18,0),isnull(case when isnull(count(1),0)=0 then 0 else sum()*100.0000/count(1) end,0)) Qty
  1452. from #Tcustccff ff
  1453. left join (
  1454. SELECT distinct mm.molotcode ,b.LOTNO,a.OPCODE,
  1455. CASE when b.CKRESULT ='1' then 1 when b.CKRESULT ='0' then 0 end as ,
  1456. CONVERT(varchar(7), b.MTIME,21)
  1457. from ICSQualityCKDATA a with(nolock)
  1458. LEFT JOIN ICSQualityCKDATADetail b with(nolock) on a.LOTNO=b.LOTNO and a.ID=b.DATAID
  1459. LEFT JOIN ICSLOTONWIP d with(nolock) on d.LotNo=a.LOTNO and d.opcode=a.OPCODE
  1460. LEFT JOIN icsmo mm with(nolock) on mm.MOCODE =d.MOCODE and mm.MOSEQ=d.MOSEQ
  1461. LEFT JOIN ICSITEMROUTE2OPLot ll with(nolock) on ll.OPCODE=a.OPCODE and ll.LotNo=a.LOTNO
  1462. WHERE ll.OPType='' and b.MTIME>= CONVERT(varchar(7), dateadd(mm,-6,getdate()), 21) +'-01 00:00:00'
  1463. and b.CKRESULT is not null
  1464. ) jj on ff.=jj.
  1465. group by ff.,ff.number
  1466. order by ff.number desc
  1467. if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Tcustccff'))
  1468. drop table #Tcustccff
  1469. ";
  1470. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1471. return dt;
  1472. }
  1473. public DataTable GetCKOKRateALL()
  1474. {
  1475. string SqlText = "";
  1476. SqlText = @"
  1477. select Convert(decimal(18,0),isnull(case when isnull(count(1),0)=0 then 0 else sum()*1.0000/count(1) end,0)) Qty
  1478. from (
  1479. SELECT distinct mm.molotcode ,b.LOTNO,a.OPCODE,
  1480. CASE when b.CKRESULT ='1' then 1 when b.CKRESULT ='0' then 0 end as ,
  1481. CONVERT(varchar(7), b.MTIME,21)
  1482. from ICSQualityCKDATA a with(nolock)
  1483. LEFT JOIN ICSQualityCKDATADetail b with(nolock) on a.LOTNO=b.LOTNO and a.ID=b.DATAID
  1484. LEFT JOIN ICSLOTONWIP d with(nolock) on d.LotNo=a.LOTNO and d.opcode=a.OPCODE
  1485. LEFT JOIN icsmo mm with(nolock) on mm.MOCODE =d.MOCODE and mm.MOSEQ=d.MOSEQ
  1486. LEFT JOIN ICSITEMROUTE2OPLot ll with(nolock) on ll.OPCODE=a.OPCODE and ll.LotNo=a.LOTNO
  1487. WHERE ll.OPType=''
  1488. and b.CKRESULT is not null
  1489. ) jj
  1490. ";
  1491. DataTable dt = Repository().GetDataTableBySql_Other(SqlText, "MESconnstr", null);
  1492. return dt;
  1493. }
  1494. }
  1495. }