3
2
Răsfoiți Sursa

设备统计

lining 6 ani în urmă
părinte
comite
f8434830d4

+ 11 - 0
src/dashoo.cn/backend/api/business/devicestatistics/devicestatistics.go

@@ -0,0 +1,11 @@
+package devicestatistics
+
+type DeviceStatistics struct {
+	DeviceName  string `xorm:"VARCHAR(50)"` //设备名称
+	DeviceQty   int    `xorm:"INT(11)"`     //客户编码
+	WaitMonth   int    `xorm:"INT(11)"`     // 本月待检
+	FinishMonth int    `xorm:"INT(11)"`     //本月检测
+	WaitYear    int    `xorm:"INT(11)"`     // 本年待检
+	FinishYear  int    `xorm:"INT(11)"`     //全年检测
+	PassRate    float64                       // 合格率
+}

+ 38 - 0
src/dashoo.cn/backend/api/business/devicestatistics/devicestatisticsService.go

@@ -0,0 +1,38 @@
+package devicestatistics
+
+import (
+	"github.com/go-xorm/xorm"
+	. "dashoo.cn/backend/api/mydb"
+	"strconv"
+)
+
+type result struct {
+	counts string
+}
+
+type DeviceStatisticsService struct {
+	MyServiceBase
+}
+
+func GetDeviceStatisticsService(xormEngine *xorm.Engine) *DeviceStatisticsService {
+	s := new(DeviceStatisticsService)
+	s.DBE = xormEngine
+	return s
+}
+
+//本月检测
+func (s *DeviceStatisticsService) GetCountsByDate(tablename, where string) (total int) {
+	var resultsSlice []map[string][]byte
+	var total1 int64
+	sql := `select count(*) As counts from ` + tablename + ` where ` + where
+	resultsSlice, _ = s.DBE.Query(sql)
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total1, _ = strconv.ParseInt(string(value), 10, 64)
+			break
+		}
+	}
+	return int(total1)
+}
+

+ 218 - 0
src/dashoo.cn/backend/api/controllers/lims/devicestatistics.go

