Sfoglia il codice sorgente

add:验证工具操作记录导出excel

zoie 12 ore fa
parent
commit
cf305c53e4

+ 50 - 2
controllers/Contract.go

@@ -1120,6 +1120,7 @@ func (c *ContractController) Contract_List_RecoveriesMoney() {
 	}
 
 	// 查询
+	T_submit := c.GetString("T_submit")
 	T_name := c.GetString("T_name")
 	T_start_date := c.GetString("T_start_date")             // 回款开始日期
 	T_end_date := c.GetString("T_end_date")                 // 回款结束日期
@@ -1133,7 +1134,7 @@ func (c *ContractController) Contract_List_RecoveriesMoney() {
 	Contract.Read_VerifyContract_All_Map()
 
 	ContractDao := Contract.NewContract(orm.NewOrm())
-	R_List, R_cnt := ContractDao.Read_Contract_List_For_RecoveriesAndInvoice(c.User.T_uuid, T_mine, T_name, T_start_date, T_end_date, T_recoveries_state, T_invoice_state, T_percentage_state, page, page_z)
+	R_List, R_cnt := ContractDao.Read_Contract_List_For_RecoveriesAndInvoice(c.User.T_uuid, T_submit, T_mine, T_name, T_start_date, T_end_date, T_recoveries_state, T_invoice_state, T_percentage_state, page, page_z)
 
 	var r_jsons lib.R_JSONS
 	r_jsons.Num = R_cnt
@@ -1150,6 +1151,8 @@ func (c *ContractController) Contract_List_RecoveriesMoney() {
 func (c *ContractController) Contract_List_RecoveriesMoney_Export() {
 
 	// 查询
+	T_submit := c.GetString("T_submit")
+
 	T_name := c.GetString("T_name")
 	T_start_date := c.GetString("T_start_date")             // 回款开始日期
 	T_end_date := c.GetString("T_end_date")                 // 回款结束日期
@@ -1163,7 +1166,7 @@ func (c *ContractController) Contract_List_RecoveriesMoney_Export() {
 	Contract.Read_VerifyContract_All_Map()
 
 	ContractDao := Contract.NewContract(orm.NewOrm())
-	R_List, _ := ContractDao.Read_Contract_List_For_RecoveriesAndInvoice(c.User.T_uuid, T_mine, T_name, T_start_date, T_end_date, T_recoveries_state, T_invoice_state, T_percentage_state, 0, 9999)
+	R_List, _ := ContractDao.Read_Contract_List_For_RecoveriesAndInvoice(c.User.T_uuid, T_submit, T_mine, T_name, T_start_date, T_end_date, T_recoveries_state, T_invoice_state, T_percentage_state, 0, 9999)
 	title := "销售提成明细表"
 	if T_mine == 1 {
 		title = fmt.Sprintf("%s-销售提成明细表", c.User.T_name)
@@ -1439,3 +1442,48 @@ func (c *ContractController) Contract_Percentage_Remit() {
 	c.ServeJSON()
 	return
 }
+
+func (c *ContractController) User_List() {
+	var r_jsons lib.R_JSONS
+	// 分页参数 初始化
+	page, _ := c.GetInt("page")
+	if page < 1 {
+		page = 1
+	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
+
+	T_name := c.GetString("T_name")
+
+	ContractDao := Contract.NewContract(orm.NewOrm())
+
+	uuidList := ContractDao.Read_T_submit_List()
+	if len(uuidList) == 0 {
+		c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+		c.ServeJSON()
+		return
+	}
+
+	R_List, R_cnt, err := NatsServer.Read_User_List_T_uuid(T_name, uuidList, page, page_z)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败"}
+		c.ServeJSON()
+		return
+	}
+
+	var U_List []userlibs.User
+	for _, user := range R_List {
+		U_List = append(U_List, user)
+	}
+
+	r_jsons.Num = R_cnt
+	r_jsons.Data = U_List
+	r_jsons.Page = page
+	r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}

+ 23 - 15
controllers/Percentage.go

@@ -54,15 +54,17 @@ func (c *PercentageController) Percentage_List() {
 	T_uuid := c.GetString("T_uuid")
 	T_state, _ := c.GetInt("T_state")
 	T_type, _ := c.GetInt("T_type")
-	T_start_date := c.GetString("T_start_date") // 开始时间
-	T_end_date := c.GetString("T_end_date")     // 结束时间
+	T_start_date := c.GetString("T_start_date")                     // 开始时间
+	T_end_date := c.GetString("T_end_date")                         // 结束时间
+	T_reporting_start_time := c.GetString("T_reporting_start_time") // 统计开始时间
+	T_reporting_end_time := c.GetString("T_reporting_end_time")     // 统计开始时间
 
 	userList, _ := NatsServer.Read_User_List_All()
 	Account.Read_User_All_Map(userList)
 	Percentage.Read_VerifyCompany_All_Map()
 
 	PercentageDao := Percentage.NewPercentage(orm.NewOrm())
-	R_List, R_cnt := PercentageDao.Read_Percentage_List_SQL(T_name, T_uuid, T_start_date, T_end_date,
+	R_List, R_cnt := PercentageDao.Read_Percentage_List_SQL(T_name, T_uuid, T_start_date, T_end_date, T_reporting_start_time, T_reporting_end_time,
 		false, T_state, T_type, page, page_z)
 
 	var r_jsons lib.R_JSONS
@@ -91,15 +93,17 @@ func (c *PercentageController) Percentage_User_List() {
 	// 查询
 	T_name := c.GetString("T_name")
 	T_state, _ := c.GetInt("T_state")
-	T_start_date := c.GetString("T_start_date") // 开始时间
-	T_end_date := c.GetString("T_end_date")     // 结束时间
+	T_start_date := c.GetString("T_start_date")                     // 开始时间
+	T_end_date := c.GetString("T_end_date")                         // 结束时间
+	T_reporting_start_time := c.GetString("T_reporting_start_time") // 统计开始时间
+	T_reporting_end_time := c.GetString("T_reporting_end_time")     // 统计开始时间
 
 	userList, _ := NatsServer.Read_User_List_All()
 	Account.Read_User_All_Map(userList)
 	Percentage.Read_VerifyCompany_All_Map()
 
 	PercentageDao := Percentage.NewPercentage(orm.NewOrm())
-	R_List, R_cnt := PercentageDao.Read_Percentage_User_List_SQL(c.User.T_uuid, T_name, T_start_date, T_end_date, false, T_state, page, page_z)
+	R_List, R_cnt := PercentageDao.Read_Percentage_User_List_SQL(c.User.T_uuid, T_name, T_start_date, T_end_date, T_reporting_start_time, T_reporting_end_time, false, T_state, page, page_z)
 
 	var r_jsons lib.R_JSONS
 	r_jsons.Num = R_cnt
@@ -120,13 +124,15 @@ func (c *PercentageController) Percentage_Export() {
 	T_start_date := c.GetString("T_start_date") // 开始时间
 	T_end_date := c.GetString("T_end_date")     // 结束时间
 	T_state, _ := c.GetInt("T_state")
-	T_type, _ := c.GetInt("T_type") // 提成类型
+	T_type, _ := c.GetInt("T_type")                                 // 提成类型
+	T_reporting_start_time := c.GetString("T_reporting_start_time") // 统计开始时间
+	T_reporting_end_time := c.GetString("T_reporting_end_time")     // 统计开始时间
 	userList, _ := NatsServer.Read_User_List_All()
 	Account.Read_User_All_Map(userList)
 	Percentage.Read_VerifyCompany_All_Map()
 	Basic.Read_VerifyItem_All_Map()
 	PercentageDao := Percentage.NewPercentage(orm.NewOrm())
-	percentageList, _ := PercentageDao.Read_Percentage_List_SQL(T_name, T_uuid, T_start_date, T_end_date, true, T_state, T_type, 0, 9999)
+	percentageList, _ := PercentageDao.Read_Percentage_List_SQL(T_name, T_uuid, T_start_date, T_end_date, T_reporting_start_time, T_reporting_end_time, true, T_state, T_type, 0, 9999)
 	dataInterval := fmt.Sprintf("%s - %s", T_start_date, T_end_date)
 	if dataInterval == " - " {
 		dataInterval = ""
@@ -238,15 +244,15 @@ func (c *PercentageController) Percentage_Export() {
 		}
 		f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), deviceType)
 		verifyItem := Basic.Read_VerifyItem_Get(percentage.T_verify_item)
-		f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", verifyItem.T_cell, line), percentage.T_money)
+		f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", verifyItem.T_cell, line), percentage.T_approval_money)
 		var verifyType string
 		if percentage.T_type == Percentage.SchemeType {
 			verifyType = "验证实施"
-			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", schemeEndCell, line), percentage.T_money)
+			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", schemeEndCell, line), percentage.T_approval_money)
 
 		} else if percentage.T_type == Percentage.ReportingType {
 			verifyType = "报告编写"
-			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", reportingEndCell, line), percentage.T_money)
+			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", reportingEndCell, line), percentage.T_approval_money)
 
 		}
 		f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), verifyType)
@@ -361,12 +367,14 @@ func (c *PercentageController) Percentage_User_Export() {
 	T_start_date := c.GetString("T_start_date") // 开始时间
 	T_end_date := c.GetString("T_end_date")     // 结束时间
 	T_state, _ := c.GetInt("T_state")
+	T_reporting_start_time := c.GetString("T_reporting_start_time") // 统计开始时间
+	T_reporting_end_time := c.GetString("T_reporting_end_time")     // 统计开始时间
 	userList, _ := NatsServer.Read_User_List_All()
 	Account.Read_User_All_Map(userList)
 	Percentage.Read_VerifyCompany_All_Map()
 	Basic.Read_VerifyItem_All_Map()
 	PercentageDao := Percentage.NewPercentage(orm.NewOrm())
-	percentageList, _ := PercentageDao.Read_Percentage_User_List_SQL(c.User.T_uuid, T_name, T_start_date, T_end_date, true, T_state, 0, 9999)
+	percentageList, _ := PercentageDao.Read_Percentage_User_List_SQL(c.User.T_uuid, T_name, T_start_date, T_end_date, T_reporting_start_time, T_reporting_end_time, true, T_state, 0, 9999)
 
 	dataInterval := fmt.Sprintf("%s - %s", T_start_date, T_end_date)
 	if dataInterval == " - " {
@@ -481,15 +489,15 @@ func (c *PercentageController) Percentage_User_Export() {
 		}
 		f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), deviceType)
 		verifyItem := Basic.Read_VerifyItem_Get(percentage.T_verify_item)
-		f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", verifyItem.T_cell, line), percentage.T_money)
+		f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", verifyItem.T_cell, line), percentage.T_approval_money)
 		var verifyType string
 		if percentage.T_type == Percentage.SchemeType {
 			verifyType = "验证实施"
-			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", schemeEndCell, line), verifyItem.T_price)
+			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", schemeEndCell, line), percentage.T_approval_money)
 
 		} else if percentage.T_type == Percentage.ReportingType {
 			verifyType = "报告编写"
-			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", reportingEndCell, line), percentage.T_money)
+			f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", reportingEndCell, line), percentage.T_approval_money)
 
 		}
 		f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), verifyType)

+ 1 - 1
controllers/Stock.go

@@ -2080,7 +2080,7 @@ func (c *StockController) StockOut_Add() {
 		_, err = StockDao.AddOrUpdate_Stock(T_depot_id, product.Id, product.T_class, product.T_name, product.T_model, num, 1)
 		if err != nil {
 			o.Rollback()
-			c.Data["json"] = lib.JSONS{Code: 203, Msg: "更新库存失败"}
+			c.Data["json"] = lib.JSONS{Code: 203, Msg: "更新库存失败" + err.Error()}
 			c.ServeJSON()
 			return
 		}

+ 117 - 18
controllers/Validation.go

@@ -90,7 +90,7 @@ func (c *ValidationController) AddValidation() {
 
 		//修改设备状态
 		validation.T_state = validationtool.ValidationToolStateStockIn
-		cols := []string{"t_state"}
+		cols := []string{"T_state"}
 		if len(tool.T_remark) != 0 {
 			validation.T_remark = tool.T_remark
 			cols = append(cols, "T_remark")
@@ -102,35 +102,34 @@ func (c *ValidationController) AddValidation() {
 			validation.Validationnumber = tool.Validationnumber
 			cols = append(cols, "validationnumber")
 		}
-		validation.LendUser = ""
-		cols = append(cols, "LendUser")
 
-		validation.T_project = ""
-		cols = append(cols, "T_project")
-		err = vali.UpdateValidationTool(validation, cols...)
+		_, err = valiRecord.ADD(validation, BatchNumber)
 		if err != nil {
 			o.Rollback() // 回滚事务
-			c.Data["json"] = lib.JSONS{Code: 1201, Msg: "入库失败!", Data: nil}
+			c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
 			c.ServeJSON()
 			return
 		}
 
-		_, err = valiRecord.ADD(validation, BatchNumber)
+		validation.LendUser = ""
+		cols = append(cols, "LendUser")
+
+		validation.T_project = ""
+		cols = append(cols, "T_project")
+		err = vali.UpdateValidationTool(validation, cols...)
 		if err != nil {
 			o.Rollback() // 回滚事务
-			c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
+			c.Data["json"] = lib.JSONS{Code: 1201, Msg: "入库失败!", Data: nil}
 			c.ServeJSON()
 			return
 		}
 
-		o.Commit() // 提交事务
-
-		c.Data["json"] = lib.JSONS{Code: 200, Msg: "入库成功!", Data: nil}
-		c.ServeJSON()
-		return
 	}
-
+	o.Commit() // 提交事务
 	NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "添加", ValidationList)
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "入库成功!", Data: nil}
+	c.ServeJSON()
+	return
 
 }
 
@@ -422,15 +421,14 @@ func (c *ValidationController) RepairValidationTool() {
 
 	}
 	err = o.Commit() // 提交事务
-
-	NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "维修", lendValidationList)
-
 	if err != nil {
 		o.Rollback() // 回滚事务
 		c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
 		c.ServeJSON()
 		return
 	}
+	NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "维修", lendValidationList)
+
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "提交成功!", Data: nil}
 	c.ServeJSON()
 	return
