3
2
Эх сурвалжийг харах

苯模板修改,seesion加入

huahaiyan 7 жил өмнө
parent
commit
46be9da62b

+ 59 - 20
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertor.go

@@ -5,25 +5,64 @@ import (
 )
 
 type LimsReportAlertor struct {
-	Id               int       `xorm:"not null pk autoincr INT(10)"`
-	Eid              int       `xorm:"comment('委托单ID') INT(10)"`
-	TaskbalanceId    int       `xorm:"comment('任务分配表ID') INT(10)"`
-	DataentryId      int       `xorm:"comment('数据记录表ID') INT(10)"`
-	MeterRange       string    `xorm:"comment('量程(*10-6mol/mol)') VARCHAR(255)"`
-	MeasurementRange string    `xorm:"comment('测量范围(*10-6mol/mol)') VARCHAR(255)"`
-	DetectBasis      string    `xorm:"comment('检测依据') VARCHAR(500)"`
-	FaceCheck        string    `xorm:"comment('外观及结构') VARCHAR(50)"`
-	FlagCheck        string    `xorm:"comment('标志标识') VARCHAR(50)"`
-	ElectrifyCheck   string    `xorm:"comment('通电检查') VARCHAR(50)"`
-	Insulation        string    `xorm:"comment('绝缘电阻') VARCHAR(50)"`
-	RelativeHumanity  string    `xorm:"comment('相对湿度') VARCHAR(50)"`
-	ManuCompany      string    `xorm:"comment('制造单位') VARCHAR(255)"`
+	Id                 int       `xorm:"<- not null pk autoincr INT(10)"`
+	EId                int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId      int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId        int       `xorm:"comment('数据记录表ID') INT(10)"`
+	MeterRange         string    `xorm:"comment('量程(*10-6mol/mol)') VARCHAR(255)"`
+	MeasurementRange   string    `xorm:"comment('测量范围(*10-6mol/mol)') VARCHAR(255)"`
+	FaceCheck          string    `xorm:"comment('外观及结构') VARCHAR(50)"`
+	FlagCheck          string    `xorm:"comment('标志标识') VARCHAR(50)"`
+	ElectrifyCheck     string    `xorm:"comment('通电检查') VARCHAR(50)"`
+	Insulation         string    `xorm:"comment('绝缘电阻') VARCHAR(50)"`
+	RelativeHumanity   string    `xorm:"comment('相对湿度') VARCHAR(50)"`
+	ManuCompany        string    `xorm:"comment('制造单位') VARCHAR(255)"`
+	Spec               string    `xorm:"comment('仪器型号') VARCHAR(255)"`
+	FactoryNum         string    `xorm:"comment('出厂编号') VARCHAR(255)"`
+	AudibleAlarm       string    `xorm:"comment('声光报警') VARCHAR(255)"`
+	AlarmConcentration string    `xorm:"comment('报警浓度值') VARCHAR(255)"`
+	InstrumentLevel    string    `xorm:"comment('仪器等级') VARCHAR(255)"`
+	DielecStrength     string    `xorm:"comment('绝缘强度') VARCHAR(255)"`
+	Remark             string    `xorm:"comment('备注') VARCHAR(255)"`
+	CreateUserId       int       `xorm:"INT(11)"`
+	CreateOn           time.Time `xorm:"DATETIME"`
+	CreateBy           string    `xorm:"VARCHAR(50)"`
+	ModifiedOn         time.Time `xorm:"DATETIME"`
+	ModifiedUserId     int       `xorm:"INT(11)"`
+	ModifiedBy         string    `xorm:"VARCHAR(50)"`
+}
 
-	Remark           string    `xorm:"comment('备注') VARCHAR(255)"`
-	CreateUserId     int       `xorm:"INT(11)"`
-	CreateOn         time.Time `xorm:"DATETIME"`
-	CreateBy         string    `xorm:"VARCHAR(50)"`
-	ModifiedOn       time.Time `xorm:"DATETIME"`
-	ModifiedUserId   int       `xorm:"INT(11)"`
-	ModifiedBy       string    `xorm:"VARCHAR(50)"`
+type LimsAlertorMainModel struct {
+	Id                 int
+	EId                int
+	TaskBalanceId      int
+	DataEntryId        int
+	MeterRange         string
+	MeasurementRange   string
+	FaceCheck          string
+	FlagCheck          string
+	ElectrifyCheck     string
+	Insulation         string
+	CustomerName       string
+	TestDepart         string
+	PositionCheck      string
+	Instrument1        string
+	Temperature        string
+	StandardDesc       string
+	StanDevice         string
+	DetectBasis        string
+	DataEntryCode      string
+	TestDepartId       int
+	PositionCheckId    int
+	CustomerId         int
+	RelativeHumanity   string
+	ManuCompany        string
+	Spec               string
+	FactoryNum         string
+	AudibleAlarm       string
+	AlarmConcentration string
+	InstrumentLevel    string
+	DielecStrength     string
+	CheckDate          time.Time
+	Remark             string
 }

+ 15 - 14
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertorcertificate.go