@@ -0,0 +1,218 @@
+package lims
+
+import (
+	"dashoo.cn/backend/api/business/devicestatistics"
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/utils"
+	"fmt"
+	"strconv"
+	"time"
+)
+
+type DeviceStatisticsController struct {
+	BaseController
+}
+
+
+
+// @Title 获取列表
+// @Description get user by token
+// @Success 200 {object}
+// @router /list [get]
+func (this *DeviceStatisticsController) GetEntityList() {
+	var devicelist []devicestatistics.DeviceStatistics
+	svc := devicestatistics.GetDeviceStatisticsService(utils.DBE)
+	fromdate := GetFirstDateOfMonth(time.Now()).Format("2006-01-02 15:04:05")
+	todate := GetLastDateOfMonth(time.Now()).Format("2006-01-02") + " 23:59:59"
+
+	where := "(CreateOn BETWEEN '" + fromdate + "' AND '" + todate + "') and CheckResult != ''"
+	fromdateyear := strconv.Itoa(time.Now().Year()) + "-01-01 00:00:00"
+	todateyear := strconv.Itoa(time.Now().Year()) + "-12-31 23:59:59"
+	whereYno := "(CreateOn BETWEEN '" + fromdateyear + "' AND '" + todateyear + "') and CheckResult='×'"
+	whereY := "(CreateOn BETWEEN '" + fromdateyear + "' AND '" + todateyear + "') and CheckResult='○'"
+
+	//  防雷装置(等电位)
+	var deviceEQ devicestatistics.DeviceStatistics
+	totalYearNo := svc.GetCountsByDate(this.User.AccCode + LimsReportEquipotentName, whereYno)
+	totalYear := svc.GetCountsByDate(this.User.AccCode + LimsReportEquipotentName, whereY)
+	num := svc.GetCountsByDate(this.User.AccCode + LimsReportEquipotentName, where)
+	whereN := "TemplateTypeId=187"
+	numEQ := svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceEQ.DeviceName = "防雷装置(等电位)"
+	deviceEQ.DeviceQty = int(numEQ)
+	deviceEQ.FinishMonth = int(num)
+	deviceEQ.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceEQ.FinishYear != 0 {
+		deviceEQ.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceEQ)
+
+	//  防雷装置
+	var deviceLPT devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportLightProtectName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportLightProtectName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportLightProtectName, where)
+	whereN ="TemplateTypeId=286"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceLPT.DeviceName = "防雷装置"
+	deviceLPT.DeviceQty = numEQ
+	deviceLPT.FinishMonth = int(num)
+	deviceLPT.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceLPT.FinishYear != 0 {
+		deviceLPT.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceLPT)
+
+	//  漏电保护器
+	var deviceLP devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportLeakProtectName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportLeakProtectName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportLeakProtectName, where)
+	whereN ="TemplateTypeId=181"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceLP.DeviceName = "漏电保护器"
+	deviceLP.DeviceQty = numEQ
+	deviceLP.FinishMonth = int(num)
+	deviceLP.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceLP.FinishYear != 0 {
+		deviceLP.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceLP)
+
+	//  电气接地
+	var deviceEG devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportElecGroundName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportElecGroundName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportElecGroundName, where)
+	whereN ="TemplateTypeId=179"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceEG.DeviceName = "电气接地"
+	deviceEG.DeviceQty = numEQ
+	deviceEG.FinishMonth = int(num)
+	deviceEG.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceEG.FinishYear != 0 {
+		deviceEG.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceEG)
+
+	whereYno = "(CreateOn BETWEEN '" + fromdateyear + "' AND '" + todateyear + "') and CheckResult LIKE '%不合格%' "
+	whereY = "(CreateOn BETWEEN '" + fromdateyear + "' AND '" + todateyear + "') and CheckResult LIKE '%合格%'"
+	//阻火器 LimsReportZuhq
+	var deviceZHQ devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportZuhqName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportZuhqName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportZuhqName, where)
+	whereN ="TemplateTypeId=156"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceZHQ.DeviceName = "阻火器"
+	deviceZHQ.DeviceQty = numEQ
+	deviceZHQ.FinishMonth = int(num)
+	deviceZHQ.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceZHQ.FinishYear != 0 {
+		deviceZHQ.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceZHQ)
+
+	// 呼吸阀 LimsReportHuxf
+	var deviceHXF devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportHuxfName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportHuxfName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportHuxfName, where)
+	whereN ="TemplateTypeId=183"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceHXF.DeviceName = "呼吸阀"
+	deviceHXF.DeviceQty = numEQ
+	deviceHXF.FinishMonth = int(num)
+	deviceHXF.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceHXF.FinishYear != 0 {
+		deviceHXF.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceHXF)
+
+	// 液压安全阀 LimsReportYeyaqf
+	var deviceYYF devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportYeyaqfName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportYeyaqfName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportYeyaqfName, where)
+	whereN ="TemplateTypeId=154"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceYYF.DeviceName = "液压安全阀"
+	deviceYYF.DeviceQty = numEQ
+	deviceYYF.FinishMonth = int(num)
+	deviceYYF.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceYYF.FinishYear != 0 {
+		deviceYYF.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceYYF)
+
+	// 空气泡沫产生器 LimsReportAirFoamGenerator
+	var deviceKQPM devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportKqpmName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportKqpmName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportKqpmName, where)
+	whereN ="TemplateTypeId=189"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceKQPM.DeviceName = "空气泡沫产生器"
+	deviceKQPM.DeviceQty = numEQ
+	deviceKQPM.FinishMonth = int(num)
+	deviceKQPM.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceKQPM.FinishYear != 0 {
+		deviceKQPM.PassRate,_ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo) + float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceKQPM)
+
+	// 游梁式抽油机 LimsReportBeamPumpingUnits
+	var deviceYL devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportBeamPumpingUnitName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportBeamPumpingUnitName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportBeamPumpingUnitName, where)
+	whereN ="TemplateTypeId=141"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceYL.DeviceName = "游梁式抽油机"
+	deviceYL.DeviceQty = numEQ
+	deviceYL.FinishMonth = int(num)
+	deviceYL.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceYL.FinishYear != 0 {
+		deviceYL.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceYL)
+
+	// 无游梁式抽油机 LimsReportNoBeamPumpingUnit
+	var deviceWYL devicestatistics.DeviceStatistics
+	totalYearNo = svc.GetCountsByDate(this.User.AccCode + LimsReportNoBeamPumpingUnitName, whereYno)
+	totalYear = svc.GetCountsByDate(this.User.AccCode + LimsReportNoBeamPumpingUnitName, whereY)
+	num = svc.GetCountsByDate(this.User.AccCode + LimsReportNoBeamPumpingUnitName, where)
+	whereN ="TemplateTypeId=173"
+	numEQ = svc.GetCountsByDate(this.User.AccCode + LimsCheckEquipmentListName, whereN)
+	deviceWYL.DeviceName = "无游梁式抽油机"
+	deviceWYL.DeviceQty = numEQ
+	deviceWYL.FinishMonth = int(num)
+	deviceWYL.FinishYear = int(totalYearNo) + int(totalYear)
+	if deviceWYL.FinishYear != 0 {
+		deviceWYL.PassRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", (float64(totalYear)/(float64(totalYearNo)+float64(totalYear)))*100), 64)
+	}
+	devicelist = append(devicelist, deviceWYL)
+
+
+
+	var datainfo ErrorDataInfo
+	datainfo.Item = devicelist
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+
+}
+
+//获取传入的时间所在月份的第一天,即某月第一天的0点。如传入time.Now(), 返回当前月份的第一天0点时间。
+
+func GetFirstDateOfMonth(d time.Time) time.Time {
+	d = d.AddDate(0, 0, -d.Day() + 1)
+	return GetZeroTime(d)
+}
+//获取传入的时间所在月份的最后一天,即某月最后一天的0点。如传入time.Now(), 返回当前月份的最后一天0点时间。
+func GetLastDateOfMonth(d time.Time) time.Time {
+	return GetFirstDateOfMonth(d).AddDate(0, 1, -1)
+}
+//获取某一天的0点时间
+func GetZeroTime(d time.Time) time.Time {
+	return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
+}

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