@@ -813,3 +811,104 @@ func (c *ValidationController) Operation_List() {
 	c.ServeJSON()
 	return
 }
+
+// 下载操作记录
+func (c *ValidationController) Operation_Excel() {
+
+	T_state := c.GetString("T_state")
+	T_sn := c.GetString("T_sn")
+	LendUser := c.GetString("LendUser")
+	T_project := c.GetString("T_project")
+	valiRecord := validationtool.NewValidationToolRecord(orm.NewOrm())
+
+	R_List, _ := valiRecord.Read_Operation_List(T_sn, T_state, LendUser, T_project, 0, 9999)
+
+	f := excelize.NewFile() //设置单元格值
+	// 这里设置表头ÒÒ
+
+	Style2, _ := f.NewStyle(
+		&excelize.Style{
+			Font:      &excelize.Font{Bold: true, Size: 12, Family: "宋体"},
+			Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
+			Border: []excelize.Border{
+				{Type: "left", Color: "000000", Style: 1},
+				{Type: "top", Color: "000000", Style: 1},
+				{Type: "bottom", Color: "000000", Style: 1},
+				{Type: "right", Color: "000000", Style: 1},
+			},
+		})
+	Style4, _ := f.NewStyle(
+		&excelize.Style{
+			Font:      &excelize.Font{Size: 10, Family: "宋体"},
+			Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
+			Border: []excelize.Border{
+				{Type: "left", Color: "000000", Style: 1},
+				{Type: "top", Color: "000000", Style: 1},
+				{Type: "bottom", Color: "000000", Style: 1},
+				{Type: "right", Color: "000000", Style: 1},
+			},
+		})
+	f.SetCellValue("Sheet1", "A1", "序号")
+	f.SetCellValue("Sheet1", "B1", "操作时间")
+	f.SetCellValue("Sheet1", "C1", "操作")
+	f.SetCellValue("Sheet1", "D1", "借出(归还)人")
+	f.SetCellValue("Sheet1", "E1", "关联项目")
+	f.SetCellValue("Sheet1", "F1", "备注")
+	f.SetCellValue("Sheet1", "G1", "SN")
+	// 这里设置表头
+	f.SetCellStyle("Sheet1", "A1", "G1", Style2)
+	f.SetRowHeight("Sheet1", 2, 20)
+
+	// 设置列宽
+	f.SetColWidth("Sheet1", "A", "A", 6)
+	f.SetColWidth("Sheet1", "B", "B", 20)
+	f.SetColWidth("Sheet1", "C", "C", 15)
+	f.SetColWidth("Sheet1", "D", "D", 15)
+	f.SetColWidth("Sheet1", "E", "E", 20)
+	f.SetColWidth("Sheet1", "F", "F", 20)
+	f.SetColWidth("Sheet1", "G", "G", 15)
+
+	line := 1
+	for i, v := range R_List {
+		line++
+		f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), i+1)
+		f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.BatchNumber)
+
+		var state string
+		switch v.T_state {
+		case 1:
+			state = "出库"
+		case 2:
+			state = "入库"
+		case 3:
+			state = "维修"
+		case 4:
+			state = "报废"
+		case 5:
+			state = "损坏"
+
+		}
+		f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), state)
+		f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.LendUser)
+		f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_project)
+		f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), v.T_remark)
+		f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), strings.Join(v.T_sn_List, "\r\n"))
+	}
+
+	f.SetCellStyle("Sheet1", "A2", fmt.Sprintf("G%d", line), Style4)
+
+	timeStr := time.Now().Format("20060102150405")
+	fileName := fmt.Sprintf("验证工具操作记录表%v.xlsx", timeStr)
+	filePath := "ofile/" + "验证工具操作记录表" + timeStr + ".xlsx"
+	// 保存文件
+	if err := f.SaveAs(filePath); err != nil {
+		logs.Error("保存文件失败:", err)
+	}
+	defer func() {
+		os.Remove(filePath)
+	}()
+	c.Ctx.Output.Header("Content-Type", "application/vnd.ms-excel;charset=utf8")
+	c.Ctx.Output.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fileName))
+	c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
+	c.Ctx.Output.Download(filePath, fileName)
+}

