Kaynağa Gözat

后:导入sql优化

dubch 5 yıl önce
ebeveyn
işleme
56f60bc3b7

+ 56 - 7
src/dashoo.cn/backend/api/business/tmpzcgf/tmpzcgfSession.go

@@ -196,17 +196,17 @@ func (s *TmpzcgtSession) InsertOilPaymentInfo() error {
 		"PayMode," +
 		"CreateBy" +
 		")" +
-		"SELECT ID_GF, 企业名称 AS SupplierName ,交费日期 AS PayDate, IF(新准入='', 0, 新准入)  AS Amount, '2' AS IsPay,'1' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 新准入 IS NOT NULL and 新准入<>''" +
+		"SELECT ID_GF, 企业名称 AS SupplierName ,IF(交费日期='', '1970-01-01', 交费日期) AS PayDate, IF(新准入='', 0, 新准入)  AS Amount, '2' AS IsPay,'1' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 新准入 IS NOT NULL and 新准入<>''" +
 		" UNION" +
-		" SELECT ID_GF, 企业名称 AS SupplierName ,交费日期 AS PayDate, IF(换证='', 0, 换证) AS Amount , '2' AS IsPay, '4' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 换证 IS NOT NULL and 换证<>''" +
+		" SELECT ID_GF, 企业名称 AS SupplierName ,IF(交费日期='', '1970-01-01', 交费日期) AS PayDate, IF(换证='', 0, 换证) AS Amount , '2' AS IsPay, '4' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 换证 IS NOT NULL and 换证<>''" +
 		" UNION" +
-		" SELECT ID_GF, 企业名称 AS SupplierName ,交费日期 AS PayDate, IF(增项='', 0, 增项) AS Amount , '2' AS IsPay, '3' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 增项 IS NOT NULL and 增项<>''" +
+		" SELECT ID_GF, 企业名称 AS SupplierName ,IF(交费日期='', '1970-01-01', 交费日期) AS PayDate, IF(增项='', 0, 增项) AS Amount , '2' AS IsPay, '3' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 增项 IS NOT NULL and 增项<>''" +
 		" UNION" +
-		" SELECT ID_GF, 企业名称 AS SupplierName,交费日期 AS PayDate, IF(年审='', 0, 年审) AS Amount , '2' AS IsPay, '2' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 年审 IS NOT NULL and 年审<>''" +
+		" SELECT ID_GF, 企业名称 AS SupplierName,IF(交费日期='', '1970-01-01', 交费日期) AS PayDate, IF(年审='', 0, 年审) AS Amount , '2' AS IsPay, '2' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 年审 IS NOT NULL and 年审<>''" +
 		" UNION" +
-		" SELECT ID_GF, 企业名称 AS SupplierName,交费日期 AS PayDate, IF(罚款='', 0, 罚款) AS Amount , '2' AS IsPay, '5' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 罚款 IS NOT NULL and 罚款<>''" +
+		" SELECT ID_GF, 企业名称 AS SupplierName,IF(交费日期='', '1970-01-01', 交费日期) AS PayDate, IF(罚款='', 0, 罚款) AS Amount , '2' AS IsPay, '5' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 罚款 IS NOT NULL and 罚款<>''" +
 		" UNION" +
-		" SELECT ID_GF, 企业名称 AS SupplierName,交费日期 AS PayDate, IF(其它='', 0, 其它) AS Amount , '2' AS IsPay, '6' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 其它 IS NOT NULL and 其它<>''"
+		" SELECT ID_GF, 企业名称 AS SupplierName,IF(交费日期='', '1970-01-01', 交费日期) AS PayDate, IF(其它='', 0, 其它) AS Amount , '2' AS IsPay, '6' AS PayType , 备注 AS Remark, 交款方式 AS PayMode,收款人 AS CreateBy FROM T_交费记录 WHERE 其它 IS NOT NULL and 其它<>''"
 
 	_, err := s.DBE.Query(sql)
 	return err
@@ -231,7 +231,7 @@ func (s *TmpzcgtSession) InsterBadRecord() error {
 		") " +
 		"SELECT " +
 		"gfid AS Bak1 , " +
-		"STR_TO_DATE(IF(日期='', NULL, 日期),'%Y-%m-%d') AS CreateOn, " +
+		"STR_TO_DATE(IF(日期='', NULL, 日期),IF(LENGTH(日期)>8, '%Y-%m-%d', '%Y%m%d')) AS CreateOn, " +
 		"内容 AS Record, " +
 		"'' AS CompanyName, " +
 		"'' AS CompanyCode, " +
@@ -355,6 +355,55 @@ func (s *TmpzcgtSession) UpdateCertSub() error {
 	return err
 }
 
+func (s *TmpzcgtSession) UpdateCertSubCaseWhen() error {
+	/*sql := "UPDATE OilSupplierCertSub b SET b.SupplierId = IFNULL((SELECT a.SupplierId FROM OilSupplierCert a WHERE a.GfId =b.OldId AND a.SupplierTypeCode = b.SupplierTypeCode AND a.SupplierId IS NOT NULL limit 1 ), 0)," +
+	"b.SupplierCertId = IFNULL((SELECT a.Id FROM OilSupplierCert a WHERE a.GfId =b.OldId AND a.SupplierTypeCode = b.SupplierTypeCode limit 1), 0) " +
+	" where b.Type = '1' and b.CreateBy='导入1'"*/
+
+	//svc.GetEntitysByWhere(OilSupplierCertAppendSubName, where, &list)
+	//s.GetEntitysByWhere("OilSupplierCert", "", &certList)
+	//s.GetEntitysByOrderbyWhere ("OilSupplierCert", "", "Gfid ASC", &certList)
+
+	countSql := "SELECT count(*) FROM OilSupplierCert "
+	var err error
+
+	countStr, err := s.DBE.Query(countSql)
+	var total int64
+	if len(countStr) > 0 {
+		results := countStr[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			break
+		}
+		n := math.Ceil(float64(total) / 10)
+		s.DBE.Query("ALTER TABLE `OilSupplierCertSub` ADD INDEX index_oldid ( `OldId` );")
+		s.DBE.Query("SET autocommit=0;")
+		for i:=0; i <= int(n); i++ {
+			when1 := ""
+			when2 := ""
+			when3 := ""
+			oldId := 0
+			var certList [] suppliercert.OilSupplierCert
+			s.GetPagingEntitiesWithOrderBytbl("", int64(i - 1), 10, "Gfid", true, &certList, "1=1")
+			for _, cert := range certList {
+				when1 += " WHEN " + strconv.Itoa(cert.GfId) + " THEN " + strconv.Itoa(cert.SupplierId)
+				when2 += " WHEN " + strconv.Itoa(cert.GfId) + " THEN " + strconv.Itoa(cert.Id)
+				when3 += " WHEN " + strconv.Itoa(cert.GfId) + " THEN " + cert.SupplierTypeCode
+				oldId = cert.GfId
+			}
+			sql1 := " UPDATE OilSupplierCertSub b SET b.SupplierId = CASE b.OldId " + when1 + " END, " +
+				" b.SupplierCertId = CASE b.OldId " + when2 + " END, " +
+				" b.SupplierTypeCode = CASE b.OldId " + when3 + " END " +
+				" where b.OldId <= " + strconv.Itoa(oldId) + " and b.SupplierId = 0 "
+			_, err = s.DBE.Query(sql1)
+			s.DBE.Query("COMMIT;")
+		}
+		s.DBE.Query("SET autocommit=1;")
+		s.DBE.Query("alter table OilSupplierCertSub drop index index_oldid ;")
+	}
+	return err
+}
+
 func (s *TmpzcgtSession) UpdateCertSub01classId(where string) error {
 
 	sql1 := "UPDATE OilSupplierCertSub b left join OilGoodsAptitudeClass a ON a.Code = b.Code SET b.SubClassId = a.Id " +

+ 1 - 1
src/dashoo.cn/backend/api/controllers/oilsupplier/goodsaptitude.go

@@ -1503,7 +1503,7 @@ func (this *OilGoodsAptitudeController) TruncateImport() {
 
 }
 
-// @Title get 清空导入的信息
+// @Title get 生成对比列表
 // @Description get SampleType by token
 // @Success 200 {object} sampletype.SampleType
 // @router /create-contrast [get]

+ 2 - 1
src/dashoo.cn/backend/api/controllers/tmpzcgf/tmpzcgf.go

@@ -381,7 +381,8 @@ func (this *TmpzcgfController) UpdateOilSupplierCertSub() {
 	// err := session.Begin()
 	svc := tmpzcgf.GetTmpzcgtService(utils.DBE)
 	///////////////////
-	err := svc.UpdateCertSub()
+	//err := svc.UpdateCertSub()
+	err := svc.UpdateCertSubCaseWhen()
 	if err != nil {
 		// session.Rollback()
 		fmt.Println(err)