123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- package service
-
- import (
- "encoding/json"
- "fmt"
- "strconv"
- "strings"
- "sws_xcx/models"
- "sws_xcx/utils"
-
- "github.com/jinzhu/gorm"
- )
-
- type CheckRecordService struct {
- rdb *gorm.DB
- wdb *gorm.DB
- }
-
- func NewCheckRecordService() *CheckRecordService {
- return &CheckRecordService{
- rdb: ReadDB(),
- wdb: WriteDB(),
- }
- }
-
- func (s *CheckRecordService) GetCheckRecordByAcc(deviceId uint64, acc int) (record models.CheckRecord, err error) {
- record = models.CheckRecord{}
- err = s.rdb.Model(&record).Where("device_id = ? and acc = ?", deviceId, acc).First(&record).Error
- if err != nil && err == gorm.ErrRecordNotFound {
- err = nil
- }
-
- return
- }
-
- func (s *CheckRecordService) GetCheckRecordList(pageNum, pageSize int, userid uint64) (vos []models.AppCheckRecordVO, total int, err error) {
- offset := (pageNum - 1) * pageSize
- records := make([]*models.CheckRecord, pageSize)
- err = s.rdb.Model(&models.CheckRecord{}).Where("user_id= ? and delete_flag = ?", userid, 0).Count(&total).Order("id desc").Offset(offset).Limit(pageSize).Find(&records).Error
- if len(records) > 0 {
- is := NewCheckItemService()
- cnItems, err1 := is.GetCheckItems("cn", "1")
- if err1 != nil {
- utils.ErrorLog("GetCheckItems err:%v ", err1)
- }
- mcn := make(map[int]models.CheckItem, len(cnItems))
- for _, item := range cnItems {
- mcn[item.Id] = *item
- }
-
- vos = make([]models.AppCheckRecordVO, len(records))
- for i, r := range records {
- vo := models.AppCheckRecordVO{}
- vo.CheckRecordId = r.Id
- vo.UserId = r.UserId
- if r.UserId > 0 {
- vo.Bind = 1
- }
- vo.CheckDate = models.Time(r.Ctime)
- vo.View = r.View
- vo.AlertCount = 0
- //vo.AlertGrade = 0
-
- if r.AlertItemIds != "" {
- ids := strings.Split(r.AlertItemIds, ",")
- names := make([]string, len(ids))
- for j, id := range ids {
-
- ii, _ := strconv.Atoi(id)
- if item, ok := mcn[ii]; ok {
- names[j] = item.NameCn
- }
-
- }
- vo.AlertItems = names
- vo.AlertCount = len(ids)
- }
- vo.NormalCount = len(cnItems) - vo.AlertCount
-
- vos[i] = vo
- }
-
- }
-
- return
- }
-
- func (s *CheckRecordService) GetCheckRecordItemReport(dataNum, itemNum int, userid uint64) (reports []*models.AppCheckRecordItemReportVO, err error) {
-
- item, err := NewCheckItemService().GetCheckItemByNumber(itemNum, "cn", "1")
- if err != nil {
- return
- }
- if item.Id == 0 {
- err = fmt.Errorf("系统无此检查项目 num:%v", itemNum)
- return
- }
-
- var items []*models.CheckRecordItem
-
- err = s.rdb.Raw("select i.* from check_record_item as i inner join check_record as c on i.check_id=c.id where i.check_item_id = ? and c.user_id = ? and c.delete_flag=0", item.Id, userid).Order("id desc").Limit(dataNum).Scan(&items).Error
-
- if len(items) > 0 {
- var scopes []*models.CheckItemScopeVO
- json.Unmarshal([]byte(item.ScopeList), &scopes)
- reports = make([]*models.AppCheckRecordItemReportVO, len(items))
- for i, ci := range items {
- report := models.AppCheckRecordItemReportVO{}
- report.ID = item.CheckItemNumber
- report.CheckValueIndex = ci.CheckValueIndex
- report.Unit = item.Unit
- report.Date = models.Time(ci.Ctime)
- for _, scope := range scopes {
- if scope.Index == ci.CheckValueIndex {
- if scope.Num != "" {
- report.Value = scope.Num
- } else {
- report.Value = scope.Value
- }
- }
- }
- reports[i] = &report
- }
- }
-
- return
- }
-
- func (s *CheckRecordService) CreateCheckRecord(checkRecord *models.CheckRecord) error {
- return s.wdb.Model(checkRecord).Create(checkRecord).Error
- }
-
- func (s *CheckRecordService) CreateCheckRecordItem(checkRecordItem *models.CheckRecordItem) error {
- return s.wdb.Model(checkRecordItem).Create(checkRecordItem).Error
- }
-
- func (s *CheckRecordService) UpdateCheckRecordAlertItems(id int64, alertItemIds string) error {
- return s.wdb.Model(&models.CheckRecord{}).Where("id = ?", id).Update("alert_item_ids", alertItemIds).Error
- }
-
- func (s *CheckRecordService) GetCheckRecordItems(recordId int64) (recordItems []*models.CheckRecordItem, err error) {
- err = s.rdb.Model(&models.CheckRecordItem{}).Where("check_id = ?", recordId).Find(&recordItems).Error
- return
- }
-
- func (s *CheckRecordService) GetCheckRecordById(id int64) (record models.CheckRecord, err error) {
-
- err = s.rdb.Model(&record).Where("id = ?", id).First(&record).Error
- return
- }
|