|
|
@@ -2,13 +2,15 @@ package equipment
|
|
|
|
|
|
import (
|
|
|
"dashoo.cn/micro_libary/request"
|
|
|
+ "database/sql"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"github.com/gogf/gf/frame/g"
|
|
|
"github.com/gogf/gf/os/gtime"
|
|
|
"github.com/gogf/gf/util/gconv"
|
|
|
- "lims_adapter/dao"
|
|
|
- "lims_adapter/model"
|
|
|
+ "lims_adapter/dao/equipment"
|
|
|
+ equipment2 "lims_adapter/model/equipment"
|
|
|
+ "lims_adapter/model/user"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
@@ -16,24 +18,24 @@ import (
|
|
|
|
|
|
// Service 设备
|
|
|
type Service struct {
|
|
|
- Dao *dao.BaseEquipmentQualificationDao
|
|
|
+ Dao *equipment.BaseEquipmentQualificationDao
|
|
|
Tenant string
|
|
|
}
|
|
|
|
|
|
// NewSrv 服务初始化
|
|
|
func NewSrv(tenant string) Service {
|
|
|
- return Service{Dao: dao.NewBaseEquipmentQualificationDao(tenant), Tenant: tenant}
|
|
|
+ return Service{Dao: equipment.NewBaseEquipmentQualificationDao(tenant), Tenant: tenant}
|
|
|
}
|
|
|
|
|
|
// AppointmentQualificationList 预约资格分页查询
|
|
|
-func (s Service) AppointmentQualificationList(req *model.QualificationListReq) ([]model.UserQualification, int, error) {
|
|
|
+func (s Service) AppointmentQualificationList(req *equipment2.QualificationListReq) ([]user.UserQualification, int, error) {
|
|
|
var current = req.Current
|
|
|
var size = req.Size
|
|
|
var enabled = req.Enabled
|
|
|
var instrumentId = req.InstrumentId
|
|
|
var reqType = req.Type
|
|
|
entity := s.Dao.DB.Model("base_user a")
|
|
|
- var userInfo []model.UserQualification
|
|
|
+ var userInfo []user.UserQualification
|
|
|
where := "a.Enabled = " + strconv.Itoa(enabled) + " and b.EquipmentId = " + strconv.Itoa(instrumentId)
|
|
|
|
|
|
if reqType == 1 { // 预约资格查询条件
|
|
|
@@ -43,7 +45,7 @@ func (s Service) AppointmentQualificationList(req *model.QualificationListReq) (
|
|
|
}
|
|
|
entity.LeftJoin("base_equipment_qualification b", "a.id = b.UserId").
|
|
|
Where(where)
|
|
|
- count, _:= entity.Count()
|
|
|
+ count, _ := entity.Count()
|
|
|
err := entity.Fields("a.Id, a.UserName, a.RealName, a.Mobile, b.Qualification, b.AuthorizeTime").
|
|
|
Page(current, size).Scan(&userInfo)
|
|
|
if err != nil {
|
|
|
@@ -53,13 +55,13 @@ func (s Service) AppointmentQualificationList(req *model.QualificationListReq) (
|
|
|
}
|
|
|
|
|
|
// AdvanceList 优先预约权资格列表查询
|
|
|
-func (s Service) AdvanceList(req *model.QualificationListReq) ([]model.UserQualification, int, error) {
|
|
|
+func (s Service) AdvanceList(req *equipment2.QualificationListReq) ([]user.UserQualification, int, error) {
|
|
|
var current = req.Current
|
|
|
var size = req.Size
|
|
|
var enabled = req.Enabled
|
|
|
var instrumentId = req.InstrumentId
|
|
|
entity := s.Dao.DB.Model("base_user a")
|
|
|
- var userInfo []model.UserQualification
|
|
|
+ var userInfo []user.UserQualification
|
|
|
entity.LeftJoin("base_equipment_qualification b", "a.id = b.UserId").
|
|
|
Where("a.Enabled = " + strconv.Itoa(enabled) + " and b.EquipmentId = " + strconv.Itoa(instrumentId))
|
|
|
count, _ := entity.Count()
|
|
|
@@ -72,7 +74,7 @@ func (s Service) AdvanceList(req *model.QualificationListReq) ([]model.UserQuali
|
|
|
}
|
|
|
|
|
|
// AddOrUpdateQualification 新增、修改预约资格名单;新增优先预约权名单
|
|
|
-func (s Service) AddOrUpdateQualification(req *model.AddOrUpdateQualification, userInfo request.UserInfo) (err error) {
|
|
|
+func (s Service) AddOrUpdateQualification(req *equipment2.AddOrUpdateQualification, userInfo request.UserInfo) (err error) {
|
|
|
entity := s.Dao.M
|
|
|
var instrumentId = req.InstrumentId
|
|
|
var ids = req.Ids
|
|
|
@@ -90,7 +92,7 @@ func (s Service) AddOrUpdateQualification(req *model.AddOrUpdateQualification, u
|
|
|
strconv.Itoa(v)
|
|
|
if qualification == 1 || qualification == 2 { // 预约资格
|
|
|
where += " and Qualification != 3"
|
|
|
- } else if qualification ==3 { // 优先预约权
|
|
|
+ } else if qualification == 3 { // 优先预约权
|
|
|
// 先判断是否有预约资格,没有则不更新操作
|
|
|
count, _ := s.Dao.DB.Model("base_equipment_qualification").Where("EquipmentId = " +
|
|
|
strconv.Itoa(instrumentId) + " and Qualification != 0" + " and UserId = " +
|
|
|
@@ -101,9 +103,9 @@ func (s Service) AddOrUpdateQualification(req *model.AddOrUpdateQualification, u
|
|
|
}
|
|
|
where += " and Qualification = 3"
|
|
|
}
|
|
|
- var qualificationInfo model.BaseEquipmentQualification
|
|
|
+ var qualificationInfo equipment2.BaseEquipmentQualification
|
|
|
entity.Where(where).Scan(&qualificationInfo)
|
|
|
- entity.Data(g.Map{"Id": qualificationInfo.Id,"EquipmentId": instrumentId, "UserId": v, "Qualification": qualification, "CreateOn": gtime.Now(),
|
|
|
+ entity.Data(g.Map{"Id": qualificationInfo.Id, "EquipmentId": instrumentId, "UserId": v, "Qualification": qualification, "CreateOn": gtime.Now(),
|
|
|
"AuthorizeTime": gtime.Now(), "CreateUserId": userInfo.Id, "CreateBy": userInfo.RealName}).Save()
|
|
|
|
|
|
}
|
|
|
@@ -120,10 +122,10 @@ func (s Service) AddOrUpdateQualification(req *model.AddOrUpdateQualification, u
|
|
|
}
|
|
|
|
|
|
// DeleteQualification 删除预约资格
|
|
|
-func (s Service) DeleteQualification(req *model.IdReq, info request.UserInfo) error {
|
|
|
+func (s Service) DeleteQualification(req *equipment2.IdReq, info request.UserInfo) error {
|
|
|
_, err := s.Dao.M.Update(g.Map{"Qualification": 0, "ModifiedOn": gtime.Now(),
|
|
|
- "ModifiedUserId": info.Id, "ModifiedBy": info.RealName}, "UserId = " + strconv.Itoa(req.UserId) +
|
|
|
- " and EquipmentId = " + strconv.Itoa(req.EquipmentId) + " and Qualification != 3")
|
|
|
+ "ModifiedUserId": info.Id, "ModifiedBy": info.RealName}, "UserId = "+strconv.Itoa(req.UserId)+
|
|
|
+ " and EquipmentId = "+strconv.Itoa(req.EquipmentId)+" and Qualification != 3")
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -131,7 +133,7 @@ func (s Service) DeleteQualification(req *model.IdReq, info request.UserInfo) er
|
|
|
}
|
|
|
|
|
|
// DeleteAdvance 删除优先预约权人员
|
|
|
-func (s Service) DeleteAdvance(req *model.IdReq) error {
|
|
|
+func (s Service) DeleteAdvance(req *equipment2.IdReq) error {
|
|
|
_, err := s.Dao.M.Delete("UserId = " + strconv.Itoa(req.UserId) +
|
|
|
" and EquipmentId = " + strconv.Itoa(req.EquipmentId) + " and Qualification = 3")
|
|
|
if err != nil {
|
|
|
@@ -141,7 +143,7 @@ func (s Service) DeleteAdvance(req *model.IdReq) error {
|
|
|
}
|
|
|
|
|
|
// SearchAdvanceTime 查看设备优先预约时间段
|
|
|
-func (s Service) SearchAdvanceTime(req *model.QualificationListReq) (advanceTime []model.BaseEquipmentAdvanceTime, count int, err error) {
|
|
|
+func (s Service) SearchAdvanceTime(req *equipment2.QualificationListReq) (advanceTime []equipment2.BaseEquipmentAdvanceTime, count int, err error) {
|
|
|
entity := s.Dao.DB.Model("base_equipment_advance_time")
|
|
|
err = entity.Where("EquipmentId = " + strconv.Itoa(req.InstrumentId)).Scan(&advanceTime)
|
|
|
count, _ = entity.CountColumn("1")
|
|
|
@@ -153,7 +155,7 @@ func (s Service) SearchAdvanceTime(req *model.QualificationListReq) (advanceTime
|
|
|
}
|
|
|
|
|
|
// AddAdvanceTime 添加设备优先预约时间段
|
|
|
-func (s Service) AddAdvanceTime(req *model.AdvanceTimeReq, info request.UserInfo) error {
|
|
|
+func (s Service) AddAdvanceTime(req *equipment2.AdvanceTimeReq, info request.UserInfo) error {
|
|
|
//for _, v := range domains {
|
|
|
// count, err := s.Dao.DB.Model("base_equipment_advance_time").Where("Week = '" + v.Week +
|
|
|
// "' and StartTime = '" + v.StartTime + "' and EndTime = '" + v.EndTime + "'").Count()
|
|
|
@@ -177,24 +179,24 @@ func (s Service) AddAdvanceTime(req *model.AdvanceTimeReq, info request.UserInfo
|
|
|
count, err := s.Dao.DB.Model("base_equipment_advance_time").Where("EquipmentId = " +
|
|
|
strconv.Itoa(req.EquipmentId) + " and Week = " + req.Week +
|
|
|
" and StartTime = '" + req.StartTime + "' and EndTime = '" + req.EndTime + "'").Count()
|
|
|
- if err != nil{
|
|
|
+ if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
if count > 0 {
|
|
|
return errors.New("该时间段已存在,请重新输入!")
|
|
|
}
|
|
|
week, _ := strconv.Atoi(req.Week)
|
|
|
- saveEntity := model.BaseEquipmentAdvanceTime{
|
|
|
- EquipmentId: req.EquipmentId,
|
|
|
- Week: week,
|
|
|
- StartTime: req.StartTime,
|
|
|
- EndTime: req.EndTime,
|
|
|
- CreateOn: gtime.Now(),
|
|
|
+ saveEntity := equipment2.BaseEquipmentAdvanceTime{
|
|
|
+ EquipmentId: req.EquipmentId,
|
|
|
+ Week: week,
|
|
|
+ StartTime: req.StartTime,
|
|
|
+ EndTime: req.EndTime,
|
|
|
+ CreateOn: gtime.Now(),
|
|
|
CreateUserId: gconv.Int(info.Id),
|
|
|
- CreateBy: info.RealName,
|
|
|
+ CreateBy: info.RealName,
|
|
|
}
|
|
|
_, err = s.Dao.DB.Model("base_equipment_advance_time").Insert(saveEntity)
|
|
|
- if err != nil{
|
|
|
+ if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
return nil
|
|
|
@@ -210,9 +212,9 @@ func (s Service) DeleteAdvanceTime(id int) error {
|
|
|
}
|
|
|
|
|
|
// AppointmentTime 设备预约时间段
|
|
|
-func (s Service) AppointmentTime(req *model.IdReq) error{
|
|
|
+func (s Service) AppointmentTime(req *equipment2.IdReq) error {
|
|
|
// 先查该人员的预约资格、优先使用权
|
|
|
- var qualificationInfo []model.BaseEquipmentQualification
|
|
|
+ var qualificationInfo []equipment2.BaseEquipmentQualification
|
|
|
s.Dao.DB.Model("base_equipment_qualification").Where("EquipmentId = " +
|
|
|
strconv.Itoa(req.EquipmentId)).Order("Qualification").Scan(&qualificationInfo)
|
|
|
// 如果是普通预约资格,筛选出周末时间段
|
|
|
@@ -220,8 +222,8 @@ func (s Service) AppointmentTime(req *model.IdReq) error{
|
|
|
// TODO 时间获取
|
|
|
}
|
|
|
// 如果有预约资格但没有优先使用权,查询优先使用权时间段
|
|
|
- if len(qualificationInfo) ==2 && qualificationInfo[1].Qualification == "3"{
|
|
|
- var appointmentInfo []model.BaseEquipmentAdvanceTime
|
|
|
+ if len(qualificationInfo) == 2 && qualificationInfo[1].Qualification == "3" {
|
|
|
+ var appointmentInfo []equipment2.BaseEquipmentAdvanceTime
|
|
|
s.Dao.DB.Model("base_equipment_advance_time").Where("EquipmentId = " +
|
|
|
strconv.Itoa(req.EquipmentId) + " and UserId").Scan(&appointmentInfo)
|
|
|
}
|
|
|
@@ -229,16 +231,16 @@ func (s Service) AppointmentTime(req *model.IdReq) error{
|
|
|
}
|
|
|
|
|
|
// SearchNoAppointment 查看不能预约时间段信息
|
|
|
-func (s Service) SearchNoAppointment(req *model.IdReq, info request.UserInfo) ([]model.NoReservationInfo, error) {
|
|
|
+func (s Service) SearchNoAppointment(req *equipment2.IdReq, info request.UserInfo) ([]equipment2.NoReservationInfo, error) {
|
|
|
// 普通资格限制周末时间
|
|
|
- var qualificationInfo []model.BaseEquipmentQualification
|
|
|
- var noAppointmentInfos []model.NoReservationInfo
|
|
|
+ var qualificationInfo []equipment2.BaseEquipmentQualification
|
|
|
+ var noAppointmentInfos []equipment2.NoReservationInfo
|
|
|
s.Dao.DB.Model("base_equipment_qualification").Where("EquipmentId = " +
|
|
|
strconv.Itoa(req.EquipmentId) + " and UserId = " +
|
|
|
strconv.Itoa(gconv.Int(info.Id))).Order("Qualification").Scan(&qualificationInfo)
|
|
|
if len(qualificationInfo) >= 1 && qualificationInfo[0].Qualification == "1" { // 只有普通预约资格,限制周末预约时间段
|
|
|
// 查询设备可预约时间段
|
|
|
- var equipmentInfo model.Instrument
|
|
|
+ var equipmentInfo equipment2.Instrument
|
|
|
s.Dao.DB.Model("instrument").Fields("BeginAt, EndAt").
|
|
|
Where("Id = " + strconv.Itoa(req.EquipmentId)).Scan(&equipmentInfo)
|
|
|
startTime := equipmentInfo.BeginAt
|
|
|
@@ -250,7 +252,7 @@ func (s Service) SearchNoAppointment(req *model.IdReq, info request.UserInfo) ([
|
|
|
noAppointmentInfos = append(saturdayTime, sundayTime...)
|
|
|
}
|
|
|
if len(qualificationInfo) == 1 && qualificationInfo[0].Qualification != "3" { // 没有优先预约权,限制优先预约时间段
|
|
|
- var advanceTimeList []model.BaseEquipmentAdvanceTime
|
|
|
+ var advanceTimeList []equipment2.BaseEquipmentAdvanceTime
|
|
|
s.Dao.DB.Model("base_equipment_advance_time").
|
|
|
Where("EquipmentId = " + strconv.Itoa(req.EquipmentId)).Scan(&advanceTimeList)
|
|
|
for _, v := range advanceTimeList {
|
|
|
@@ -266,17 +268,57 @@ func (s Service) SearchNoAppointment(req *model.IdReq, info request.UserInfo) ([
|
|
|
}
|
|
|
|
|
|
// ChangeInstrStauts 修改设备所属
|
|
|
-func (s Service) ChangeBelongs(req *model.IdReq) error{
|
|
|
+func (s Service) ChangeBelongs(req *equipment2.IdReq) error {
|
|
|
_, err := s.Dao.DB.Model("Instrument").
|
|
|
- Update("Belongs = " + req.Belongs, "Id = "+strconv.Itoa(req.EquipmentId))
|
|
|
+ Update("Belongs = "+req.Belongs, "Id = "+strconv.Itoa(req.EquipmentId))
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// GetUnitCount 查询设备计费
|
|
|
+func (s Service) GetUnitCount(instrumentId int) (rspInfo []equipment2.Instrument, err error) {
|
|
|
+ err = s.Dao.DB.Model("Instrument").Where("Id = ?", instrumentId).Scan(&rspInfo)
|
|
|
+ if err != nil {
|
|
|
+ return rspInfo, err
|
|
|
+ }
|
|
|
+ return rspInfo, nil
|
|
|
+}
|
|
|
+
|
|
|
+// UpdateUnifPrice 更新计费价格
|
|
|
+func (s Service) UpdateUnitfPrice(instrumentId, unitCount int) error {
|
|
|
+ _, err := s.Dao.DB.Model("Instrument").Update("unitCount = "+strconv.Itoa(unitCount), "Id = "+
|
|
|
+ strconv.Itoa(instrumentId))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// RateChange 优惠比例更新
|
|
|
+func (s Service) RateChange(InstrumentId, rate int) error {
|
|
|
+ _, err := s.Dao.DB.Model("Instrument").Update("Rate = "+strconv.Itoa(rate), "Id = "+
|
|
|
+ strconv.Itoa(InstrumentId))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// IsAdvance 是否有优先预约资格
|
|
|
+func (s Service) IsAdvance(id int32, instrumentId int) (isAdvance int, err error) {
|
|
|
+ equipmentQualification := equipment2.BaseEquipmentQualification{}
|
|
|
+ err = s.Dao.DB.Model("base_equipment_qualification").Where("UserId", id).
|
|
|
+ Where("Qualification", "3").Where("EquipmentId", instrumentId).Scan(&equipmentQualification)
|
|
|
+ if err == sql.ErrNoRows {
|
|
|
+ return 0, nil
|
|
|
+ }
|
|
|
+ return 1, nil
|
|
|
+}
|
|
|
+
|
|
|
// noReservationInfo 不可预约时间段处理 startTime开始时间 timeLong 时间间隔 Date 前端传入日期 week 星期几
|
|
|
-func noReservationInfo(startTime *gtime.Time, timeLong float64, Date string, week int) (noAppointmentInfo []model.NoReservationInfo) {
|
|
|
+func noReservationInfo(startTime *gtime.Time, timeLong float64, Date string, week int) (noAppointmentInfo []equipment2.NoReservationInfo) {
|
|
|
date, _ := gtime.StrToTime(Date, "Y-m-d")
|
|
|
// 获取当前星期对应的日期
|
|
|
day := GetDate(date, week)
|
|
|
@@ -285,29 +327,36 @@ func noReservationInfo(startTime *gtime.Time, timeLong float64, Date string, wee
|
|
|
// 开始时间
|
|
|
start_time := startTime.Add(time.Duration(i) * 30 * time.Minute)
|
|
|
//fmt.Println("day:", day, "week:", week, "start_time", fmt.Sprintf("%02d", start_time.Hour()) + ":"+fmt.Sprintf("%02d", start_time.Minute()), "status:", status)
|
|
|
- noAppointmentInfo = append(noAppointmentInfo, model.NoReservationInfo{
|
|
|
- Day : day,
|
|
|
- Week : week,
|
|
|
- StartTime : fmt.Sprintf("%02d", start_time.Hour()) + ":"+fmt.Sprintf("%02d", start_time.Minute()),
|
|
|
- Status : 3,
|
|
|
+ noAppointmentInfo = append(noAppointmentInfo, equipment2.NoReservationInfo{
|
|
|
+ Day: day,
|
|
|
+ Week: week,
|
|
|
+ StartTime: fmt.Sprintf("%02d", start_time.Hour()) + ":" + fmt.Sprintf("%02d", start_time.Minute()),
|
|
|
+ Status: 3,
|
|
|
})
|
|
|
}
|
|
|
return noAppointmentInfo
|
|
|
}
|
|
|
|
|
|
// 获取当前星期对应的日期
|
|
|
-func GetDate(Date *gtime.Time, week int) int{
|
|
|
+func GetDate(Date *gtime.Time, week int) int {
|
|
|
weekday := Date.Weekday().String()
|
|
|
- var targetDay *gtime.Time
|
|
|
+ var targetDay *gtime.Time
|
|
|
switch weekday {
|
|
|
- case "Monday": targetDay = Date.AddDate(0, 0, week - 1)
|
|
|
- case "Tuesday": targetDay = Date.AddDate(0, 0, week - 2)
|
|
|
- case "Wednesday": targetDay = Date.AddDate(0, 0, week - 3)
|
|
|
- case "Thursday": targetDay = Date.AddDate(0, 0, week - 4)
|
|
|
- case "Friday": targetDay = Date.AddDate(0, 0, week - 5)
|
|
|
- case "Saturday": targetDay = Date.AddDate(0, 0, week - 6)
|
|
|
- case "Sunday": targetDay = Date.AddDate(0, 0, week - 7)
|
|
|
+ case "Monday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-1)
|
|
|
+ case "Tuesday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-2)
|
|
|
+ case "Wednesday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-3)
|
|
|
+ case "Thursday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-4)
|
|
|
+ case "Friday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-5)
|
|
|
+ case "Saturday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-6)
|
|
|
+ case "Sunday":
|
|
|
+ targetDay = Date.AddDate(0, 0, week-7)
|
|
|
}
|
|
|
_, _, day := targetDay.Date()
|
|
|
return day
|
|
|
-}
|
|
|
+}
|