123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- package worksitenode
- import (
- "errors"
- "time"
- "zhiyuan/models"
- "zhiyuan/pkg/app"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/utils"
- "zhiyuan/services/form"
- "zhiyuan/services/work/worker"
- "zhiyuan/services/work/worknode"
- "zhiyuan/services/work/worksite"
- )
- var WorkSiteNode models.WorkSiteNode
- func Add(form form.WorkSiteNodeAdd, adminID int) (int64, error) {
- worksiteInfo, err := worksite.GetInfoByID(form.SiteId, nil, nil)
- if worksiteInfo == nil {
- return 0, errors.New("invalid worksite id")
- }
- if worksiteInfo.State != 0 {
- return 0, errors.New("项目已开工")
- }
- if form.StartTime > form.EndTime ||
- form.StartTime < worksiteInfo.StartTime ||
- form.EndTime < worksiteInfo.StartTime ||
- form.StartTime > worksiteInfo.EndTime ||
- form.EndTime > worksiteInfo.EndTime {
- return 0, errors.New("工期设置有误")
- }
- worknodeInfo, err := worknode.GetInfoByID(form.NodeId, nil, nil)
- if worknodeInfo == nil || worknodeInfo.State == 0 {
- return 0, errors.New("invalid worknode id")
- }
- workSiteNodeMap := map[string]interface{}{
- "`site_id`": form.SiteId,
- "`node_id`": form.NodeId,
- "`name`": form.Name,
- "`starttime`": form.StartTime,
- "`endtime`": form.EndTime,
- "`process_ids`": form.ProcessIds,
- "`return_visit_id`": form.ReturnVisitID,
- "`quality_accept_id`": form.QualityAcceptID,
- "`mark`": form.Mark,
- }
- workSiteNodeID, err := db.InsertOne(WorkSiteNode.TableName(), workSiteNodeMap)
- if err != nil {
- return 0, nil
- }
- return workSiteNodeID, nil
- }
- func EditByID(form form.WorkSiteNodeEdit, id int, adminID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- if info.State == 4 {
- return errors.New("节点已验收")
- }
- worksiteInfo, err := worksite.GetInfoByID(info.SiteId, nil, nil)
- if worksiteInfo == nil {
- return errors.New("invalid worksite id")
- }
- if worksiteInfo.State != 0 {
- return errors.New("项目已开工")
- }
- if form.StartTime > form.EndTime ||
- form.StartTime < worksiteInfo.StartTime ||
- form.EndTime < worksiteInfo.StartTime ||
- form.StartTime > worksiteInfo.EndTime ||
- form.EndTime > worksiteInfo.EndTime {
- return errors.New("工期设置有误")
- }
- workSiteNodeMap := map[string]interface{}{
- "`name`": form.Name,
- "`starttime`": form.StartTime,
- "`endtime`": form.EndTime,
- "`process_ids`": form.ProcessIds,
- "`return_visit_id`": form.ReturnVisitID,
- "`quality_accept_id`": form.QualityAcceptID,
- "`mark`": form.Mark,
- }
- _, err = db.Update(WorkSiteNode.TableName(), map[string]interface{}{"id": id}, workSiteNodeMap)
- return err
- }
- func EditQualityTimeByID(form form.WorkSiteNodeQualityTime, id int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- workSiteNodeMap := map[string]interface{}{
- "`quality_time`": form.QualityTime,
- }
- _, err = db.Update(WorkSiteNode.TableName(), map[string]interface{}{"id": id}, workSiteNodeMap)
- return err
- }
- func QualityCheck(id int, adminID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- workSiteNodeMap := map[string]interface{}{
- "`quality_id`": adminID,
- "`quality_at`": time.Now().Unix(),
- }
- _, err = db.Update(WorkSiteNode.TableName(), map[string]interface{}{"id": id}, workSiteNodeMap)
- return err
- }
- func DeleteByID(id int, adminID int) error {
- info, _ := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- worksiteInfo, _ := worksite.GetInfoByID(info.SiteId, nil, nil)
- if worksiteInfo == nil {
- return errors.New("invalid worksite id")
- }
- if worksiteInfo.State != 0 {
- return errors.New("项目已开工")
- }
- _, err := db.DeleteSoft(WorkSiteNode.TableName(), map[string]interface{}{"id": id})
- return err
- }
- func DispatchByID(form form.WorkSiteNodeWorkerID, id int, adminID int) error {
- info, _ := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- //if info.State == 4 {
- // return errors.New("节点已验收")
- //}
- //if info.WorkerId != 0 {
- // return errors.New("已指派工人")
- //}
- worknodeInfo, _ := worknode.GetInfoByID(info.NodeId, nil, nil)
- if worknodeInfo == nil {
- return errors.New("invalid worknode id")
- }
- worksiteInfo, _ := worksite.GetInfoByID(info.SiteId, nil, nil)
- if worksiteInfo == nil {
- return errors.New("invalid worksite id")
- }
- //if worksiteInfo.ManagerId != adminID {
- // return errors.New("账号权限有误")
- //}
- if worksiteInfo.State == 2 {
- return errors.New("项目已完工")
- }
- if typeInfo, _ := worker.GetOneRaw(map[string]string{"where": "id={{worker_id}} AND FIND_IN_SET({{type_id}}, type_ids)"}, map[string]interface{}{"type_id": worknodeInfo.WorkTypeId, "worker_id": form.WorkerID}, nil); typeInfo == nil {
- return errors.New("工人工种有误")
- }
- workSiteNodeMap := map[string]interface{}{
- "`worker_id`": form.WorkerID,
- }
- _, err := db.Update(WorkSiteNode.TableName(), map[string]interface{}{"id": id}, workSiteNodeMap)
- return err
- }
- func StartByID(id int, adminID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- if info.State != 0 {
- return errors.New("节点状态有误")
- }
- worksiteInfo, err := worksite.GetInfoByID(info.SiteId, nil, nil)
- if worksiteInfo == nil {
- return errors.New("invalid worksite id")
- }
- if worksiteInfo.State == 3 {
- return errors.New("项目已停工")
- }
- now := time.Now().Unix()
- if worksiteInfo.State == 0 {
- _, err = db.Update(worksiteInfo.TableName(), map[string]interface{}{"id": worksiteInfo.ID}, map[string]interface{}{
- "real_starttime": now,
- "state": 1,
- })
- if err != nil {
- return err
- }
- }
- _, err = db.Update(info.TableName(), map[string]interface{}{"id": info.ID}, map[string]interface{}{
- "real_starttime": now,
- "state": 1,
- })
- if err != nil {
- return err
- }
- return nil
- }
- func ReturnVisitByID(forms form.ReturnVisitFrom, id int, adminID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- //if info.State != 3 {
- // return errors.New("节点状态有误")
- //}
- if info.ReturnVisitID == 0 {
- return errors.New("节点无需回访")
- }
- //if info.ReturnVisitContent != "" {
- // return errors.New("节点已回访")
- //}
- worksiteInfo, err := worksite.GetInfoByID(info.SiteId, nil, nil)
- if worksiteInfo == nil {
- return errors.New("invalid worksite id")
- }
- //if worksiteInfo.State != 1 {
- // return errors.New("项目未开工")
- //}
- data := map[string]interface{}{
- "return_visit_content": utils.JsonEncode(forms.ReturnVisit),
- }
- if info.ReturnVisitContent == "" {
- data["return_visit_admin_id"] = adminID
- data["return_visit_time"] = time.Now().Unix()
- }
- _, err = db.Update(info.TableName(), map[string]interface{}{"id": info.ID}, data)
- if err != nil {
- return err
- }
- return nil
- }
- func Count(where map[string]interface{}) (int64, error) {
- return db.Count(WorkSiteNode.TableName(), where)
- }
- func CountRaw(where string, param map[string]interface{}) (int64, error) {
- query := "`zy_work_site_node` WHERE " + where
- return db.CountRaw(query, param)
- }
- func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.WorkSiteNode, error) {
- if page.PageNum > 0 && page.PageSize > 0 {
- where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
- }
- return WorkSiteNode.GetMulti(where, fields, retVal)
- }
- func GetWorkSiteNodesRaw(where map[string]string, param map[string]interface{}, retVal interface{}) error {
- field := "SELECT `zy_work_site_node`.*, `zy_work_node`.`color`, `zy_work_node`.`logo`, `zy_worker`.`name` as `worker_name`, `zy_worker`.`phone` as `worker_phone`, `zy_admin`.`username` as `return_visit_name`, `zy_admin`.`phone` as `return_visit_phone`, `zy_admin`.`headimgurl` as `return_visit_headimgurl` FROM `zy_work_site_node` left join `zy_work_node` on `zy_work_node`.`id` = `zy_work_site_node`.`node_id` left join `zy_worker` on `zy_worker`.`id` = `zy_work_site_node`.`worker_id` left join `zy_admin` on `zy_admin`.`id` = `zy_work_site_node`.`return_visit_admin_id` "
- return db.GetMultiRaw(field, where, param, retVal)
- }
- func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.WorkSiteNode, error) {
- return WorkSiteNode.GetOne(where, fields, retVal)
- }
- func GetWorkSiteNodeOne(where map[string]string, param map[string]interface{}, retVal interface{}) error {
- field := "SELECT `zy_work_site_node`.*, `zy_work_node`.`color`, `zy_work_node`.`logo`, `zy_work_node`.`work_type_id`, `zy_worker`.`name` as `worker_name`, `zy_worker`.`phone` as `worker_phone`, `zy_work_type`.`name` as `work_type_name`, `zy_admin`.`username` as `return_visit_name`, `zy_admin`.`phone` as `return_visit_phone`, `zy_admin`.`headimgurl` as `return_visit_headimgurl` FROM `zy_work_site_node` left join `zy_work_node` on `zy_work_node`.`id` = `zy_work_site_node`.`node_id` left join `zy_worker` on `zy_worker`.`id` = `zy_work_site_node`.`worker_id` left join `zy_admin` on `zy_admin`.`id` = `zy_work_site_node`.`return_visit_admin_id` left join `zy_work_type` on `zy_work_type`.`id` = `zy_work_node`.`work_type_id` "
- where["_page_size"] = utils.ToStr(1)
- where["_page_num"] = utils.ToStr(1)
- where["_group_by"] = "`zy_work_site_node`.`id`"
- return db.GetMultiRaw(field, where, param, retVal)
- }
- func GetWorkSiteNodeByID(id int, retVal interface{}) error {
- where := map[string]string{
- "where": "`zy_work_site_node`.`id` = {{id}}",
- }
- param := map[string]interface{}{"id": id}
- return GetWorkSiteNodeOne(where, param, retVal)
- }
- func GetInfoByID(id int, fields []string, retVal interface{}) (*models.WorkSiteNode, error) {
- return GetOne(map[string]interface{}{"id": id}, fields, retVal)
- }
|