+ 26 - 11
models/Contract/Contract.go

@@ -430,7 +430,7 @@ func (dao *ContractDaoImpl) Read_VerifyContract_List(T_name, T_customer_id strin
 	return r_, cnt
 }
 
-func (dao *ContractDaoImpl) Read_Contract_List_For_RecoveriesAndInvoice(T_uuid string, T_mine int, T_name, T_start_date, T_end_date string, T_recoveries_state, T_invoice_state, T_percentage_state, page, page_z int) (r_ []Contract_R, cnt int64) {
+func (dao *ContractDaoImpl) Read_Contract_List_For_RecoveriesAndInvoice(T_uuid, T_submit string, T_mine int, T_name, T_start_date, T_end_date string, T_recoveries_state, T_invoice_state, T_percentage_state, page, page_z int) (r_ []Contract_R, cnt int64) {
 	// 也可以直接使用 Model 结构体作为表名
 	qs := dao.orm.QueryTable(new(Contract))
 	var offset int64
@@ -442,27 +442,30 @@ func (dao *ContractDaoImpl) Read_Contract_List_For_RecoveriesAndInvoice(T_uuid s
 
 	// 过滤
 	cond := orm2.NewCondition()
-	cond = cond.And("T_State", 1)
+	cond1 := cond.And("T_State", 1)
 	if T_mine == 1 {
-		cond = cond.And("T_submit", T_uuid)
+		cond1 = cond1.And("T_submit", T_uuid)
+	}
+	if len(T_submit) > 0 {
+		cond1 = cond1.And("T_submit", T_submit)
 	}
 	// 回款状态 1 未回款 2 部分回款 3 全部回款
 	// 开票状态 1 未开票 2 部分开票 3 全部开票
 	if len(T_name) > 0 {
-		cond = cond.AndCond(cond.Or("T_number__icontains", T_name).Or("T_customer__icontains", T_name))
+		cond1 = cond1.AndCond(cond.Or("T_number__icontains", T_name).Or("T_customer__icontains", T_name))
 	}
 	if len(T_start_date) > 0 {
-		cond = cond.And("T_recoveries_time__gte", T_start_date)
+		cond1 = cond1.And("T_recoveries_time__gte", T_start_date)
 	}
 	if len(T_end_date) > 0 {
-		cond = cond.And("T_recoveries_time__lte", T_end_date)
+		cond1 = cond1.And("T_recoveries_time__lte", T_end_date)
 	}
 
 	if T_percentage_state > 0 {
-		cond = cond.And("T_percentage_state", T_percentage_state)
+		cond1 = cond1.And("T_percentage_state", T_percentage_state)
 
 	}
-	qs = qs.SetCond(cond)
+	qs = qs.SetCond(cond1)
 
 	if T_recoveries_state == 1 {
 		qs = qs.FilterRaw("t_recoveries_money", " = 0")
@@ -484,14 +487,14 @@ func (dao *ContractDaoImpl) Read_Contract_List_For_RecoveriesAndInvoice(T_uuid s
 		qs = qs.FilterRaw("t_invoice_money", " = t_discount")
 	}
 
-	cond = qs.GetCond()
+	cond1 = qs.GetCond()
 	// 查询
 	var r []Contract
 	var err error
 	if page_z == 9999 {
-		_, err = qs.SetCond(cond).OrderBy("-Id").All(&r)
+		_, err = qs.SetCond(cond1).OrderBy("-Id").All(&r)
 	} else {
-		_, err = qs.Limit(page_z, offset).SetCond(cond).OrderBy("-Id").All(&r)
+		_, err = qs.Limit(page_z, offset).SetCond(cond1).OrderBy("-Id").All(&r)
 
 	}
 
@@ -698,3 +701,15 @@ func Read_Contract_Get(T_number string) Contract {
 	}
 	return Contract{}
 }
+
+func (dao *ContractDaoImpl) Read_T_submit_List() (lists []string) {
+
+	o := orm.NewOrm()
+	sql := "SELECT DISTINCT t_submit FROM contract WHERE t__state = 1 LIMIT 0,1000"
+	_, err := o.Raw(sql).QueryRows(&lists)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return
+	}
+	return lists
+}

+ 15 - 2
models/Percentage/Percentage.go

@@ -263,6 +263,7 @@ func PercentageToPercentage_Detail(t Percentage) (r Percentage_Detail) {
 
 // 添加
 func (dao *PercentageDaoImpl) Add_Percentage(r Percentage) (id int64, err error) {
+	r.T_approval_money = r.T_money
 	id, err = dao.orm.Insert(&r)
 	if err != nil {
 		logs.Error(lib.FuncName(), err)
@@ -367,7 +368,7 @@ func (dao *PercentageDaoImpl) Read_Percentage_List(T_name, T_uuid, T_start_date,
 
 	return r_, cnt
 }
-func (dao *PercentageDaoImpl) Read_Percentage_List_SQL(T_name, T_uuid, T_start_date, T_end_date string, T_export bool, T_state, T_type, page, page_z int) (r_ []Percentage_R, cnt int64) {
+func (dao *PercentageDaoImpl) Read_Percentage_List_SQL(T_name, T_uuid, T_start_date, T_end_date, T_reporting_start_time, T_reporting_end_time string, T_export bool, T_state, T_type, page, page_z int) (r_ []Percentage_R, cnt int64) {
 	// 也可以直接使用 Model 结构体作为表名
 	var offset int
 	if page <= 1 {
@@ -400,6 +401,12 @@ func (dao *PercentageDaoImpl) Read_Percentage_List_SQL(T_name, T_uuid, T_start_d
 	if len(T_end_date) > 0 {
 		sqlWhere += " AND vc.t_recoveries_time <= \"" + T_end_date + "\""
 	}
+	if len(T_reporting_start_time) > 0 {
+		sqlWhere += " AND p.t_reporting_pass_time >= \"" + T_reporting_start_time + "\""
+	}
+	if len(T_reporting_end_time) > 0 {
+		sqlWhere += " AND p.t_reporting_pass_time <= \"" + T_reporting_end_time + "\""
+	}
 
 	// 获取总条数
 	sql := "SELECT COUNT(p.ID) FROM percentage p " +
@@ -437,7 +444,7 @@ func (dao *PercentageDaoImpl) Read_Percentage_List_SQL(T_name, T_uuid, T_start_d
 	count, _ := strconv.Atoi(maps_z[0][0].(string))
 	return r_, int64(count)
 }
-func (dao *PercentageDaoImpl) Read_Percentage_User_List_SQL(T_uuid, T_name, T_start_date, T_end_date string, T_export bool, T_state, page, page_z int) (r_ []Percentage_R, cnt int64) {
+func (dao *PercentageDaoImpl) Read_Percentage_User_List_SQL(T_uuid, T_name, T_start_date, T_end_date, T_reporting_start_time, T_reporting_end_time string, T_export bool, T_state, page, page_z int) (r_ []Percentage_R, cnt int64) {
 	// 也可以直接使用 Model 结构体作为表名
 	var offset int
 	if page <= 1 {
@@ -464,6 +471,12 @@ func (dao *PercentageDaoImpl) Read_Percentage_User_List_SQL(T_uuid, T_name, T_st
 	if len(T_end_date) > 0 {
 		sqlWhere += " AND vc.t_recoveries_time <= \"" + T_end_date + "\""
 	}
+	if len(T_reporting_start_time) > 0 {
+		sqlWhere += " AND p.t_reporting_pass_time >= \"" + T_reporting_start_time + "\""
+	}
+	if len(T_reporting_end_time) > 0 {
+		sqlWhere += " AND p.t_reporting_pass_time <= \"" + T_reporting_end_time + "\""
+	}
 
 	// 获取总条数
 	sql := "SELECT COUNT(p.ID) FROM percentage p " +

+ 3 - 1
models/Stock/Device.go

@@ -118,7 +118,9 @@ func (dao *DeviceDaoImpl) Add_Device(r Device) (id int64, err error) {
 
 // T_type 1-出库 2-入库
 func (dao *DeviceDaoImpl) AddOrUpdate_Device(r Device, T_type int) (id int64, err error) {
-
+	now := time.Now().Format("15:04:05")
+	date, _ := lib.TimeStrToTime(r.CreateTime.Format("2006-01-02") + " " + now)
+	r.CreateTime = date
 	id, err = dao.orm.Insert(&r)
 	if err != nil {
 		logs.Error(lib.FuncName(), err)

+ 1 - 1
models/Stock/Stock.go

@@ -147,7 +147,7 @@ func (dao *StockDaoImpl) AddOrUpdate_Stock(T_depot_id, T_product_id, T_product_c
 
 	_, err = dao.orm.Update(&stock, "T_total", "T_reality")
 	if err != nil {
-		err = errors.New(fmt.Sprintf("修改库存失败", T_product_name, T_product_model))
+		err = errors.New(fmt.Sprintf("修改库存失败%s,%s", T_product_name, T_product_model))
 		logs.Error(lib.FuncName(), err)
 		return
 	}

+ 3 - 2
models/validationtool/validationHistory.go

@@ -270,8 +270,9 @@ func (dao *ValidationToolRecordImpl) Read_Operation_List(T_sn, T_State, LendUser
 	sql = sql + sqlWhere
 
 	sql += " GROUP BY batch_number ORDER BY batch_number DESC"
-
-	sql += " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
+	if page_z != 9999 {
+		sql += " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
+	}
 
 	fmt.Println(sql)
 	var maps []ValidationToolHistory

+ 1 - 0
routers/Contract.go

@@ -32,6 +32,7 @@ func init() {
 	)
 	recoveriesContract := beego.NewNamespace("/RecoveriesContract",
 		beego.NSRouter("/List", &controllers.ContractController{}, "*:Contract_List_RecoveriesMoney"),          // 回款明细列表
+		beego.NSRouter("/User/List", &controllers.ContractController{}, "*:User_List"),                         // 回款明细列表
 		beego.NSRouter("/Export", &controllers.ContractController{}, "*:Contract_List_RecoveriesMoney_Export"), // 回款明细列表
 	)
 	beego.AddNamespace(contract, verifyContract, recoveriesContract)

+ 1 - 0
routers/vaildationTool.go

@@ -23,6 +23,7 @@ func init() {
 		beego.NSRouter("/user/list", &controllers.ValidationController{}, "*:User_List"),                       // 读取文件
 		beego.NSRouter("/recordList", &controllers.ValidationController{}, "*:Record_List"),                    // 读取文件
 		beego.NSRouter("/operationList", &controllers.ValidationController{}, "*:Operation_List"),              // 操作记录列表
+		beego.NSRouter("/exportOperationExcel", &controllers.ValidationController{}, "*:Operation_Excel"),      // 操作记录列表
 	)
 	beego.AddNamespace(validationTool)
 }