@@ -589,6 +589,12 @@ func init() {
 				&rtx.RtxController{},
 			),
 		),
+		//设备统计
+		beego.NSNamespace("/devicestatistics",
+			beego.NSInclude(
+				&lims.DeviceStatisticsController{},
+			),
+		),
 	)
 	beego.AddNamespace(ns)
 }

+ 9 - 0
src/dashoo.cn/frontend_web/src/api/lims/secondcenter.js

@@ -0,0 +1,9 @@
+export default {
+  getList (params, myAxios) {
+    return myAxios({
+      url: '/devicestatistics/list',
+      method: 'GET',
+      params: params
+    })
+  }
+}

+ 3 - 3
src/dashoo.cn/frontend_web/src/pages/lims/secondcenter/index.vue

@@ -19,12 +19,12 @@
     data () {
       return {
         activeIndex: '1'
-      };
+      }
     },
     methods: {
-      handleSelect(key, keyPath) {
+      handleSelect (key, keyPath) {
         this.activeIndex = key
       }
     }
-  };
+  }
 </script>

+ 93 - 136
src/dashoo.cn/frontend_web/src/pages/lims/secondcenter/towLevelCenter.vue

@@ -32,104 +32,69 @@
     </el-card>
 
     <el-card class="box-card">
-      <el-table
-        :data="tableData"
-        style="width: 100%"
-        stripe>
-        <el-table-column
-          prop="address"
-          label="检测地点"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="设备总量"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="本月待检"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="本月检测"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="全年待检"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="全年已检"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="全年检测"
-        >
-        </el-table-column>
-
-        <el-table-column
-          prop="address"
-          label="合格率"
-        >
-        </el-table-column>
-      </el-table>
-    </el-card>
+      <el-table :data="tableData" style="width: 100%" stripe>
+        <el-table-column prop="DeviceName" label="设备名称" ></el-table-column>
 
-    <el-card class="box-card" style="margin-top: 5px">
+        <el-table-column prop="DeviceQty" label="设备总量" ></el-table-column>
+
+        <el-table-column label="本月待检"></el-table-column>
+
+        <el-table-column prop="FinishMonth" label="本月检测" ></el-table-column>
 
-      <el-table
-        :data="tableData"
-        style="width: 100%"
-        stripe>
-        <el-table-column
-          prop="address"
-          label="检测地点">
-        </el-table-column>
-
-        <el-table-column
-          prop="name"
-          label="去年设备总量"
-          width="180">
-        </el-table-column>
-
-        <el-table-column
-          prop="name"
-          label="今年设备总量"
-          width="180">
-        </el-table-column>
-
-        <el-table-column
-          prop="name"
-          label="变化量"
-          width="180">
-        </el-table-column>
-
-        <el-table-column
-          prop="name"
-          label="去年检测率"
-          width="180">
-        </el-table-column>
-
-        <el-table-column
-        prop="name"
-        label="今年检测率"
-        width="180">
-        </el-table-column>
+        <el-table-column label="全年待检"></el-table-column>
 