@@ -6,20 +6,21 @@ import (
 
 type LimsReportAlertorCertificate struct {
 	Id               int       `xorm:"not null pk autoincr INT(10)"`
-	Eid              int       `xorm:"comment('委托单ID') INT(10)"`
-	Taskbalanceid    int       `xorm:"comment('任务分配表ID') INT(10)"`
-	Dataentryid      int       `xorm:"comment('数据记录表ID') INT(10)"`
-	Instrumentno     string    `xorm:"comment('对应的设备编号') VARCHAR(255)"`
-	Meterrange       string    `xorm:"comment('证书编号') VARCHAR(255)"`
-	Standardunit     string    `xorm:"comment('标准值单位 (*10-6mol/mol) / %') VARCHAR(255)"`
-	Measurementrange string    `xorm:"comment('标准值') VARCHAR(255)"`
+	EId              int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId    int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId      int       `xorm:"comment('数据记录表ID') INT(10)"`
+	InstrumentNo     string    `xorm:"comment('对应的设备编号') VARCHAR(255)"`
+	StanDevice       string    `xorm:"comment('标准器名称') VARCHAR(255)"`
+	CerNum           string    `xorm:"comment('证书编号') VARCHAR(255)"`
+	StandardUnit     string    `xorm:"comment('标准值单位 (*10-6mol/mol) / %') VARCHAR(255)"`
+	StandVal         string    `xorm:"comment('标准值') VARCHAR(255)"`
 	Uncertainty      string    `xorm:"comment('不确定度') VARCHAR(255)"`
-	Effectdate       time.Time `xorm:"comment('有效期') DATETIME"`
+	EffectDate       time.Time `xorm:"comment('有效期') DATETIME"`
 	Remark           string    `xorm:"comment('备注') VARCHAR(255)"`
-	Createuserid     int       `xorm:"INT(11)"`
-	Createon         time.Time `xorm:"DATETIME"`
-	Createby         string    `xorm:"VARCHAR(50)"`
-	Modifiedon       time.Time `xorm:"DATETIME"`
-	Modifieduserid   int       `xorm:"INT(11)"`
-	Modifiedby       string    `xorm:"VARCHAR(50)"`
+	CreateUserId     int       `xorm:"INT(11)"`
+	CreateOn         time.Time `xorm:"DATETIME"`
+	CreateBy         string    `xorm:"VARCHAR(50)"`
+	ModifiedOn       time.Time `xorm:"DATETIME"`
+	ModifiedUserId   int       `xorm:"INT(11)"`
+	ModifiedBy       string    `xorm:"VARCHAR(50)"`
 }

+ 18 - 18
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertordeviation.go

@@ -5,23 +5,23 @@ import (
 )
 
 type LimsReportAlertorDeviation struct {
-	Id                int       `xorm:"not null pk autoincr INT(10)"`
-	Eid               int       `xorm:"comment('委托单ID') INT(10)"`
-	Taskbalanceid     int       `xorm:"comment('任务分配表ID') INT(10)"`
-	Dataentryid       int       `xorm:"comment('数据记录表ID') INT(10)"`
-	Gasvalue          string    `xorm:"comment('标准气体浓度值') DECIMAL(10,2)"`
-	Value1            string    `xorm:"comment('实测报警值1') DECIMAL(10,2)"`
-	Value2            string    `xorm:"comment('实测报警值2') DECIMAL(10,2)"`
-	Value3            string    `xorm:"comment('实测报警值3') DECIMAL(10,2)"`
-	Avgvalue          string    `xorm:"comment('平均值') DECIMAL(10,2)"`
-	Deviation         string    `xorm:"comment('示值误差') DECIMAL(10,2)"`
-	Deviationabs      string    `xorm:"comment('相对误差') DECIMAL(10,2)"`
-	Deviationrelative string    `xorm:"comment('绝对误差') DECIMAL(10,2)"`
+	Id                int       `xorm:"<- not null pk autoincr INT(10)"`
+	EId               int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId     int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId       int       `xorm:"comment('数据记录表ID') INT(10)"`
+	GasValue          float64   `xorm:"comment('标准气体浓度值') DECIMAL(10,2)"`
+	Value1            float64   `xorm:"comment('实测报警值1') DECIMAL(10,2)"`
+	Value2            float64   `xorm:"comment('实测报警值2') DECIMAL(10,2)"`
+	Value3            float64   `xorm:"comment('实测报警值3') DECIMAL(10,2)"`
+	AvgValue          float64   `xorm:"comment('平均值') DECIMAL(10,2)"`
+	Deviation         float64   `xorm:"comment('示值误差') DECIMAL(10,2)"`
+	DeviationAbs      float64   `xorm:"comment('相对误差') DECIMAL(10,2)"`
+	DeviationRelative float64   `xorm:"comment('绝对误差') DECIMAL(10,2)"`
 	Remark            string    `xorm:"comment('备注') VARCHAR(255)"`
-	Createuserid      int       `xorm:"INT(11)"`
-	Createon          time.Time `xorm:"DATETIME"`
-	Createby          string    `xorm:"VARCHAR(50)"`
-	Modifiedon        time.Time `xorm:"DATETIME"`
-	Modifieduserid    int       `xorm:"INT(11)"`
-	Modifiedby        string    `xorm:"VARCHAR(50)"`
+	CreateUserId      int       `xorm:"INT(11)"`
+	CreateOn          time.Time `xorm:"DATETIME"`
+	CreateBy          string    `xorm:"VARCHAR(50)"`
+	ModifiedOn        time.Time `xorm:"DATETIME"`
+	ModifiedUserId    int       `xorm:"INT(11)"`
+	ModifiedBy        string    `xorm:"VARCHAR(50)"`
 }

+ 19 - 19
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertorrepeat.go

@@ -3,24 +3,24 @@ package limsreportalertor
 import "time"
 
 type LimsReportAlertorRepeat struct {
-	Id             int       `xorm:"not null pk autoincr INT(10)"`
-	Eid            int       `xorm:"comment('委托单ID') INT(10)"`
-	Taskbalanceid  int       `xorm:"comment('任务分配表ID') INT(10)"`
-	Dataentryid    int       `xorm:"comment('数据记录表ID') INT(10)"`
-	Gasvalue       string    `xorm:"comment('标准气体浓度值') DECIMAL(10,2)"`
-	Value1         string    `xorm:"comment('仪器示值1') DECIMAL(10,2)"`
-	Value2         string    `xorm:"comment('仪器示值2') DECIMAL(10,2)"`
-	Value3         string    `xorm:"comment('仪器示值3') DECIMAL(10,2)"`
-	Value4         string    `xorm:"comment('仪器示值4') DECIMAL(10,2)"`
-	Value5         string    `xorm:"comment('仪器示值5') DECIMAL(10,2)"`
-	Value6         string    `xorm:"comment('仪器示值6') DECIMAL(10,2)"`
-	Avgvalue       string    `xorm:"comment('平均值') DECIMAL(10,2)"`
-	Repeatvalue    string    `xorm:"comment('重复性') DECIMAL(10,2)"`
+	Id             int       `xorm:"<- not null pk autoincr INT(10)"`
+	EId            int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId  int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId    int       `xorm:"comment('数据记录表ID') INT(10)"`
+	GasValue       float64   `xorm:"comment('标准气体浓度值') DECIMAL(10,2)"`
+	Value1         float64   `xorm:"comment('仪器示值1') DECIMAL(10,2)"`
+	Value2         float64   `xorm:"comment('仪器示值2') DECIMAL(10,2)"`
+	Value3         float64   `xorm:"comment('仪器示值3') DECIMAL(10,2)"`
+	Value4         float64   `xorm:"comment('仪器示值4') DECIMAL(10,2)"`
+	Value5         float64   `xorm:"comment('仪器示值5') DECIMAL(10,2)"`
+	Value6         float64   `xorm:"comment('仪器示值6') DECIMAL(10,2)"`
+	AvgValue       float64   `xorm:"comment('平均值') DECIMAL(10,2)"`
+	RepeatValue    float64   `xorm:"comment('重复性') DECIMAL(10,2)"`
 	Remark         string    `xorm:"comment('备注') VARCHAR(255)"`
-	Createuserid   int       `xorm:"INT(11)"`
-	Createon       time.Time `xorm:"DATETIME"`
-	Createby       string    `xorm:"VARCHAR(50)"`
-	Modifiedon     time.Time `xorm:"DATETIME"`
-	Modifieduserid int       `xorm:"INT(11)"`
-	Modifiedby     string    `xorm:"VARCHAR(50)"`
+	CreateUserId   int       `xorm:"INT(11)"`
+	CreateOn       time.Time `xorm:"DATETIME"`
+	CreateBy       string    `xorm:"VARCHAR(50)"`
+	ModifiedOn     time.Time `xorm:"DATETIME"`
+	ModifiedUserId int       `xorm:"INT(11)"`
+	ModifiedBy     string    `xorm:"VARCHAR(50)"`
 }

+ 15 - 15
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertorresponsetime.go

@@ -5,20 +5,20 @@ import (
 )
 
 type LimsReportAlertorResponseTime struct {
-	Id             int       `xorm:"not null pk autoincr INT(10)"`
-	Eid            int       `xorm:"comment('委托单ID') INT(10)"`
-	Taskbalanceid  int       `xorm:"comment('任务分配表ID') INT(10)"`
-	Dataentryid    int       `xorm:"comment('数据记录表ID') INT(10)"`
-	Gasvalue       string    `xorm:"comment('标准气体浓度值') DECIMAL(10,2)"`
-	Value1         string    `xorm:"comment('时间值1') DECIMAL(10,2)"`
-	Value2         string    `xorm:"comment('时间值2') DECIMAL(10,2)"`
-	Value3         string    `xorm:"comment('时间值3') DECIMAL(10,2)"`
-	Deviation      string    `xorm:"comment('响应时间') DECIMAL(10,2)"`
+	Id             int       `xorm:"<- not null pk autoincr INT(10)"`
+	EId            int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId  int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId    int       `xorm:"comment('数据记录表ID') INT(10)"`
+	GasValue       float64   `xorm:"comment('标准气体浓度值') DECIMAL(10,2)"`
+	Value1         float64   `xorm:"comment('时间值1') DECIMAL(10,2)"`
+	Value2         float64   `xorm:"comment('时间值2') DECIMAL(10,2)"`
+	Value3         float64   `xorm:"comment('时间值3') DECIMAL(10,2)"`
+	Deviation      float64   `xorm:"comment('响应时间') DECIMAL(10,2)"`
 	Remark         string    `xorm:"comment('备注') VARCHAR(255)"`
-	Createuserid   int       `xorm:"INT(11)"`
-	Createon       time.Time `xorm:"DATETIME"`
-	Createby       string    `xorm:"VARCHAR(50)"`
-	Modifiedon     time.Time `xorm:"DATETIME"`
-	Modifieduserid int       `xorm:"INT(11)"`
-	Modifiedby     string    `xorm:"VARCHAR(50)"`
+	CreateUserId   int       `xorm:"INT(11)"`
+	CreateOn       time.Time `xorm:"DATETIME"`
+	CreateBy       string    `xorm:"VARCHAR(50)"`
+	ModifiedOn     time.Time `xorm:"DATETIME"`
+	ModifiedUserId int       `xorm:"INT(11)"`
+	ModifiedBy     string    `xorm:"VARCHAR(50)"`
 }

+ 20 - 20
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertorshift.go

@@ -5,25 +5,25 @@ import (
 )
 
 type LimsReportAlertorShift struct {
-	Id             int       `xorm:"not null pk autoincr INT(10)"`
-	Eid            int       `xorm:"comment('委托单ID') INT(10)"`
-	Taskbalanceid  int       `xorm:"comment('任务分配表ID') INT(10)"`
-	Dataentryid    int       `xorm:"comment('数据记录表ID') INT(10)"`
-	Valuetype      string    `xorm:"comment('0 零点/ 1 示值') VARCHAR(50)"`
-	Value0         string    `xorm:"comment('值0') DECIMAL(10,2)"`
-	Value1         string    `xorm:"comment('值1') DECIMAL(10,2)"`
-	Value2         string    `xorm:"comment('值2') DECIMAL(10,2)"`
-	Value3         string    `xorm:"comment('值3') DECIMAL(10,2)"`
-	Value4         string    `xorm:"comment('值4') DECIMAL(10,2)"`
-	Value5         string    `xorm:"comment('值5') DECIMAL(10,2)"`
-	Value6         string    `xorm:"comment('值6') DECIMAL(10,2)"`
-	Zerovalue      string    `xorm:"comment('零点漂移(%FS)') DECIMAL(10,2)"`
-	Showvalue      string    `xorm:"comment('示值漂移(%FS)') DECIMAL(10,2)"`
+	Id             int       `xorm:"<- not null pk autoincr INT(10)"`
+	EId            int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId  int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId    int       `xorm:"comment('数据记录表ID') INT(10)"`
+	ValueType      string    `xorm:"comment('0 零点/ 1 示值') VARCHAR(50)"`
+	Value0         float64   `xorm:"comment('值0') DECIMAL(10,2)"`
+	Value1         float64   `xorm:"comment('值1') DECIMAL(10,2)"`
+	Value2         float64   `xorm:"comment('值2') DECIMAL(10,2)"`
+	Value3         float64   `xorm:"comment('值3') DECIMAL(10,2)"`
+	Value4         float64   `xorm:"comment('值4') DECIMAL(10,2)"`
+	Value5         float64   `xorm:"comment('值5') DECIMAL(10,2)"`
+	Value6         float64   `xorm:"comment('值6') DECIMAL(10,2)"`
+	ZeroValue      float64   `xorm:"comment('零点漂移(%FS)') DECIMAL(10,2)"`
+	ShowValue      float64   `xorm:"comment('示值漂移(%FS)') DECIMAL(10,2)"`
 	Remark         string    `xorm:"comment('备注') VARCHAR(255)"`
-	Createuserid   int       `xorm:"INT(11)"`
-	Createon       time.Time `xorm:"DATETIME"`
-	Createby       string    `xorm:"VARCHAR(50)"`
-	Modifiedon     time.Time `xorm:"DATETIME"`
-	Modifieduserid int       `xorm:"INT(11)"`
-	Modifiedby     string    `xorm:"VARCHAR(50)"`
+	CreateUserId   int       `xorm:"INT(11)"`
+	CreateOn       time.Time `xorm:"DATETIME"`
+	CreateBy       string    `xorm:"VARCHAR(50)"`
+	ModifiedOn     time.Time `xorm:"DATETIME"`
+	ModifiedUserId int       `xorm:"INT(11)"`
+	ModifiedBy     string    `xorm:"VARCHAR(50)"`
 }

+ 18 - 18
src/dashoo.cn/backend/api/business/Limsreportalertor/limsreportalertorvalue.go

@@ -5,23 +5,23 @@ import (
 )
 
 type LimsReportAlertorValue struct {
-	Id             int       `xorm:"not null pk autoincr INT(10)"`
-	Eid            int       `xorm:"comment('委托单ID') INT(10)"`
-	Taskbalanceid  int       `xorm:"comment('任务分配表ID') INT(10)"`
-	Dataentryid    int       `xorm:"comment('数据记录表ID') INT(10)"`
-	Alertfunction  string    `xorm:"comment('报警功能') VARCHAR(255)"`
-	Surevalue      string    `xorm:"default 0.00 comment('仪器设定报警点(*10-6mol/mol)') DECIMAL(10,2)"`
-	Value1         string    `xorm:"default 0.00 comment('实测报警值1') DECIMAL(10,2)"`
-	Value2         string    `xorm:"default 0.00 comment('实测报警值2') DECIMAL(10,2)"`
-	Value3         string    `xorm:"default 0.00 comment('实测报警值3') DECIMAL(10,2)"`
-	Maxvalue       string    `xorm:"default 0.00 comment('报警浓度最大值(*10-6mol/mol)') DECIMAL(10,2)"`
-	Allowvalue     string    `xorm:"default 0.00 comment('报警浓度最大值(*10-6mol/mol)') DECIMAL(10,2)"`
-	Actionvalue    string    `xorm:"default 0.00 comment('报警动作值') DECIMAL(10,2)"`
+	Id             int       `xorm:"<- not null pk autoincr INT(10)"`
+	EId            int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId  int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId    int       `xorm:"comment('数据记录表ID') INT(10)"`
+	AlertFunction  string    `xorm:"comment('报警功能') VARCHAR(255)"`
+	SureValue      float64   `xorm:"default 0.00 comment('仪器设定报警点(*10-6mol/mol)') DECIMAL(10,2)"`
+	Value1         float64   `xorm:"default 0.00 comment('实测报警值1') DECIMAL(10,2)"`
+	Value2         float64   `xorm:"default 0.00 comment('实测报警值2') DECIMAL(10,2)"`
+	Value3         float64   `xorm:"default 0.00 comment('实测报警值3') DECIMAL(10,2)"`
+	Maxvalue       float64   `xorm:"default 0.00 comment('报警浓度最大值(*10-6mol/mol)') DECIMAL(10,2)"`
+	AllowValue     float64   `xorm:"default 0.00 comment('报警浓度最大值(*10-6mol/mol)') DECIMAL(10,2)"`
+	ActionValue    float64   `xorm:"default 0.00 comment('报警动作值') DECIMAL(10,2)"`
 	Remark         string    `xorm:"comment('备注') VARCHAR(255)"`
-	Createuserid   int       `xorm:"INT(11)"`
-	Createon       time.Time `xorm:"DATETIME"`
-	Createby       string    `xorm:"VARCHAR(50)"`
-	Modifiedon     time.Time `xorm:"DATETIME"`
-	Modifieduserid int       `xorm:"INT(11)"`
-	Modifiedby     string    `xorm:"VARCHAR(50)"`
+	CreateUserId   int       `xorm:"INT(11)"`
+	CreateOn       time.Time `xorm:"DATETIME"`
+	CreateBy       string    `xorm:"VARCHAR(50)"`
+	ModifiedOn     time.Time `xorm:"DATETIME"`
+	ModifiedUserId int       `xorm:"INT(11)"`
+	ModifiedBy     string    `xorm:"VARCHAR(50)"`
 }

+ 4 - 3
src/dashoo.cn/backend/api/business/limsreportben/limsreportben.go

@@ -6,9 +6,9 @@ import (
 
 type LimsReportBenModel struct {
 	Id                 int       `xorm:"not null pk autoincr INT(10)"`
-	Eid                int       `xorm:"comment('委托单ID') INT(10)"`
-	TaskbalanceId      int       `xorm:"comment('任务分配表ID') INT(10)"`
-	DataentryId        int       `xorm:"comment('数据记录表ID') INT(10)"`
+	EId                int       `xorm:"comment('委托单ID') INT(10)"`
+	TaskBalanceId      int       `xorm:"comment('任务分配表ID') INT(10)"`
+	DataEntryId        int       `xorm:"comment('数据记录表ID') INT(10)"`
 	MeterRange         string    `xorm:"comment('量程(*10-6mol/mol)') VARCHAR(255)"`
 	MeasurementRange   string    `xorm:"comment('测量范围(*10-6mol/mol)') VARCHAR(255)"`
 	DetectBasis        string    `xorm:"comment('检测依据') VARCHAR(500)"`
@@ -44,3 +44,4 @@ type LimsReportBenModel struct {
 	ModifiedUserId     int       `xorm:"INT(11)"`
 	ModifiedBy         string    `xorm:"VARCHAR(50)"`
 }
+

+ 70 - 0
src/dashoo.cn/backend/api/business/limsreportben/limsreportbenSessionService.go

@@ -0,0 +1,70 @@
+package limsreportben
+
+import (
+	"dashoo.cn/backend/api/business/limsreportalertor"
+	"fmt"
+	"strconv"
+
+	. "dashoo.cn/backend/api/mydb"
+	. "dashoo.cn/utils/db"
+	"dashoo.cn/utils"
+	"github.com/go-xorm/xorm"
+)
+
+type LimsReportBenSessionService struct {
+	MySessionBase
+}
+
+func GetLimsReportBenSessionService(xormEngine *xorm.Session) *LimsReportBenSessionService {
+	s := new(LimsReportBenSessionService)
+	s.Session = xormEngine
+	return s
+}
+
+//获取ben信息
+func (s *LimsReportBenSessionService) GetAllPagingEntitiesWithOrderBytbl(tblbalance string, tblentry string, pageIndex, itemsPerPage int64, order, where string) (int64, []LimsReportBenModel) {
+	var err error
+	var total int64
+	if order != "" {
+		order = " order by " + order
+	}
+	//获取总记录数
+	if where == "" {
+		where = "1=1"
+	}
+	sqlCount := " select count(*) from " + tblentry + " a  left join " + tblbalance + " b on a.DocId = b.DataDocId where " + where
+	var sql string
+	sql = ` select a.Id,a.DocKey,a.DocAddress,a.CheckStatus,a.DocId,a.DocType,b.* from 
+	` + tblentry + ` a left join ` + tblbalance + ` b on a.DocId = b.DataDocId where ` + where + order + `
+		 limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage) + ""
+	fmt.Println(sql)
+	List := make([]LimsReportBenModel, 0)
+	utils.DBE.Sql(sql).Find(&List)
+	resultsSlice, err := s.Session.Query(sqlCount)
+	LogError(err)
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			LogError(err)
+			break
+		}
+	}
+	return total, List
+}
+
+
+//获取信息
+func (s *LimsReportBenSessionService) GetEntityByOrderbyWhereMain(tbldataentry, tblalertor, order, dataentryid string) (entity limsreportalertor.LimsAlertorMainModel) {
+	if order != "" {
+		order = " order by " + order
+	}
+	where := "a.Id = "+dataentryid
+	var sql string
+	sql = ` select a.*,b.* from 
+	` + tbldataentry + ` a left join ` + tblalertor + ` b on a.Id = b.DataEntryId where ` + where + order
+	fmt.Println(sql)
+	s.Session.Sql(sql).Get(&entity)
+	return
+}
+

+ 24 - 13
src/dashoo.cn/backend/api/controllers/base.go

@@ -11,9 +11,9 @@ import (
 
 	"github.com/astaxie/beego"
 
-	"dashoo.cn/business2/userRole"
 	"dashoo.cn/backend/api/business/material"
 	"dashoo.cn/backend/api/models"
+	"dashoo.cn/business2/userRole"
 	"dashoo.cn/utils"
 	"dashoo.cn/utils/redis"
 )
@@ -70,6 +70,16 @@ type ValidformStruct struct {
 	Items  interface{} `json:"items,omitempty"` //数据列表
 }
 
+type ALterDataInfo struct {
+	MainItem   interface{} `json:"mainitem,omitempty"`   //数据
+	CerItem    interface{} `json:"ceritem,omitempty"`    //数据
+	DeviItem   interface{} `json:"deviitem,omitempty"`   //数据
+	AlvalItem  interface{} `json:"alvalitem,omitempty"`  //数据
+	RepeatItem interface{} `json:"repeatitem,omitempty"` //数据
+	ResponItem interface{} `json:"responitem,omitempty"` //数据
+	ShiftItem  interface{} `json:"shiftitem,omitempty"`  //数据
+}
+
 var (
 	Nsqdtcpaddr                              string
 	Nsqtopic                                 string
@@ -218,19 +228,20 @@ var (
 	LimsReportSignName                       string = "LimsReportSign"              //报告签发
 	LimsReportHistoryName                    string = "LimsReportHistory"           //报告历史
 	LimsCustomerpositionName                 string = "LimsCustomerPosition"
-	LimsPressureLeakName                     string = "LimsPressureLeak"    //阻火器压力损失表
-	LimsSpecifyStandardName                  string = "LimsSpecifyStandard" //Lims规格型号标准
-	BaseUserName                             string = "Base_User"           //用户表
-	UserQualificationName                    string = "UserQualification"   //用户资质表
-	LimsInstrumentGroup                      string = "LimsInstrumentGroup" // 检测仪器关联
-	LimsReportAlertorName					 string = "LimsReportAlertor" // 计量站报警器
-	LimsReportAlertorCertificateName		 string = "LimsReportAlertorCertificate" // 计量站报警器  证书编号表
-	LimsReportAlertorDeviationName		     string = "LimsReportAlertorDeviation" // 计量站报警器 示值误差及响应时间表
-	LimsReportAlertorOtherName			     string = "LimsReportAlertorOther" // 计量站报警器 干扰误差
-	LimsReportAlertorRepeatName			     string = "LimsReportAlertorRepeat" // 计量站报警器  重复性
-	LimsReportAlertorShiftName				 string = "LimsReportAlertorShift" // 计量站报警器 漂移
-	LimsReportAlertorValueName				 string = "LimsReportAlertorValue" // 计量站报警器 报警误差/报警功能及报警动作值
+	LimsPressureLeakName                     string = "LimsPressureLeak"              //阻火器压力损失表
+	LimsSpecifyStandardName                  string = "LimsSpecifyStandard"           //Lims规格型号标准
+	BaseUserName                             string = "Base_User"                     //用户表
+	UserQualificationName                    string = "UserQualification"             //用户资质表
+	LimsInstrumentGroup                      string = "LimsInstrumentGroup"           // 检测仪器关联
+	LimsReportAlertorName                    string = "LimsReportAlertor"             // 计量站报警器
+	LimsReportAlertorCertificateName         string = "LimsReportAlertorCertificate"  // 计量站报警器  证书编号表
+	LimsReportAlertorDeviationName           string = "LimsReportAlertorDeviation"    // 计量站报警器 示值误差及响应时间表
+	LimsReportAlertorOtherName               string = "LimsReportAlertorOther"        // 计量站报警器 干扰误差
+	LimsReportAlertorRepeatName              string = "LimsReportAlertorRepeat"       // 计量站报警器  重复性
+	LimsReportAlertorShiftName               string = "LimsReportAlertorShift"        // 计量站报警器 漂移
+	LimsReportAlertorValueName               string = "LimsReportAlertorValue"        // 计量站报警器 报警误差/报警功能及报警动作值
 	LimsReportLiquidTransportationName       string = "LimsReportLiquidTransportation" //离心泵机组液体输送系统节能监测原始记录
+	LimsReportAlertorResponseTimeName        string = "LimsReportAlertorResponseTime" // 计量站报警器  响应时间
 	LimsReportPistonPumpUnitName             string = "LimsReportPistonPumpUnit" //柱塞泵机组液体输送系统节能监测原始记录
 	LimsReportMotorName                      string = "LimsReportMotor" // 电动机节能监测原始记录
 	LimsReportElecPumpWellName               string = "LimsReportElecPumpWell" // 电泵井节能监测原始数据记录表

+ 610 - 0
src/dashoo.cn/backend/api/controllers/limsmetering/limsreportben.go

@@ -0,0 +1,610 @@
+package limsmetering
+
+import (
+	"dashoo.cn/backend/api/business/limsdataentry"
+	"dashoo.cn/backend/api/business/limsreportalertor"
+	"dashoo.cn/backend/api/business/limsreportben"
+	"encoding/json"
+	"fmt"
+	"strconv"
+
+	"time"
+
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/utils"
+)
+
+type LimsReportBenController struct {
+	BaseController
+}
+
+type LimsBenAllModel struct {
+	BenMainform         limsreportalertor.LimsAlertorMainModel
+	CertiArrayList      []Certilist
+	AlertValArrayList   []AlertValList
+	DeviationArrayList  []DeviationList
+	ResponTimeArrayList []ResponTimeList
+	RepeatArrayList     []RepeatList
+	ShiftArrayList      []ShiftList
+	CerNum              string
+	EffectDate          time.Time
+	StanDevice          string
+	StandVal            string
+	StandardUnit        string
+	Uncertainty         string
+	InstrumentNo        string
+	EId                 int
+	TaskBalanceId       int
+}
+type Certilist struct {
+	CerNum       string
+	EffectDate   time.Time
+	StandVal     string
+	StandardUnit string
+	Uncertainty  string
+	StanDevice   string
+	InstrumentNo string
+}
+type AlertValList struct {
+	AlertFunc    []string
+	AlertFunction string
+	Value1        float64
+	Value2        float64
+	Value3        float64
+	ActionValue   float64
+	SureValue     float64
+	MaxValue      float64
+	AllowValue    float64
+}
+type DeviationList struct {
+	GasValue          float64
+	Value1            float64
+	Value2            float64
+	Value3            float64
+	AvgValue          string
+	Deviation         float64
+	DeviationAbs      float64
+	DeviationRelative float64
+}
+type ResponTimeList struct {
+	GasValue  float64
+	Value1    float64
+	Value2    float64
+	Value3    float64
+	Deviation float64
+}
+type RepeatList struct {
+	GasValue    float64
+	Value1      float64
+	Value2      float64
+	Value3      float64
+	Value4      float64
+	Value5      float64
+	Value6      float64
+	AvgValue    string
+	RepeatValue float64
+}
+type ShiftList struct {
+	ValueType string
+	Value0    float64
+	Value1    float64
+	Value2    float64
+	Value3    float64
+	Value4    float64
+	Value5    float64
+	Value6    float64
+	ZeroValue float64
+	ShowValue float64
+}
+
+
+//@Title 获取实体
+//@Description 获取实体
+//@Success 200 {object}
+//@router /get/:id [get]
+func (this *LimsReportBenController) GetEntity() {
+	Id := this.Ctx.Input.Param(":id")
+	sessions := utils.DBE.NewSession()
+	svc := limsreportben.GetLimsReportBenSessionService(sessions)
+	var mainmodel limsreportalertor.LimsAlertorMainModel
+	var alertvaluelist []limsreportalertor.LimsReportAlertorValue
+	var cervaluelist []limsreportalertor.LimsReportAlertorCertificate
+	var alertdeviationlist []limsreportalertor.LimsReportAlertorDeviation
+	var alertresponsetimelist []limsreportalertor.LimsReportAlertorResponseTime
+	var alertrepeatlist []limsreportalertor.LimsReportAlertorRepeat
+	var alertshiftlist []limsreportalertor.LimsReportAlertorShift
+	where := "DataEntryId = "+Id
+	mainmodel = svc.GetEntityByOrderbyWhereMain(this.User.AccCode+LimsDateEntryName, this.User.AccCode+LimsReportAlertorName, "a.Id", Id)
+	fmt.Println(mainmodel)
+	svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsReportAlertorCertificateName, where, "Id", &cervaluelist)
+	svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsReportAlertorValueName, where, "Id", &alertvaluelist)
+	svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsReportAlertorDeviationName, where, "Id", &alertdeviationlist)
+	svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsReportAlertorResponseTimeName, where, "Id", &alertresponsetimelist)
+	svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsReportAlertorRepeatName, where, "Id", &alertrepeatlist)
+	svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsReportAlertorShiftName, where, "Id", &alertshiftlist)
+	var responinfo ALterDataInfo
+	responinfo.MainItem = mainmodel
+	responinfo.AlvalItem = alertvaluelist
+	responinfo.CerItem = cervaluelist
+	responinfo.DeviItem = alertdeviationlist
+	responinfo.RepeatItem = alertrepeatlist
+	responinfo.ResponItem = alertresponsetimelist
+	responinfo.ShiftItem = alertshiftlist
+	this.Data["json"] = &responinfo
+	this.ServeJSON()
+}
+
+// @Title 添加
+// @Description 新增
+// @Success	200	{object} controllers.Request
+// @router /add/ [post]
+func (this *LimsReportBenController) AddEntity() {
+	sessions := utils.DBE.NewSession()
+	var model LimsBenAllModel
+	var jsonBlob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonBlob, &model)
+	var dataentrymodel limsdataentry.LimsDateEntry
+	var almodel limsreportalertor.LimsReportAlertor
+	svc := limsreportben.GetLimsReportBenSessionService(sessions)
+	dataentrymodel.Instrument1 = model.BenMainform.Instrument1
+	dataentrymodel.DetectBasis = model.BenMainform.DetectBasis
+	dataentrymodel.CustomerName = model.BenMainform.CustomerName
+	dataentrymodel.Temperature = model.BenMainform.Temperature
+	dataentrymodel.StandardDesc = model.BenMainform.StandardDesc
+	dataentrymodel.CreateOn = time.Now()
+	dataentrymodel.CreateBy = this.User.Realname
+	dataentrymodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsDateEntryName, &dataentrymodel)
+	almodel.MeterRange = model.BenMainform.MeterRange
+	almodel.MeasurementRange = model.BenMainform.MeasurementRange
+	almodel.FaceCheck = model.BenMainform.FaceCheck
+	almodel.FlagCheck = model.BenMainform.FlagCheck
+	almodel.ElectrifyCheck = model.BenMainform.ElectrifyCheck
+	almodel.Insulation = model.BenMainform.Insulation
+	almodel.RelativeHumanity = model.BenMainform.RelativeHumanity
+	almodel.ManuCompany = model.BenMainform.ManuCompany
+	almodel.Spec = model.BenMainform.Spec
+	almodel.FactoryNum = model.BenMainform.FactoryNum
+	almodel.AudibleAlarm = model.BenMainform.AudibleAlarm
+	almodel.AlarmConcentration = model.BenMainform.AlarmConcentration
+	almodel.InstrumentLevel = model.BenMainform.InstrumentLevel
+	almodel.DielecStrength = model.BenMainform.DielecStrength
+	almodel.EId = model.EId
+	almodel.TaskBalanceId = model.TaskBalanceId
+	almodel.DataEntryId = dataentrymodel.Id
+	almodel.CreateOn = time.Now()
+	almodel.CreateBy = this.User.Realname
+	almodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorName, &almodel)
+	//证书表
+	for i := 0; i < len(model.CertiArrayList); i++ {
+		if model.CertiArrayList[i].CerNum != "" {
+			var cerentity limsreportalertor.LimsReportAlertorCertificate
+			cerentity.CerNum = model.CertiArrayList[i].CerNum
+			cerentity.StandardUnit = model.CertiArrayList[i].StandardUnit
+			cerentity.StandVal = model.CertiArrayList[i].StandVal
+			cerentity.Uncertainty = model.CertiArrayList[i].Uncertainty
+			cerentity.EffectDate = model.CertiArrayList[i].EffectDate
+			cerentity.InstrumentNo = model.CertiArrayList[i].InstrumentNo
+			cerentity.StanDevice = model.CertiArrayList[i].StanDevice
+			cerentity.EId = model.EId
+			cerentity.TaskBalanceId = model.TaskBalanceId
+			cerentity.DataEntryId = dataentrymodel.Id
+			cerentity.CreateOn = time.Now()
+			cerentity.CreateBy = this.User.Realname
+			cerentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+			_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorCertificateName, &cerentity)
+		}
+	}
+	var cerentity2 limsreportalertor.LimsReportAlertorCertificate
+	cerentity2.CerNum = model.CerNum
+	cerentity2.StandardUnit = model.StandardUnit
+	cerentity2.StandVal = model.StandVal
+	cerentity2.Uncertainty = model.Uncertainty
+	cerentity2.EffectDate = model.EffectDate
+	cerentity2.InstrumentNo = model.InstrumentNo
+	cerentity2.StanDevice = model.StanDevice
+	cerentity2.EId = model.EId
+	cerentity2.TaskBalanceId = model.TaskBalanceId
+	cerentity2.DataEntryId = dataentrymodel.Id
+	cerentity2.CreateOn = time.Now()
+	cerentity2.CreateBy = this.User.Realname
+	cerentity2.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorCertificateName, &cerentity2)
+
+	//报警功能表
+	for i := 0; i < len(model.AlertValArrayList); i++ {
+		if model.AlertValArrayList[i].AlertFunction != "" {
+			var avalentity limsreportalertor.LimsReportAlertorValue
+			avalentity.AlertFunction = model.AlertValArrayList[i].AlertFunction
+			avalentity.Value1 = model.AlertValArrayList[i].Value1
+			avalentity.Value2 = model.AlertValArrayList[i].Value2
+			avalentity.Value3 = model.AlertValArrayList[i].Value3
+			avalentity.ActionValue = model.AlertValArrayList[i].ActionValue
+			avalentity.EId = model.EId
+			avalentity.TaskBalanceId = model.TaskBalanceId
+			avalentity.DataEntryId = dataentrymodel.Id
+			avalentity.CreateOn = time.Now()
+			avalentity.CreateBy = this.User.Realname
+			avalentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+			_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorValueName, &avalentity)
+		}
+	}
+
+	//示值误差表
+	for i := 0; i < len(model.DeviationArrayList); i++ {
+		if model.DeviationArrayList[i].GasValue != '0' {
+			var devientity limsreportalertor.LimsReportAlertorDeviation
+			devientity.GasValue = model.DeviationArrayList[i].GasValue
+			devientity.Value1 = model.DeviationArrayList[i].Value1
+			devientity.Value2 = model.DeviationArrayList[i].Value2
+			devientity.Value3 = model.DeviationArrayList[i].Value3
+			devientity.AvgValue, _ = strconv.ParseFloat(model.DeviationArrayList[i].AvgValue,64)
+			devientity.Deviation = model.DeviationArrayList[i].Deviation
+			devientity.EId = model.EId
+			devientity.TaskBalanceId = model.TaskBalanceId
+			devientity.DataEntryId = dataentrymodel.Id
+			devientity.CreateOn = time.Now()
+			devientity.CreateBy = this.User.Realname
+			devientity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+			_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorDeviationName, &devientity)
+		}
+	}
+
+	//响应时间表
+	var reponseentity limsreportalertor.LimsReportAlertorResponseTime
+	reponseentity.GasValue = model.ResponTimeArrayList[0].GasValue
+	reponseentity.Value1 = model.ResponTimeArrayList[0].Value1
+	reponseentity.Value2 = model.ResponTimeArrayList[0].Value2
+	reponseentity.Value3 = model.ResponTimeArrayList[0].Value3
+	reponseentity.Deviation = model.ResponTimeArrayList[0].Deviation
+	reponseentity.EId = model.EId
+	reponseentity.TaskBalanceId = model.TaskBalanceId
+	reponseentity.DataEntryId = dataentrymodel.Id
+	reponseentity.CreateOn = time.Now()
+	reponseentity.CreateBy = this.User.Realname
+	reponseentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorResponseTimeName, &reponseentity)
+
+	//重复性表
+	var repeatentity limsreportalertor.LimsReportAlertorRepeat
+	repeatentity.GasValue = model.RepeatArrayList[0].GasValue
+	repeatentity.Value1 = model.RepeatArrayList[0].Value1
+	repeatentity.Value2 = model.RepeatArrayList[0].Value2
+	repeatentity.Value3 = model.RepeatArrayList[0].Value3
+	repeatentity.Value4 = model.RepeatArrayList[0].Value4
+	repeatentity.Value5 = model.RepeatArrayList[0].Value5
+	repeatentity.Value6 = model.RepeatArrayList[0].Value6
+	repeatentity.AvgValue, _ = strconv.ParseFloat(model.RepeatArrayList[0].AvgValue,64)
+	repeatentity.RepeatValue = model.RepeatArrayList[0].RepeatValue
+	repeatentity.EId = model.EId
+	repeatentity.TaskBalanceId = model.TaskBalanceId
+	repeatentity.DataEntryId = dataentrymodel.Id
+	repeatentity.CreateOn = time.Now()
+	repeatentity.CreateBy = this.User.Realname
+	repeatentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorRepeatName, &repeatentity)
+
+	//漂移表
+	for i := 0; i < len(model.ShiftArrayList); i++ {
+		if model.ShiftArrayList[i].Value0 != '0' {
+			var shiftentity limsreportalertor.LimsReportAlertorShift
+			shiftentity.ValueType = model.ShiftArrayList[i].ValueType
+			shiftentity.Value0 = model.ShiftArrayList[i].Value0
+			shiftentity.Value1 = model.ShiftArrayList[i].Value1
+			shiftentity.Value2 = model.ShiftArrayList[i].Value2
+			shiftentity.Value3 = model.ShiftArrayList[i].Value3
+			shiftentity.Value4 = model.ShiftArrayList[i].Value4
+			shiftentity.Value5 = model.ShiftArrayList[i].Value5
+			shiftentity.Value6 = model.ShiftArrayList[i].Value6
+			shiftentity.ZeroValue = model.ShiftArrayList[i].ZeroValue
+			shiftentity.ShowValue = model.ShiftArrayList[i].ShowValue
+			shiftentity.EId = model.EId
+			shiftentity.TaskBalanceId = model.TaskBalanceId
+			shiftentity.DataEntryId = dataentrymodel.Id
+			shiftentity.CreateOn = time.Now()
+			shiftentity.CreateBy = this.User.Realname
+			shiftentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+			_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorShiftName, &shiftentity)
+
+		}
+		var errinfo ErrorDataInfo
+		if err == nil {
+			//新增
+			errinfo.Message = "添加成功!"
+			errinfo.Code = 0
+			errinfo.Item = dataentrymodel.Id
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}
+}
+
+// @Title 修改数据
+// @Description 修改数据
+// @Success	200	{object} controllers.Request
+// @router /update/:id [post]
+func (this *LimsReportBenController) UpdateEntity() {
+	dataentryid := this.Ctx.Input.Param(":id")
+	var errinfo ErrorInfo
+	if dataentryid == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	sessions := utils.DBE.NewSession()
+	var model LimsBenAllModel
+	var jsonBlob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonBlob, &model)
+	svc := limsreportben.GetLimsReportBenSessionService(sessions)
+	var dataentrymodel limsdataentry.LimsDateEntry
+	var almodel limsreportalertor.LimsReportAlertor
+	dataentrymodel.Instrument1 = model.BenMainform.Instrument1
+	dataentrymodel.DetectBasis = model.BenMainform.DetectBasis
+	dataentrymodel.CustomerName = model.BenMainform.CustomerName
+	dataentrymodel.Temperature = model.BenMainform.Temperature
+	dataentrymodel.StandardDesc = model.BenMainform.StandardDesc
+	dataentrymodel.ModifiedOn = time.Now()
+	dataentrymodel.ModifiedBy = this.User.Realname
+	dataentrymodel.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	almodel.MeterRange = model.BenMainform.MeterRange
+	almodel.MeasurementRange = model.BenMainform.MeasurementRange
+	almodel.FaceCheck = model.BenMainform.FaceCheck
+	almodel.FlagCheck = model.BenMainform.FlagCheck
+	almodel.ElectrifyCheck = model.BenMainform.ElectrifyCheck
+	almodel.Insulation = model.BenMainform.Insulation
+	almodel.RelativeHumanity = model.BenMainform.RelativeHumanity
+	almodel.ManuCompany = model.BenMainform.ManuCompany
+	almodel.Spec = model.BenMainform.Spec
+	almodel.FactoryNum = model.BenMainform.FactoryNum
+	almodel.AudibleAlarm = model.BenMainform.AudibleAlarm
+	almodel.AlarmConcentration = model.BenMainform.AlarmConcentration
+	almodel.InstrumentLevel = model.BenMainform.InstrumentLevel
+	almodel.DielecStrength = model.BenMainform.DielecStrength
+	almodel.ModifiedOn = time.Now()
+	almodel.ModifiedBy = this.User.Realname
+	almodel.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	dataentrycols := []string{
+		"CustomerName",
+		"StandardDesc",
+		"Instrument1",
+		"Temperature",
+		"DetectBasis",
+		"ModifiedOn",
+		"ModifiedBy",
+		"ModifiedUserId",
+	}
+	err := svc.UpdateEntityBytbl(this.User.AccCode+LimsDateEntryName, dataentryid, &dataentrymodel, dataentrycols)
+	alcols := []string{
+		"MeterRange",
+		"MeasurementRange",
+		"FaceCheck",
+		"FlagCheck",
+		"ElectrifyCheck",
+		"Insulation",
+		"RelativeHumanity",
+		"ManuCompany",
+		"Spec",
+		"FactoryNum",
+		"AudibleAlarm",
+		"AlarmConcentration",
+		"InstrumentLevel",
+		"DielecStrength",
+		"ModifiedOn",
+		"ModifiedBy",
+		"ModifiedUserId",
+	}
+	alwhere := "DataEntryId = "+dataentryid
+	err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorName, &almodel, alcols, alwhere)
+	//证书表
+	for i := 0; i < len(model.CertiArrayList); i++ {
+		if model.CertiArrayList[i].CerNum != "" {
+			var cerentity limsreportalertor.LimsReportAlertorCertificate
+			cerentity.CerNum = model.CertiArrayList[i].CerNum
+			cerentity.StandardUnit = model.CertiArrayList[i].StandardUnit
+			cerentity.StandVal = model.CertiArrayList[i].StandVal
+			cerentity.Uncertainty = model.CertiArrayList[i].Uncertainty
+			cerentity.EffectDate = model.CertiArrayList[i].EffectDate
+			cerentity.InstrumentNo = model.CertiArrayList[i].InstrumentNo
+			cerentity.StanDevice = model.CertiArrayList[i].StanDevice
+			cerentity.ModifiedOn = time.Now()
+			cerentity.ModifiedBy = this.User.Realname
+			cerentity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+			cercols := []string{
+				"CerNum",
+				"StandardUnit",
+				"StandVal",
+				"Uncertainty",
+				"EffectDate",
+				"InstrumentNo",
+				"StanDevice",
+				"ModifiedOn",
+				"ModifiedBy",
+				"ModifiedUserId",
+			}
+			err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorCertificateName, &cerentity, cercols, alwhere)
+		}
+	}
+	var cerentity2 limsreportalertor.LimsReportAlertorCertificate
+	cerentity2.CerNum = model.CerNum
+	cerentity2.StandardUnit = model.StandardUnit
+	cerentity2.StandVal = model.StandVal
+	cerentity2.Uncertainty = model.Uncertainty
+	cerentity2.EffectDate = model.EffectDate
+	cerentity2.InstrumentNo = model.InstrumentNo
+	cerentity2.StanDevice = model.StanDevice
+	cerentity2.ModifiedOn = time.Now()
+	cerentity2.ModifiedBy = this.User.Realname
+	cerentity2.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	cer2cols := []string{
+		"CerNum",
+		"StandardUnit",
+		"StandVal",
+		"Uncertainty",
+		"EffectDate",
+		"InstrumentNo",
+		"StanDevice",
+		"ModifiedOn",
+		"ModifiedBy",
+		"ModifiedUserId",
+	}
+	err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorCertificateName, &cerentity2, cer2cols, alwhere)
+
+	//报警功能表
+	for i := 0; i < len(model.AlertValArrayList); i++ {
+		if model.AlertValArrayList[i].AlertFunction != "" {
+			var avalentity limsreportalertor.LimsReportAlertorValue
+			avalentity.AlertFunction = model.AlertValArrayList[i].AlertFunction
+			avalentity.Value1 = model.AlertValArrayList[i].Value1
+			avalentity.Value2 = model.AlertValArrayList[i].Value2
+			avalentity.Value3 = model.AlertValArrayList[i].Value3
+			avalentity.ActionValue = model.AlertValArrayList[i].ActionValue
+			avalentity.ModifiedOn = time.Now()
+			avalentity.ModifiedBy = this.User.Realname
+			avalentity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+			alvalcols := []string{
+				"AlertFunction",
+				"Value1",
+				"Value2",
+				"Value3",
+				"ActionValue",
+				"ModifiedOn",
+				"ModifiedBy",
+				"ModifiedUserId",
+			}
+			err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorValueName, &avalentity, alvalcols, alwhere)
+		}
+	}
+
+	//示值误差表
+	for i := 0; i < len(model.DeviationArrayList); i++ {
+		if model.DeviationArrayList[i].GasValue != '0' {
+			var devientity limsreportalertor.LimsReportAlertorDeviation
+			devientity.GasValue = model.DeviationArrayList[i].GasValue
+			devientity.Value1 = model.DeviationArrayList[i].Value1
+			devientity.Value2 = model.DeviationArrayList[i].Value2
+			devientity.Value3 = model.DeviationArrayList[i].Value3
+			devientity.AvgValue, _ = strconv.ParseFloat(model.DeviationArrayList[i].AvgValue,64)
+			devientity.Deviation = model.DeviationArrayList[i].Deviation
+			devientity.ModifiedOn = time.Now()
+			devientity.ModifiedBy = this.User.Realname
+			devientity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+			devicols := []string{
+				"GasValue",
+				"Value1",
+				"Value2",
+				"Value3",
+				"AvgValue",
+				"Deviation",
+				"ModifiedOn",
+				"ModifiedBy",
+				"ModifiedUserId",
+			}
+			err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorDeviationName, &devientity, devicols, alwhere)
+		}
+	}
+
+	//响应时间表
+	var reponseentity limsreportalertor.LimsReportAlertorResponseTime
+	reponseentity.GasValue = model.ResponTimeArrayList[0].GasValue
+	reponseentity.Value1 = model.ResponTimeArrayList[0].Value1
+	reponseentity.Value2 = model.ResponTimeArrayList[0].Value2
+	reponseentity.Value3 = model.ResponTimeArrayList[0].Value3
+	reponseentity.Deviation = model.ResponTimeArrayList[0].Deviation
+	reponseentity.ModifiedOn = time.Now()
+	reponseentity.ModifiedBy = this.User.Realname
+	reponseentity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	responcols := []string{
+		"GasValue",
+		"Value1",
+		"Value2",
+		"Value3",
+		"Deviation",
+		"ModifiedOn",
+		"ModifiedBy",
+		"ModifiedUserId",
+	}
+	err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorResponseTimeName, &reponseentity, responcols, alwhere)
+
+	//重复性表
+	var repeatentity limsreportalertor.LimsReportAlertorRepeat
+	repeatentity.GasValue = model.RepeatArrayList[0].GasValue
+	repeatentity.Value1 = model.RepeatArrayList[0].Value1
+	repeatentity.Value2 = model.RepeatArrayList[0].Value2
+	repeatentity.Value3 = model.RepeatArrayList[0].Value3
+	repeatentity.Value4 = model.RepeatArrayList[0].Value4
+	repeatentity.Value5 = model.RepeatArrayList[0].Value5
+	repeatentity.Value6 = model.RepeatArrayList[0].Value6
+	repeatentity.AvgValue, _ = strconv.ParseFloat(model.RepeatArrayList[0].AvgValue,64)
+	repeatentity.RepeatValue = model.RepeatArrayList[0].RepeatValue
+	repeatentity.ModifiedOn = time.Now()
+	repeatentity.ModifiedBy = this.User.Realname
+	repeatentity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	repeacols := []string{
+		"GasValue",
+		"Value1",
+		"Value2",
+		"Value3",
+		"Value4",
+		"Value5",
+		"Value6",
+		"AvgValue",
+		"RepeatValue",
+		"ModifiedOn",
+		"ModifiedBy",
+		"ModifiedUserId",
+	}
+	err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorRepeatName, &repeatentity, repeacols, alwhere)
+
+	//漂移表
+	for i := 0; i < len(model.ShiftArrayList); i++ {
+		if model.ShiftArrayList[i].Value0 != '0' {
+			var shiftentity limsreportalertor.LimsReportAlertorShift
+			shiftentity.ValueType = model.ShiftArrayList[i].ValueType
+			shiftentity.Value1 = model.ShiftArrayList[i].Value1
+			shiftentity.Value2 = model.ShiftArrayList[i].Value2
+			shiftentity.Value3 = model.ShiftArrayList[i].Value3
+			shiftentity.Value4 = model.ShiftArrayList[i].Value4
+			shiftentity.Value5 = model.ShiftArrayList[i].Value5
+			shiftentity.Value6 = model.ShiftArrayList[i].Value6
+			shiftentity.ZeroValue = model.ShiftArrayList[i].ZeroValue
+			shiftentity.ShowValue = model.ShiftArrayList[i].ShowValue
+			shiftentity.ModifiedOn = time.Now()
+			shiftentity.ModifiedBy = this.User.Realname
+			shiftentity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+			shiftcols := []string{
+				"ValueType",
+				"Value1",
+				"Value2",
+				"Value3",
+				"Value4",
+				"Value5",
+				"Value6",
+				"ZeroValue",
+				"ShowValue",
+				"ModifiedOn",
+				"ModifiedBy",
+				"ModifiedUserId",
+			}
+			err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsReportAlertorShiftName, &shiftentity, shiftcols, alwhere)
+		}
+		if err == nil {
+			errinfo.Message = "修改成功!"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			errinfo.Message = "修改失败!" + utils.AlertProcess(err.Error())
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}
+}

+ 0 - 461
src/dashoo.cn/backend/api/controllers/metering/limsreportben.go

@@ -1,461 +0,0 @@
-package metering
-
-import (
-	"encoding/json"
-
-	"dashoo.cn/backend/api/business/limsdataentry"
-	"dashoo.cn/backend/api/business/limsreportalertor"
-	"dashoo.cn/backend/api/business/limsreportben"
-
-	"time"
-
-	. "dashoo.cn/backend/api/controllers"
-	"dashoo.cn/utils"
-)
-
-type LimsReportBenController struct {
-	BaseController
-}
-
-// @Title 获取列表
-// @Description get user by token
-// @Success 200 {object}
-// @router /list [get]
-//func (this *LimsBenController) GetEntityList() {
-//	//获取分页信息
-//	page := this.GetPageInfoForm()
-//	where := " 1=1 "
-//	orderby := "Id"
-//	asc := false
-//	Order := this.GetString("Order")
-//	Prop := this.GetString("Prop")
-//	if Order != "" && Prop != "" {
-//		orderby = Prop
-//		if Order == "asc" {
-//			asc = true
-//		}
-//	}
-//	Id := this.GetString("Id")
-//EId := this.GetString("EId")
-//TaskBalanceId := this.GetString("TaskBalanceId")
-//DataEntryId := this.GetString("DataEntryId")
-//RelativeHumanity := this.GetString("RelativeHumanity")
-//ManuCompany := this.GetString("ManuCompany")
-//Spec := this.GetString("Spec")
-//FactoryNum := this.GetString("FactoryNum")
-//AudibleAlarm := this.GetString("AudibleAlarm")
-//AlarmConcentration := this.GetString("AlarmConcentration")
-//InstrumentLevel := this.GetString("InstrumentLevel")
-//DielecStrength := this.GetString("DielecStrength")
-//Remark := this.GetString("Remark")
-//CreateOn := this.GetString("CreateOn")
-//CreateUserId := this.GetString("CreateUserId")
-//CreateBy := this.GetString("CreateBy")
-//ModifiedOn := this.GetString("ModifiedOn")
-//ModifiedUserId := this.GetString("ModifiedUserId")
-//ModifiedBy := this.GetString("ModifiedBy")
-//if Id != "" {
-//	where = where + " and Id like '%" + Id + "%'"
-//}
-
-//if EId != "" {
-//	where = where + " and EId like '%" + EId + "%'"
-//}
-//
-//if TaskBalanceId != "" {
-//	where = where + " and TaskBalanceId like '%" + TaskBalanceId + "%'"
-//}
-//
-//if DataEntryId != "" {
-//	where = where + " and DataEntryId =" + DataEntryId
-//} else {
-//	where = where + " and DataEntryId =" + "0"
-//}
-//
-//if RelativeHumanity != "" {
-//	where = where + " and RelativeHumanity like '%" + RelativeHumanity + "%'"
-//}
-//
-//if ManuCompany != "" {
-//	where = where + " and ManuCompany like '%" + ManuCompany + "%'"
-//}
-//
-//if FactoryNum != "" {
-//	where = where + " and FactoryNum like '%" + FactoryNum + "%'"
-//}
-//
-//if Spec != "" {
-//	where = where + " and Spec like '%" + Spec + "%'"
-//}
-//
-//if AudibleAlarm != "" {
-//	where = where + " and AudibleAlarm like '%" + AudibleAlarm + "%'"
-//}
-//
-//if AlarmConcentration != "" {
-//	where = where + " and AlarmConcentration like '%" + AlarmConcentration + "%'"
-//}
-//
-//if InstrumentLevel != "" {
-//	where = where + " and InstrumentLevel like '%" + InstrumentLevel + "%'"
-//}
-//
-//if DielecStrength != "" {
-//	where = where + " and DielecStrength like '%" + DielecStrength + "%'"
-//}
-//if Remark != "" {
-//	where = where + " and Remark like '%" + Remark + "%'"
-//}
-//
-//if CreateOn != "" {
-//	where = where + " and CreateOn like '%" + CreateOn + "%'"
-//}
-//
-//if CreateUserId != "" {
-//	where = where + " and CreateUserId like '%" + CreateUserId + "%'"
-//}
-//
-//if CreateBy != "" {
-//	where = where + " and CreateBy like '%" + CreateBy + "%'"
-//}
-//
-//if ModifiedOn != "" {
-//	where = where + " and ModifiedOn like '%" + ModifiedOn + "%'"
-//}
-//
-//if ModifiedUserId != "" {
-//	where = where + " and ModifiedUserId like '%" + ModifiedUserId + "%'"
-//}
-//
-//if ModifiedBy != "" {
-//	where = where + " and ModifiedBy like '%" + ModifiedBy + "%'"
-//}
-//
-//if CreateOn != "" {
-//	dates := strings.Split(CreateOn, ",")
-//	if len(dates) == 2 {
-//		minDate := dates[0]
-//		maxDate := dates[1]
-//		where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'"
-//	}
-//}
-//
-//	svc := limsreportben.GetLimsReportBenService(utils.DBE)
-//	var list []limsreportben.LimsReportBenModel
-//	total,list :=svc.GetAllPagingEntitiesWithOrderBytbl(this.User.AccCode, ,page.CurrentPage, page.Size, orderby, asc, &list, where)
-//	var datainfo DataInfo
-//	datainfo.Items = list
-//	datainfo.CurrentItemCount = total
-//	datainfo.PageIndex = page.CurrentPage
-//	datainfo.ItemsPerPage = page.Size
-//	this.Data["json"] = &datainfo
-//	this.ServeJSON()
-//}
-
-// @Title 获取实体
-// @Description 获取实体
-// @Success 200 {object} limss5ovelimsreportalertor.LimsS5OVELimsReportAlertor
-// @router /get/:id [get]
-//func (this *LimsBenController) GetEntity() {
-//	Id := this.Ctx.Input.Param(":id")
-//	var dataentrylist []limsdataentry.LimsDateEntry
-//	var alertorlist []limsreportalertor.LimsReportAlertor
-//	var alertvaluelist []limsreportalertor.LimsReportAlertorValue
-//	var alertdeviationlist []limsreportalertor.LimsReportAlertorDeviation
-//	var alertresponsetimelist []limsreportalertor.LimsReportAlertorResponseTime
-//	var alertrepeatlist []limsreportalertor.LimsReportAlertorRepeat
-//	var alertshiftlist []limsreportalertor.LimsReportAlertorShift
-//	svc := limsreportben.GetLimsReportBenService(utils.DBE)
-//	svc.GetListEntityByIdBytbl(this.User.AccCode+LimsDateEntryName, this.User.AccCode+LimsReportAlertorName, this.User.AccCode+LimsReportAlertorValueName, this.User.AccCode+LimsReportAlertorDeviationName, this.User.AccCode+LimsReportAlertorRepeatName,this.User.AccCode+LimsReportAlertorShiftName,Id, &model)
-//
-//	this.Data["json"] = &model
-//	this.ServeJSON()
-//}
-
-// @Title 添加
-// @Description 新增
-// @Success	200	{object} controllers.Request
-// @router /add/:TypeId  [post]
-func (this *LimsReportBenController) AddEntity() {
-	TypeId := this.Ctx.Input.Param(":TypeId")
-	switch TypeId {
-	case "0":
-		//主表和扩展表
-		var dataentrymodel limsdataentry.LimsDateEntry
-		var almodel limsreportalertor.LimsReportAlertor
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &dataentrymodel)
-		dataentrymodel.CreateOn = time.Now()
-		dataentrymodel.CreateBy = this.User.Realname
-		dataentrymodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
-
-		json.Unmarshal(jsonBlob, &almodel)
-		almodel.CreateOn = time.Now()
-		almodel.CreateBy = this.User.Realname
-		almodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsDateEntryName, &dataentrymodel)
-		_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsReportAlertorName, &almodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = dataentrymodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	case "1":
-		//证书表
-		var cermodel limsreportalertor.LimsReportAlertorCertificate
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &cermodel)
-		cermodel.Createon = time.Now()
-		cermodel.Createby = this.User.Realname
-		cermodel.Createuserid, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportBeamPumpingUnitName, &cermodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = cermodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	case "2":
-		//报警功能表
-		var alermodel limsreportalertor.LimsReportAlertorValue
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &alermodel)
-		alermodel.Createon = time.Now()
-		alermodel.Createby = this.User.Realname
-		alermodel.Createuserid, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportBeamPumpingUnitName, &alermodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = alermodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	case "3":
-		//示值误差表
-		var deviamodel limsreportalertor.LimsReportAlertorDeviation
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &deviamodel)
-		deviamodel.Createon = time.Now()
-		deviamodel.Createby = this.User.Realname
-		deviamodel.Createuserid, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportBeamPumpingUnitName, &deviamodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = deviamodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	case "4":
-		//响应时间表
-		var responmodel limsreportalertor.LimsReportAlertorResponseTime
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &responmodel)
-		responmodel.Createon = time.Now()
-		responmodel.Createby = this.User.Realname
-		responmodel.Createuserid, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportBeamPumpingUnitName, &responmodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = responmodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	case "5":
-		//重复性表
-		var repemodel limsreportalertor.LimsReportAlertorRepeat
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &repemodel)
-		repemodel.Createon = time.Now()
-		repemodel.Createby = this.User.Realname
-		repemodel.Createuserid, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportBeamPumpingUnitName, &repemodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = repemodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	case "6":
-		//漂移表
-		var shiftmodel limsreportalertor.LimsReportAlertorShift
-		var jsonBlob = this.Ctx.Input.RequestBody
-		svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-		json.Unmarshal(jsonBlob, &shiftmodel)
-		shiftmodel.Createon = time.Now()
-		shiftmodel.Createby = this.User.Realname
-		shiftmodel.Createuserid, _ = utils.StrTo(this.User.Id).Int()
-
-		_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportBeamPumpingUnitName, &shiftmodel)
-
-		var errinfo ErrorDataInfo
-		if err == nil {
-			//新增
-			errinfo.Message = "添加成功!"
-			errinfo.Code = 0
-			errinfo.Item = shiftmodel.Id
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		} else {
-			errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
-			errinfo.Code = -1
-			this.Data["json"] = &errinfo
-			this.ServeJSON()
-		}
-	}
-}
-
-// @Title 删除数据录入信息
-// @Description
-// @Success 200 {object} ErrorInfo
-// @Failure 403 :id 为空
-// @router /dataentrydelect/:Id [delete]
-func (this *LimsReportBenController) DelDataEntry() {
-	Id := this.Ctx.Input.Param(":Id")
-	var errinfo ErrorInfo
-	if Id == "" {
-		errinfo.Message = "操作失败!请求信息不完整"
-		errinfo.Code = -2
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-		return
-	}
-	where := " Id= " + Id
-	svc := limsreportben.GetLimsReportBenService(utils.DBE)
-	err := svc.DeleteEntityBytbl(this.User.AccCode+LimsDateEntryName, where)
-	if err == nil {
-		errinfo.Message = "删除成功"
-		errinfo.Code = 0
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-	} else {
-		errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
-		errinfo.Code = -1
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-	}
-}
-
-// @Title 修改数据录入表
-// @Description 修改数据录入表
-// @Success	200	{object} controllers.Request
-// @router /updateEntity/:id [post]
-func (this *LimsReportBenController) UpdateEntity() {
-	id := this.Ctx.Input.Param(":id")
-	var errinfo ErrorInfo
-	if id == "" {
-		errinfo.Message = "操作失败!请求信息不完整"
-		errinfo.Code = -2
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-		return
-	}
-
-	var model limsdataentry.LimsDateEntry
-	svc := limsreportben.GetLimsReportBenService(utils.DBE)
-
-	var jsonBlob = this.Ctx.Input.RequestBody
-	json.Unmarshal(jsonBlob, &model)
-	model.ModifiedOn = time.Now()
-	model.ModifiedBy = this.User.Realname
-	model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
-
-	cols := []string{
-		"TestDepartId",
-		"TestDepart",
-		"PositionCheckId",
-		"PositionCheck",
-		"Instrument1",
-		"Instrument2",
-		"Instrument3",
-		"Temperature",
-		"DetectBasis",
-		"StandardDesc",
-		"CheckDate",
-	}
-	err := svc.UpdateEntityBytbl(this.User.AccCode+LimsDateEntryName, id, &model, cols)
-	if err == nil {
-		errinfo.Message = "保存成功!"
-		errinfo.Code = 0
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-	} else {
-		errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
-		errinfo.Code = -1
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-	}
-}

+ 634 - 0
src/dashoo.cn/backend/api/mydb/mySessionBase.go

@@ -0,0 +1,634 @@
+// 业务逻辑服务基类,提供基本的添删改查功能
+//
+// 修改纪录
+// 2016.06.06 版本:1.0 yy 新建账户分表结构的处理
+
+package mydb
+
+import (
+	"encoding/json"
+	"fmt"
+	"reflect"
+	"strconv"
+
+	. "dashoo.cn/utils/db"
+	//	"github.com/go-xorm/xorm"
+)
+
+type MySessionBase struct {
+	SessionBase
+}
+
+//
+func (s *MySessionBase) GetPagingEntitiesWithOrderBytbl(AccCode string, pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
+	var err error
+	var resultsSlice []map[string][]byte
+	//获取表名
+	tableName := AccCode + GetTableName(entitiesPtr)
+	if len(where) == 0 {
+		if asc {
+			err = s.Session.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
+		} else {
+			err = s.Session.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
+		}
+		//获取总记录数
+		sql := "SELECT COUNT(*) AS total FROM " + tableName
+		resultsSlice, err = s.Session.Query(sql)
+		LogError(err)
+
+	} else {
+		if asc {
+			err = s.Session.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
+		} else {
+			err = s.Session.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
+		}
+		sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
+		resultsSlice, err = s.Session.Query(sql)
+	}
+	LogError(err)
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			LogError(err)
+			break
+		}
+	}
+	return total
+}
+
+//样本库分表
+func (s *MySessionBase) InsertEntityBytbl(tablename string, entity interface{}) (affected int64, err error) {
+	affected, err = s.Session.Table(tablename).Insert(entity)
+	LogError(err)
+	return
+}
+
+func (s *MySessionBase) GetEntityByIdBytbl(tablename string, id interface{}, entityPtr interface{}) (has bool) {
+	has, err := s.Session.Table(tablename).Id(id).Get(entityPtr)
+	LogError(err)
+	return
+}
+
+func (s *MySessionBase) GetEntityByWhere(tablename string, where string, entityPtr interface{}) (has bool) {
+	has, err := s.Session.Table(tablename).Where(where).Get(entityPtr)
+	LogError(err)
+	return
+}
+
+func (s *MySessionBase) GetEntitysByWhere(tablename string, where string, entityPtr interface{}) {
+	err := s.Session.Table(tablename).Where(where).Find(entityPtr)
+	LogError(err)
+	return
+}
+
+func (s *MySessionBase) GetEntitysByOrderbyWhere(tablename, where, orderby string, entityPtr interface{}) {
+	err := s.Session.Table(tablename).Where(where).OrderBy(orderby).Find(entityPtr)
+	LogError(err)
+	return
+}
+
+//更新实体写入日志,会自动备份数据
+func (s *MySessionBase) UpdateEntityBytbl(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
+	//session := s.DBE.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	LogError(err)
+	if err != nil {
+		//s.Session.Rollback()
+		return err
+	}
+	_, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
+	LogError(err)
+	if err != nil {
+		//s.Session.Rollback()
+		return err
+	}
+	//err = s.Session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//根据条件修改数据,不记录日志
+func (s *MySessionBase) UpdateEntityBywheretbl(tablename string, entity interface{}, cols []string, where string) (err error) {
+	_, err = s.Session.Table(tablename).Where(where).Cols(cols...).Update(entity) //执行更新
+	return err
+}
+
+//更新实体写入日志,会自动备份数据
+func (s *MySessionBase) UpdateDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, sourcename string) (err error) {
+	s.GetEntityByIdBytbl(tablename, id, entityEmpty)
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	json, err := json.Marshal(entityEmpty)
+	LogError(err)
+	updatem := new(DonorsLog)
+	//获取表名
+	objT := reflect.TypeOf(entity)
+	objT = objT.Elem()
+	tableName := objT.Name()
+	updatem.TableName = tableName
+	updatem.AccCode = acccode
+	updatem.OpDesc = opdesc
+	updatem.OpType = 1
+	updatem.SourceName = sourcename
+	updatem.RecordId = fmt.Sprintf("%v", id)
+	updatem.RecordData = string(json)
+	updatem.CreateUserId = userid
+	updatem.CreateBy = username
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//s.Session.Rollback()
+		return err
+	}
+	_, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
+	LogError(err)
+	if err != nil {
+		//s.Session.Rollback()
+		return err
+	}
+	err = s.Session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//删除实体并写入日志,会自动备份数据,entity为空的表结构
+func (s *MySessionBase) DeleteDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, sourcename string) (err error) {
+	has := s.GetEntityByIdBytbl(tablename, id, entity)
+	if has {
+		//session := s.Session.NewSession()
+		//defer session.Close()
+		//err := session.Begin()
+		json, err := json.Marshal(entity)
+		LogError(err)
+		deleted := new(DonorsLog)
+		//获取表名
+		objT := reflect.TypeOf(entity)
+		objT = objT.Elem()
+		tableName := objT.Name()
+
+		deleted.TableName = tableName
+		deleted.AccCode = acccode
+		deleted.OpDesc = opdesc
+		deleted.OpType = 2
+		deleted.SourceName = sourcename
+		deleted.RecordId = fmt.Sprintf("%v", id)
+		deleted.RecordData = string(json)
+		deleted.CreateUserId = userid
+		deleted.CreateBy = username
+
+		_, err = s.Session.Table(tablelogname).Insert(deleted) //保存到更新历史表
+
+		LogError(err)
+		if err != nil {
+			//session.Rollback()
+			return err
+		}
+		_, err = s.Session.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
+		LogError(err)
+		if err != nil {
+			//session.Rollback()
+			return err
+		}
+		//err = session.Commit()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//主信息不存在,首次添加样本
+func (s *MySessionBase) InsertSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{}) (affected int64, err error) {
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	affected, err = s.Session.Table(tblmain).Insert(entitymain)
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tblbuss).Insert(entitybuss)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return 0, err
+	}
+	return
+}
+
+//主信息已存在,添加分管信息
+func (s *MySessionBase) InsertOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
+	cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
+	s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+
+	json, err := json.Marshal(mainentityEmpty)
+	LogError(err)
+	updatem := new(SamplesLog)
+	//获取表名
+	objT := reflect.TypeOf(entitymain)
+	objT = objT.Elem()
+	tableName := objT.Name()
+	updatem.TableName = tableName
+	updatem.AccCode = acccode
+	updatem.OpType = 3
+	updatem.SampleCode = samplecode
+	updatem.SampleType = sampletype
+	updatem.MId = fmt.Sprintf("%v", id)
+	updatem.RecordData = string(json)
+	updatem.CreateUserId = userid
+	updatem.CreateBy = username
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+
+	_, err = s.Session.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tblbuss).Insert(entitybuss)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return 0, err
+	}
+	return
+}
+
+//主信息不存在,首次添加样本 预录入新增,不写入buss
+func (s *MySessionBase) InsertSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{}) (affected int64, err error) {
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	affected, err = s.Session.Table(tblmain).Insert(entitymain)
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return 0, err
+	}
+	return
+}
+
+//主信息已存在,添加分管信息 预录入新增,不写入buss
+func (s *MySessionBase) InsertOtherSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{},
+	cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
+	s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+
+	json, err := json.Marshal(mainentityEmpty)
+	LogError(err)
+	updatem := new(SamplesLog)
+	//获取表名
+	objT := reflect.TypeOf(entitymain)
+	objT = objT.Elem()
+	tableName := objT.Name()
+	updatem.TableName = tableName
+	updatem.AccCode = acccode
+	updatem.OpType = 3
+	updatem.SampleCode = samplecode
+	updatem.SampleType = sampletype
+	updatem.MId = fmt.Sprintf("%v", id)
+	updatem.RecordData = string(json)
+	updatem.CreateUserId = userid
+	updatem.CreateBy = username
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+
+	_, err = s.Session.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return 0, err
+	}
+	return
+}
+
+//出入库信息。修改主表和从表,添加buss表
+func (s *MySessionBase) UpdateOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
+	cols, colsdetail []string, id interface{}, mainentityEmpty, detailentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string) (affected int64, err error) {
+	s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+
+	json, err := json.Marshal(mainentityEmpty)
+	LogError(err)
+	updatem := new(SamplesLog)
+	//获取表名
+	objT := reflect.TypeOf(entitymain)
+	objT = objT.Elem()
+	tableName := objT.Name()
+	updatem.TableName = tableName
+	updatem.AccCode = acccode
+	updatem.OpType = 1
+	updatem.SampleCode = samplecode
+	updatem.BarCode = samplecode
+	updatem.RecordId = fmt.Sprintf("%v", id)
+	updatem.RecordData = string(json)
+	updatem.CreateUserId = userid
+	updatem.CreateBy = username
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+
+	_, err = s.Session.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+
+	s.GetEntityByIdBytbl(tbldetail, id, detailentityEmpty)
+
+	affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	affected, err = s.Session.Table(tblbuss).Insert(entitybuss)
+	if err != nil {
+		//session.Rollback()
+		return 0, err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return 0, err
+	}
+	return
+}
+
+//更改样本表
+func (s *MySessionBase) UpdateSample(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
+	//	fmt.Println("=====")
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	_, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//复苏分装提取信息。修改从表,添加buss表
+func (s *MySessionBase) UpdateDetailAndBuss(tbldetail, tblbuss string, id interface{}, entitydetail, entitybuss interface{}, colsdetail []string) (err error) {
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	_, err = s.Session.Table(tbldetail).Id(id).Cols(colsdetail...).Update(entitydetail) //执行更新
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	_, err = s.Session.Table(tblbuss).Insert(entitybuss)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//更改样本表并写入日志
+func (s *MySessionBase) WriteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	json, err := json.Marshal(entity)
+	LogError(err)
+	updatem := new(SamplesLog)
+	//获取表名
+	updatem.TableName = "SamplesInfoShow"
+	updatem.AccCode = acccode
+	updatem.OpType = 1
+	updatem.SampleCode = samplecode
+	updatem.BarCode = barcode
+	updatem.RecordId = fmt.Sprintf("%v", id)
+	updatem.MId = fmt.Sprintf("%v", mid)
+	updatem.RecordData = string(json)
+	updatem.CreateUserId = userid
+	updatem.CreateBy = username
+	updatem.SampleType = sampletype
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//写入样本删除日志
+func (s *MySessionBase) WriteDeleteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	json, err := json.Marshal(entity)
+	LogError(err)
+	updatem := new(SamplesLog)
+	//获取表名
+	updatem.TableName = "SamplesInfoShow"
+	updatem.AccCode = acccode
+	updatem.OpType = 2
+	updatem.SampleCode = samplecode
+	updatem.BarCode = barcode
+	updatem.RecordId = fmt.Sprintf("%v", id)
+	updatem.MId = fmt.Sprintf("%v", mid)
+	updatem.RecordData = string(json)
+	updatem.CreateUserId = userid
+	updatem.CreateBy = username
+	updatem.SampleType = sampletype
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//更新实体写入日志,会自动备份数据
+func (s *MySessionBase) UpdateOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, tabledesc string) (err error) {
+	s.GetEntityByIdBytbl(tablename, id, entityEmpty)
+	//session := s.Session.NewSession()
+	//defer session.Close()
+	//err = session.Begin()
+	json, err := json.Marshal(entityEmpty)
+	LogError(err)
+	updatem := new(Base_OperationLog)
+	//获取表名
+	objT := reflect.TypeOf(entity)
+	objT = objT.Elem()
+	tableName := objT.Name()
+	updatem.TableName = tableName
+	updatem.AccCode = acccode
+	updatem.OpDesc = opdesc
+	updatem.OpTage = 1
+	updatem.TableDesc = tabledesc
+	updatem.RecordId = fmt.Sprintf("%v", id)
+	updatem.RecordData = string(json)
+	updatem.Createuserid = userid
+	updatem.Createby = username
+	_, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
+
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	_, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
+	LogError(err)
+	if err != nil {
+		//session.Rollback()
+		return err
+	}
+	//err = session.Commit()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+//删除实体并写入日志,会自动备份数据,entity为空的表结构
+func (s *MySessionBase) DeleteOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, tabledesc string) (err error) {
+	has := s.GetEntityByIdBytbl(tablename, id, entity)
+	if has {
+		//session := s.Session.NewSession()
+		//defer session.Close()
+		//err := session.Begin()
+		json, err := json.Marshal(entity)
+		LogError(err)
+		deleted := new(Base_OperationLog)
+		//获取表名
+		objT := reflect.TypeOf(entity)
+		objT = objT.Elem()
+		tableName := objT.Name()
+
+		deleted.TableName = tableName
+		deleted.AccCode = acccode
+		deleted.OpDesc = opdesc
+		deleted.OpTage = 2
+		deleted.TableDesc = tabledesc
+		deleted.RecordId = fmt.Sprintf("%v", id)
+		deleted.RecordData = string(json)
+		deleted.Createuserid = userid
+		deleted.Createby = username
+
+		_, err = s.Session.Table(tablelogname).Insert(deleted) //保存到更新历史表
+
+		LogError(err)
+		if err != nil {
+			//session.Rollback()
+			return err
+		}
+		_, err = s.Session.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
+		LogError(err)
+		if err != nil {
+			//session.Rollback()
+			return err
+		}
+		//err = session.Commit()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//根据条件删除数据,不记录日志
+func (s *MySessionBase) DeleteEntityBytbl(tablename string, where string) (err error) {
+	if where == "" {
+		where = "1=2"
+	}
+	sql := `delete from ` + tablename + ` where ` + where
+	_, err = s.Session.Exec(sql)
+	return
+}
+
+func (s *MySessionBase) GetTopNEntities(tablename string, topN int, where string, entitiesPtr interface{}) {
+	err := s.Session.Table(tablename).Where(where).Limit(topN, 0).Find(entitiesPtr)
+	LogError(err)
+	return
+}

+ 2 - 2
src/dashoo.cn/backend/api/routers/router.go

@@ -10,9 +10,9 @@ import (
 	"dashoo.cn/backend/api/controllers/equipment"
 	"dashoo.cn/backend/api/controllers/instrument"
 	"dashoo.cn/backend/api/controllers/lims"
+	"dashoo.cn/backend/api/controllers/limsmetering"
 	"dashoo.cn/backend/api/controllers/logs"
 	"dashoo.cn/backend/api/controllers/material"
-	"dashoo.cn/backend/api/controllers/metering"
 	"dashoo.cn/backend/api/controllers/setting"
 	"dashoo.cn/backend/api/controllers/system"
 	"dashoo.cn/backend/api/controllers/trigger"
@@ -437,7 +437,7 @@ func init() {
 		//苯
 		beego.NSNamespace("/limsreportben",
 			beego.NSInclude(
-				&metering.LimsReportBenController{},
+				&limsmetering.LimsReportBenController{},
 			),
 		),
 		// 离心泵机组液体输送系统节能监测原始记录

+ 2 - 2
src/dashoo.cn/frontend_web/src/api/meter/reportalertor.js

@@ -18,9 +18,9 @@ export default {
         method: 'GET',
       })
     },
-    addEntity(formData, myAxios, TypeId) {
+    addEntity(formData, myAxios) {
       return myAxios({
-        url: '/limsreportben/add/'+TypeId,
+        url: '/limsreportben/add/',
         method: 'post',
         data: formData
       })

+ 270 - 194
src/dashoo.cn/frontend_web/src/pages/lims/reportalertorbendetect/_opera/operation.vue

@@ -11,7 +11,6 @@
           <i class="icon icon-table2"></i> 编辑
         </span>
         <span style="float: right;">
-          <el-button type="primary" size="mini" @click="saveEntity">保存</el-button>
           <router-link :to="'/lims/dataentry'">
             <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
           </router-link>
@@ -32,11 +31,13 @@
           <el-col :span="8">
             <el-form-item label="环境温度:">
               <el-input v-model="formData.Temperature" placeholder="请输入" style="width: 100%"></el-input>
+              <template slot="append">℃</template>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="相对湿度:">
               <el-input v-model="formData.RelativeHumanity" placeholder="请输入" style="width: 100%"></el-input>
+              <template slot="append">%</template>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -81,7 +82,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="标准器名称:">
-              <el-input v-model="formData.ElectrifyCheck" placeholder="请输入" style="width: 100%"></el-input>
+              <el-input v-model="formData.StanDevice" placeholder="请输入" style="width: 100%"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -182,33 +183,37 @@
       <el-table :data="alerValData" border style="width: 100%" :header-cell-style="discountHeaderStyle1">
         <el-table-column align="center" prop="AlertFunction" label="报警功能">
           <template slot-scope="scope">
-            <el-select v-model="scope.row.AlertFunction" placeholder="" size="mini">
+            <!-- <el-select v-model="scope.row.AlertFunction" placeholder="" size="mini">
               <el-option v-for="item in AlertFunctionOptions" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
-            </el-select>
+            </el-select> -->
+            <el-checkbox-group v-model="scope.row.AlertFunc" :max="1">
+              <el-checkbox label="1">正常</el-checkbox>
+              <el-checkbox label="2">不正常</el-checkbox>
+            </el-checkbox-group>
             <!-- <el-input v-model.trim="scope.row.AlertFunction" style="width: 60%" size="mini"></el-input> -->
           </template>
         </el-table-column>
         <el-table-column align="center" label="实测报警值(%LEL)">
           <el-table-column align="center" label="" prop="Value1">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value1" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Value1" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" label="" prop="Value2">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value2" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Value2" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" label="" prop="Value3">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value3" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Value3" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
         </el-table-column>
         <el-table-column prop="ActionValue" align="center" label="报警动作值(%LEL)" min-width="90">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.ActionValue" style="width: 160px" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.ActionValue" style="width: 160px" size="mini"></el-input>
           </template>
         </el-table-column>
       </el-table>
@@ -221,34 +226,37 @@
       <el-table :data="deviationData" border style="width: 100%">
         <el-table-column align="center" prop="GasValue" label="标准气体浓度值(%LEL)" width="180">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.GasValue" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.GasValue" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column align="center" label="仪器示值(%LEL)" min-width="180">
           <el-table-column align="center" prop="Value1" label="1">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value1" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getDeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value1"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value2" label="2">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value2" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getDeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value2"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value3" label="3">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value3" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getDeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value3"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="AvgValue" label="平均值">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.AvgValue" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.AvgValue" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
         </el-table-column>
         <el-table-column align="center" prop="Deviation" label="示值误差(%FS)" min-width="180">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.Deviation" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Deviation" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
       </el-table>
@@ -261,28 +269,28 @@
       <el-table :data="responseTimeData" border style="width: 100%">
         <el-table-column align="center" prop="GasValue" label="标准气体浓度值(×10-6  mol/mol)" width="180">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.GasValue" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.GasValue" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column align="center" label="时间" min-width="180">
           <el-table-column align="center" prop="Value1" label="1">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value1" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Value1" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value2" label="2">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value2" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Value2" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value3" label="3">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value3" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Value3" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Deviation" label="响应时间">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Deviation" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.Deviation" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
         </el-table-column>
@@ -294,51 +302,57 @@
         <!-- <el-button style="float: right;" size="mini" type="primary">添加</el-button> -->
       </div>
       <el-table :data="RepeatData" border style="width: 100%">
-        <el-table-column align="center" prop="GasValue" label="标准气体浓度值(%LEL)" width="180">
+        <el-table-column align="center" prop="GasValue" label="标准气体浓度值(%LEL)" width="150">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.GasValue" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.GasValue" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column align="center" prop="name" label="仪器示值(%LEL)" min-width="180">
           <el-table-column align="center" prop="Value1" label="1">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value1" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getRepeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value1"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value2" label="2">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value2" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getRepeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value2"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value3" label="3">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value3" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getRepeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value3"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value4" label="4">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value4" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getRepeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value4"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value5" label="5">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value5" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getRepeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value5"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="Value6" label="6">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.Value6" style="width: 100%" size="mini"></el-input>
+              <el-input @blur="getRepeValueAvg(scope.row)" type="number" step="0.01" v-model.number="scope.row.Value6"
+                style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="AvgValue" label="平均值">
             <template slot-scope="scope">
-              <el-input v-model.trim="scope.row.AvgValue" style="width: 100%" size="mini"></el-input>
+              <el-input type="number" step="0.01" v-model.number="scope.row.AvgValue" style="width: 100%" size="mini"></el-input>
             </template>
           </el-table-column>
         </el-table-column>
-        <el-table-column align="center" prop="RepeatValue" label="重复性(%)" min-width="180">
+        <el-table-column align="center" prop="RepeatValue" label="重复性(%)" width="150">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.RepeatValue" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.RepeatValue" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
       </el-table>
@@ -353,50 +367,57 @@
         </el-table-column>
         <el-table-column prop="value0" align="center" label="0">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.value0" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value0" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="value1" align="center" label="1h   (10min)" min-width="80">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.Value1" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value1" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="value2" align="center" label="2h   (20min)" min-width="80">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.value2" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value2" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="value3" align="center" label="3h   (30min)" min-width="80">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.value3" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value3" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="value4" align="center" label="4h   (40min)" min-width="80">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.value4" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value4" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="value5" align="center" label="5h   (50min)" min-width="80">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.value5" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value5" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="value6" align="center" label="6h   (60min)" min-width="80">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.value6" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.Value6" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
-        <el-table-column align="center" prop="ZeroValue" label="零点漂移(%FS)" min-width="150">
+        <el-table-column align="center" prop="ZeroValue" label="零点漂移(%FS)" width="135">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.ZeroValue" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.ZeroValue" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
-        <el-table-column align="center" prop="ShowValue" label="量程漂移(%FS)" min-width="150">
+        <el-table-column align="center" prop="ShowValue" label="量程漂移(%FS)" width="135">
           <template slot-scope="scope">
-            <el-input v-model.trim="scope.row.ShowValue" style="width: 100%" size="mini"></el-input>
+            <el-input type="number" step="0.01" v-model.number="scope.row.ShowValue" style="width: 100%" size="mini"></el-input>
           </template>
         </el-table-column>
       </el-table>
+      <template>
+        <div style="text-align: center; margin-top: 15px;">
+          <el-button type="primary" size="small" @click="saveEntity"><i class="el-icon-circle-check"></i>
+            保存
+          </el-button>
+        </div>
+      </template>
     </el-card>
   </div>
 </template>
@@ -418,11 +439,12 @@
       return {
         serviceId: '',
         formData: {
-          Id: '',
-          EId: '',
-          TaskBalanceId: '',
-          DataEntryId: '',
+          Id: 0,
+          EId: 0,
+          TaskBalanceId: 0,
+          DataEntryId: 0,
           MeterRange: '',
+          DataEntryCode: '',
           MeasurementRange: '',
           DetectBasis: '',
           FaceCheck: '',
@@ -432,16 +454,23 @@
           CustomerName: '',
           TestDepart: '',
           PositionCheck: '',
+          CustomerId: 0,
+          PositionCheckId: 0,
+          TestDepartId: 0,
           Instrument1: '',
           Temperature: '',
           StandardDesc: '',
+          StanDevice: '',
+          RelativeHumanity: '',
+          ManuCompany: '',
+          Spec: '',
+          FactoryNum: '',
+          CheckDate: new Date(),
           Remark: '',
-          CreateUserId: '',
-          CreateOn: '',
-          CreateBy: '',
-          ModifiedOn: '',
-          ModifiedUserId: '',
-          ModifiedBy: '',
+          AudibleAlarm: '',
+          AlarmConcentration: '',
+          InstrumentLevel: '',
+          DielecStrength: ''
         },
         //证书编号
         formCertificateData: {
@@ -450,50 +479,59 @@
           StandardUnit: '',
           StandVal: '',
           Uncertainty: '',
-          EffectDate: '',
+          EffectDate: new Date(),
+          InstrumentNo: ''
         },
+        //certificateDataAll: [],
         certificateData: [{
           value: 1,
           CerNum: '',
           StandardUnit: '',
           StandVal: '',
           Uncertainty: '',
-          EffectDate: '',
+          EffectDate: new Date(),
+          StanDevice: '',
+          InstrumentNo: ''
         }, {
           value: 2,
           CerNum: '',
           StandardUnit: '',
           StandVal: '',
           Uncertainty: '',
-          EffectDate: '',
+          EffectDate: new Date(),
+          StanDevice: '',
+          InstrumentNo: ''
         }, {
           value: 3,
           CerNum: '',
           StandardUnit: '',
           StandVal: '',
           Uncertainty: '',
-          EffectDate: '',
+          EffectDate: new Date(),
+          StanDevice: '',
+          InstrumentNo: ''
         }],
         //报警误差
-        alerValForm: {
-          AlertFunction: '',
-          Value1: '',
-          Value2: '',
-          Value3: '',
-          ActionValue: ''
-        },
         alerValData: [{
-          AlertFunction: '',
+          AlertFunc: [],
+          AlertFunction: [],
           Value1: '',
           Value2: '',
           Value3: '',
-          ActionValue: ''
+          ActionValue: '',
+          SureValue: '0',
+          MaxValue: '0',
+          AllowValue: '0'
         }, {
-          AlertFunction: '',
+          AlertFunc: [],
+          AlertFunction: [],
           Value1: '',
           Value2: '',
           Value: '',
-          ActionValue: ''
+          ActionValue: '',
+          SureValue: '0',
+          MaxValue: '0',
+          AllowValue: '0'
         }],
         AlertFunctionSlect: '',
         AlertFunctionOptions: [{
@@ -504,20 +542,14 @@
           label: '不正常'
         }],
         //示值误差及响应时间
-        deviationForm: {
-          GasValue: '',
-          Value1: '',
-          Value2: '',
-          Value3: '',
-          AvgValue: '',
-          Deviation: ''
-        },
         deviationData: [{
           GasValue: '',
           Value1: '',
           Value2: '',
           Value3: '',
           AvgValue: '',
+          DeviationAbs: '0',
+          DeviationRelative: '0',
           Deviation: ''
         }, {
           GasValue: '',
@@ -525,6 +557,8 @@
           Value2: '',
           Value3: '',
           AvgValue: '',
+          DeviationAbs: '0',
+          DeviationRelative: '0',
           Deviation: ''
         }, {
           GasValue: '',
@@ -532,6 +566,8 @@
           Value2: '',
           Value3: '',
           AvgValue: '',
+          DeviationAbs: '0',
+          DeviationRelative: '0',
           Deviation: ''
         }],
         //响应时间
@@ -573,18 +609,6 @@
           RepeatValue: ''
         }],
         //漂移
-        ShiftData: {
-          ValueType: '',
-          value0: '',
-          Value1: '',
-          Value2: '',
-          Value3: '',
-          Value4: '',
-          Value5: '',
-          Value6: '',
-          ZeroValue: '',
-          ShowValue: ''
-        },
         ShiftData: [{
           ValueType: '零点',
           value0: '',
@@ -616,7 +640,7 @@
     },
     created() {
       this.serviceId = this.$route.params.opera;
-      this.getDictOptions();
+      //this.getDictOptions();
       console.log(this.serviceId);
       if (this.serviceId != 'add' && this.serviceId > 0) {
         this.formData.Id = this.serviceId;
@@ -629,7 +653,24 @@
       initDatas() {
         if (this.formData.Id) {
           api.getEntity(this.formData.Id, this.$axios).then(res => {
-            this.formData = res.data;
+            console.log("------res------", res.data)
+            this.formData = res.data.mainitem;
+            this.alerValData = res.data.alvalitem;
+            for (var i = 0; i < this.alerValData.length; i++) {
+              if (this.alerValData[i].AlertFunction != "") {
+                this.alerValData[i].AlertFunc = this.alerValData[i].AlertFunction
+              }
+            }
+            console.log("---------this.alerValData-----",this.alerValData)
+            this.certificateData = res.data.ceritem;
+            this.certificateDataAll = res.data.ceritem;
+            this.formData.StanDevice = this.certificateDataAll[0].StanDevice
+            this.formCertificateData = this.certificateDataAll[3]
+            this.deviationData = res.data.deviitem;
+            this.responseTimeData = res.data.responitem;
+            this.RepeatData = res.data.repeatitem;
+            this.ShiftData = res.data.shiftitem;
+            console.log("----------shiftdata---",this.ShiftData)
           }).catch(err => {
             console.error(err)
           });
@@ -656,8 +697,64 @@
         })
       },
 
+      getDeValueAvg(row) {
+        var divisor = 0
+        var sum = 0
+        if (row.Value1 !== '' && parseInt(row.Value1) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value1)
+        }
+        if (row.Value2 !== '' && parseInt(row.Value2) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value2)
+        }
+        if (row.Value3 !== '' && parseInt(row.Value3) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value3)
+        }
+        if (divisor !== 0) {
+          row.AvgValue = (sum / divisor).toFixed(2)
+        } else {
+          row.AvgValue = '0'
+        }
+      },
+      getRepeValueAvg(row) {
+        var divisor = 0
+        var sum = 0
+        if (row.Value1 !== '' && parseInt(row.Value1) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value1)
+        }
+        if (row.Value2 !== '' && parseInt(row.Value2) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value2)
+        }
+        if (row.Value3 !== '' && parseInt(row.Value3) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value3)
+        }
+        if (row.Value4 !== '' && parseInt(row.Value4) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value4)
+        }
+        if (row.Value5 !== '' && parseInt(row.Value5) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value5)
+        }
+        if (row.Value6 !== '' && parseInt(row.Value6) !== 0) {
+          divisor++
+          sum = sum + parseInt(row.Value6)
+        }
+        if (divisor !== 0) {
+          row.AvgValue = (sum / divisor).toFixed(2)
+        } else {
+          row.AvgValue = '0'
+        }
+      },
+
       //保存信息
       saveEntity() {
+        console.log("------this.formData.Id----", this.formData.Id)
         this.$refs['EntityForm'].validate((valid) => {
           if (valid) {
             if (!this.formData.Id) {
@@ -671,120 +768,58 @@
           }
         })
       },
-      //添加数据
+      //添加数据
       addEntityMain() {
         console.log("-------this.formdata---", this.formData)
-        this.addEntityCertificate();
-        // api.addEntity(this.formData, this.$axios).then(res => {
-        //   if (res.data.code === 0) {
-        //     //保存成功后,初始化数据,变成修改
-        //     this.formData.Id = res.data.item;
-        //     this.initDatas();
-        //     this.addEntityCertificate();
-        //   } else {
-        //     this.$message({
-        //       type: 'warning',
-        //       message: res.data.message
-        //     });
-        //   }
-        // }).catch(err => {
-        //   console.error(err)
-        // });
-      },
-      //添加证书数据
-      addEntityCertificate() {
-        this.formCertificateData = Object.assign(this.formCertificateData, this.certificateData)
-        console.log("--------cer=-----",this.formCertificateData)
-        api.addEntity(this.certificateData, this.$axios, 1).then(res => {
-          if (res.data.code === 0) {
-            //保存成功后,初始化数据,变成修改
-            //this.initDatas();
-            //this.addEntityAlertVal();
-          } else {
-            this.$message({
-              type: 'warning',
-              message: res.data.message
-            });
-          }
-        }).catch(err => {
-          console.error(err)
-        });
-      },
-      //添加报警数据
-      addEntityAlertVal() {
-        api.addEntity(this.alerValData, this.$axios).then(res => {
-          if (res.data.code === 0) {
-            //保存成功后,初始化数据,变成修改
-            this.initDatas();
-            this.addEntityDeviation();
-          } else {
-            this.$message({
-              type: 'warning',
-              message: res.data.message
-            });
-          }
-        }).catch(err => {
-          console.error(err)
-        });
-      },
-      //添加示值误差数据
-      addEntityDeviation() {
-        api.addEntity(this.deviationData, this.$axios).then(res => {
-          if (res.data.code === 0) {
-            //保存成功后,初始化数据,变成修改
-            this.initDatas();
-            this.addEntityResponseTime();
-          } else {
-            this.$message({
-              type: 'warning',
-              message: res.data.message
-            });
-          }
-        }).catch(err => {
-          console.error(err)
-        });
-      },
-      //添加响应时间数据
-      addEntityResponseTime() {
-        api.addEntity(this.responseTimeData, this.$axios).then(res => {
-          if (res.data.code === 0) {
-            //保存成功后,初始化数据,变成修改
-            this.initDatas();
-            this.addEntityRepeat();
-          } else {
-            this.$message({
-              type: 'warning',
-              message: res.data.message
-            });
+        for (var i = 0; i < this.certificateData.length; i++) {
+          this.certificateData[i].StanDevice = this.formData.StanDevice
+        }
+        for (var i = 0; i < this.alerValData.length; i++) {
+          if (this.alerValData[i].AlertFunc.length != 0) {
+            this.alerValData[i].AlertFunction = this.alerValData[i].AlertFunc[0]
           }
-        }).catch(err => {
-          console.error(err)
-        });
-      },
-      //添加重复性数据
-      addEntityRepeat() {
-        api.addEntity(this.RepeatData, this.$axios).then(res => {
+        }
+        this.alerValData.ActionValue = parseInt(this.alerValData.ActionValue)
+        this.alerValData.Value1 = parseInt(this.alerValData.Value1)
+        this.alerValData.Value2 = parseInt(this.alerValData.Value2)
+        this.alerValData.Value3 = parseInt(this.alerValData.Value3)
+        this.deviationData.GasValue = parseInt(this.deviationData.GasValue)
+        this.deviationData.Deviation = parseInt(this.deviationData.Deviation)
+        this.responseTimeData.GasValue = parseInt(this.responseTimeData.GasValue)
+        this.responseTimeData.Value1 = parseInt(this.responseTimeData.Value1)
+        this.responseTimeData.Value2 = parseInt(this.responseTimeData.Value2)
+        this.responseTimeData.Value3 = parseInt(this.responseTimeData.Value3)
+        this.responseTimeData.Deviation = parseInt(this.responseTimeData.Deviation)
+        this.RepeatData.GasValue = parseInt(this.RepeatData.GasValue)
+        this.RepeatData.RepeatValue = parseInt(this.RepeatData.RepeatValue)
+        this.ShiftData.Value1 = parseInt(this.ShiftData.Value1)
+        this.ShiftData.Value2 = parseInt(this.ShiftData.Value2)
+        this.ShiftData.Value3 = parseInt(this.ShiftData.Value3)
+        this.ShiftData.Value4 = parseInt(this.ShiftData.Value4)
+        this.ShiftData.Value5 = parseInt(this.ShiftData.Value5)
+        this.ShiftData.Value6 = parseInt(this.ShiftData.Value6)
+        this.ShiftData.ZeroValue = parseInt(this.ShiftData.ZeroValue)
+        this.ShiftData.ShowValue = parseInt(this.ShiftData.ShowValue)
+        let allform = {
+          BenMainform: this.formData,
+          CertiArrayList: this.certificateData, //添加证书数据
+          AlertValArrayList: this.alerValData, //添加报警数据
+          DeviationArrayList: this.deviationData, //添加示值误差数据
+          ResponTimeArrayList: this.responseTimeData, //添加响应时间数据
+          RepeatArrayList: this.RepeatData, //添加重复性数据
+          ShiftArrayList: this.ShiftData, //添加漂移数据
+        }
+        allform = Object.assign(allform, this.formCertificateData)
+        console.log("---------allform", allform)
+        api.addEntity(allform, this.$axios).then(res => {
           if (res.data.code === 0) {
             //保存成功后,初始化数据,变成修改
+            this.formData.Id = res.data.item;
             this.initDatas();
-            this.addEntityShift();
-          } else {
             this.$message({
-              type: 'warning',
+              type: 'success',
               message: res.data.message
             });
-          }
-        }).catch(err => {
-          console.error(err)
-        });
-      },
-      //添加漂移数据
-      addEntityShift() {
-        api.addEntity(this.ShiftData, this.$axios).then(res => {
-          if (res.data.code === 0) {
-            //保存成功后,初始化数据,变成修改
-            this.initDatas();
-            this.addEntityAlertVal()
           } else {
             this.$message({
               type: 'warning',
@@ -796,8 +831,49 @@
         });
       },
 
+
       updateEntity() {
-        api.updateEntity(this.formData.Id, this.formData, this.$axios).then(res => {
+        console.log("------updatethis.formData.Id----", this.formData.Id)
+        for (var i = 0; i < this.certificateData.length; i++) {
+          this.certificateData[i].StanDevice = this.formData.StanDevice
+        }
+        for (var i = 0; i < this.alerValData.length; i++) {
+          if (this.alerValData[i].AlertFunc.length != 0) {
+            this.alerValData[i].AlertFunction = this.alerValData[i].AlertFunc[0]
+          }
+        }
+        this.alerValData.ActionValue = parseInt(this.alerValData.ActionValue)
+        this.alerValData.Value1 = parseInt(this.alerValData.Value1)
+        this.alerValData.Value2 = parseInt(this.alerValData.Value2)
+        this.alerValData.Value3 = parseInt(this.alerValData.Value3)
+        this.deviationData.GasValue = parseInt(this.deviationData.GasValue)
+        this.deviationData.Deviation = parseInt(this.deviationData.Deviation)
+        this.responseTimeData.GasValue = parseInt(this.responseTimeData.GasValue)
+        this.responseTimeData.Value1 = parseInt(this.responseTimeData.Value1)
+        this.responseTimeData.Value2 = parseInt(this.responseTimeData.Value2)
+        this.responseTimeData.Value3 = parseInt(this.responseTimeData.Value3)
+        this.responseTimeData.Deviation = parseInt(this.responseTimeData.Deviation)
+        this.RepeatData.GasValue = parseInt(this.RepeatData.GasValue)
+        this.RepeatData.RepeatValue = parseInt(this.RepeatData.RepeatValue)
+        this.ShiftData.Value1 = parseInt(this.ShiftData.Value1)
+        this.ShiftData.Value2 = parseInt(this.ShiftData.Value2)
+        this.ShiftData.Value3 = parseInt(this.ShiftData.Value3)
+        this.ShiftData.Value4 = parseInt(this.ShiftData.Value4)
+        this.ShiftData.Value5 = parseInt(this.ShiftData.Value5)
+        this.ShiftData.Value6 = parseInt(this.ShiftData.Value6)
+        this.ShiftData.ZeroValue = parseInt(this.ShiftData.ZeroValue)
+        this.ShiftData.ShowValue = parseInt(this.ShiftData.ShowValue)
+        let allform = {
+          BenMainform: this.formData,
+          CertiArrayList: this.certificateData, //添加证书数据
+          AlertValArrayList: this.alerValData, //添加报警数据
+          DeviationArrayList: this.deviationData, //添加示值误差数据
+          ResponTimeArrayList: this.responseTimeData, //添加响应时间数据
+          RepeatArrayList: this.RepeatData, //添加重复性数据
+          ShiftArrayList: this.ShiftData, //添加漂移数据
+        }
+        allform = Object.assign(allform, this.formCertificateData)
+        api.updateEntity(this.formData.Id, allform, this.$axios).then(res => {
           if (res.data.code === 0) {
             //保存成功后,初始化数据,变成修改
             this.initDatas();