+        <el-table-column label="全年已检"></el-table-column>
+
+        <el-table-column prop="FinishYear" label="全年检测"></el-table-column>
+
+        <el-table-column prop="PassRate" label="合格率(%)"></el-table-column>
       </el-table>
     </el-card>
 
+    <!--<el-card class="box-card" style="margin-top: 5px">-->
+
+      <!--<el-table-->
+        <!--:data="tableData"-->
+        <!--style="width: 100%"-->
+        <!--stripe>-->
+        <!--<el-table-column-->
+          <!--prop="address"-->
+          <!--label="检测地点">-->
+        <!--</el-table-column>-->
+
+        <!--<el-table-column-->
+          <!--prop="name"-->
+          <!--label="去年设备总量"-->
+          <!--width="180">-->
+        <!--</el-table-column>-->
+
+        <!--<el-table-column-->
+          <!--prop="name"-->
+          <!--label="今年设备总量"-->
+          <!--width="180">-->
+        <!--</el-table-column>-->
+
+        <!--<el-table-column-->
+          <!--prop="name"-->
+          <!--label="变化量"-->
+          <!--width="180">-->
+        <!--</el-table-column>-->
+
+        <!--<el-table-column-->
+          <!--prop="name"-->
+          <!--label="去年检测率"-->
+          <!--width="180">-->
+        <!--</el-table-column>-->
+
+        <!--<el-table-column-->
+        <!--prop="name"-->
+        <!--label="今年检测率"-->
+        <!--width="180">-->
+        <!--</el-table-column>-->
+
+      <!--</el-table>-->
+    <!--</el-card>-->
+
     <el-card class="box-card" style="margin-top: 5px">
       <div slot="header">
         <legend style="color:#436EEE"></legend>
@@ -149,17 +114,9 @@
 
 </template>
 
-<style>
-  .el-table .warning-row {
-    background: oldlace;
-  }
-
-  .el-table .success-row {
-    background: #f0f9eb;
-  }
-</style>
-
 <script>
+  import api from '@/api/lims/secondcenter'
+
   const chartData = [
     { year: '1951 年', sales: 38 },
     { year: '1952 年', sales: 52 },
@@ -168,13 +125,13 @@
     { year: '1958 年', sales: 48 },
     { year: '1959 年', sales: 38 },
     { year: '1960 年', sales: 38 },
-    { year: '1962 年', sales: 38 },
-  ];
+    { year: '1962 年', sales: 38 }
+  ]
 
   const scale = [{
     dataKey: 'sales',
-    tickInterval: 20,
-  }];
+    tickInterval: 20
+  }]
 
   const lineData = [
     { year: '1991', value: 3 },
@@ -185,22 +142,20 @@
     { year: '1996', value: 6 },
     { year: '1997', value: 7 },
     { year: '1998', value: 9 },
-    { year: '1999', value: 13 },
-  ];
+    { year: '1999', value: 13 }
+  ]
 
   const lineScale = [{
     dataKey: 'value',
-    min: 0,
-  },{
+    min: 0
+  },
+  {
     dataKey: 'year',
     min: 0,
-    max: 1,
-  }];
+    max: 1
+  }]
 
   export default {
-    created () {
-
-    },
     data () {
       return {
         formSearch: {
@@ -214,32 +169,34 @@
         lineData,
         lineScale,
         height: 400,
-        tableData: [{
-          precent: 70,
-          date: '2016-05-02',
-          name: 'A001',
-          address: '第一采油作业区',
-        }, {
-          precent: 60,
-          date: '2016-05-04',
-          name: 'B002',
-          address: '第二采油作业区'
-        }, {
-          precent: 66,
-          date: '2016-05-01',
-          name: 'C003',
-          address: '第三采油作业区',
-        }, {
-          precent: 80,
-          date: '2016-05-03',
-          name: 'D004',
-          address: '第四采油作业区'
-        }]
+        tableData: []
       }
     },
+    created () {
+      this.initData()
+    },
     methods: {
+      initData () {
+        let params = {
+        }
+        api.getList(params, this.$axios).then(res => {
+          this.tableData = res.data.item
+        }).catch(err => {
+          console.log(err)
+        })
+      },
       onSubmit () {
       }
     }
   }
 </script>
+
+<style>
+  .el-table .warning-row {
+    background: oldlace;
+  }
+
+  .el-table .success-row {
+    background: #f0f9eb;
+  }
+</style>