+ queryData, _ := getDataBySqlT("select maintenance from equipment where id = ? ", 0, 0, "", []interface{}{parammaps.Get("id").ValueStr()})
+ for _, value := range queryData.(map[string]interface{})["list"].([]map[string]interface{}) {
+ for _, maintenance := range strings.Split(value["maintenance"].(string), ",") {
+ if parammaps.Get("SSPstatue").ValueStr() == "启用" {
+ _, err := tx.Exec(` INSERT INTO wxworkmsg(DATE,userid,msg,formcode,TYPE,note)values(now(),
+?,concat("设备启停通知:\n设备资产编号:",(select eqCode from equipment where id = ? ),"\n用途:",(select purpose from equipment where id = ? ),"\n由报修人",(select empname from emp where empcode = ? limit 1),"启用\n时间:",now()),(select eqCode from equipment where id = ? ),1,null)`,
+ _, err := tx.Exec(` INSERT INTO wxworkmsg(DATE,userid,msg,formcode,TYPE,note)values(now(),
+?,concat("设备启停通知:\n设备资产编号:",(select eqCode from equipment where id = ? ),"\n用途:",(select purpose from equipment where id = ? ),"\n由报修人",(select empname from emp where empcode = ? limit 1 ),"停机\n时间:",now()),(select eqCode from equipment where id = ? ),1,null)`,
+ for index, value := range queryData.(map[string]interface{})["list"].([]map[string]interface{}) {
+ if v, ok := value["id"]; ok {
+ //month = "2020-03"
+ seviceplans, _ := restful.MapStrList("SELECT seviceplan.* FROM seviceplan WHERE seviceplan.eqId = ? AND (seviceplan.month=? OR (SELECT COUNT(*) FROM bigupkeep WHERE seviceplanId = seviceplan.`id` AND plantime BETWEEN CONCAT(?,'-01') AND CONCAT(?,'-31'))>0) ", v, month, month, month) //获取保养计划
+ if seviceplans != nil {
+ for _, va := range seviceplans { //根据保养计划获取保养单
+ //day,_ :=strconv.Atoi(va["day"])
+ bigupkeeps, _ := restful.MapStrList("SELECT * FROM bigupkeep where seviceplanId = ? and plantime between concat(?,'-01') and concat(?,'-31') ", va["id"], month, month) //获取保养计划中的保养单
+ //buk := make(map[string]map[string]string)
+ for _, bu := range bigupkeeps { //日期为key ,保养单为value 存到map中
+ queryData, _ := getDataBySqlT("select maintenance from equipment where id = ? ", 0, 0, "", []interface{}{parammaps.Get("id").ValueStr()})
+ for _, value := range queryData.(map[string]interface{})["list"].([]map[string]interface{}) {
+ for _, maintenance := range strings.Split(value["maintenance"].(string), ",") {
+ if parammaps.Get("SSPstatue").ValueStr() == "启用" {
+ _, err := tx.Exec(` INSERT INTO wxworkmsg(DATE,userid,msg,formcode,TYPE,note)values(now(),
+?,concat("设备启停通知:\n设备资产编号:",(select eqCode from equipment where id = ? ),"\n用途:",(select purpose from equipment where id = ? ),"\n由报修人",(select empname from emp where empcode = ? limit 1),"启用\n时间:",now()),(select eqCode from equipment where id = ? ),1,null)`,
+ _, err := tx.Exec(` INSERT INTO wxworkmsg(DATE,userid,msg,formcode,TYPE,note)values(now(),
+?,concat("设备启停通知:\n设备资产编号:",(select eqCode from equipment where id = ? ),"\n用途:",(select purpose from equipment where id = ? ),"\n由报修人",(select empname from emp where empcode = ? limit 1 ),"停机\n时间:",now()),(select eqCode from equipment where id = ? ),1,null)`,
+ // " WHERE deapartmentName=? and pastureId = ? and eqClassId=?", use, param.Get("m"+strconv.Itoa(i)).ValueStr(), deptName, pastureId,eqClassId).Execute()
+ pastureData, err := restful.MapStrList("select p.`name`,p.id from pasture p group by p.`name`")
+
+ //s_params := make([]interface{}, 0)
+ offset = offset - 1
+ if pagecount > 0 && offset > 0 {
+ offset = offset * pagecount
+ }
+ dataList := make([]interface{}, 0)
+ label := make([]map[string]interface{}, 0)
+ str := "select p_c.partName,p.`name`,p_s.pastureId,p_s.partClassId2 from part_standard p_s left join part_class p_c on p_c.id= p_s.partClassId2 " +
+ " left join pasture p on p.id = p_s.pastureId where p_s.partClassId2 = ? or ?='' " +
+ " GROUP BY p_s.partClassId2 ORDER BY p_s.id DESC"
+ str1 := "select p_s.standardMoney,p_s.partClassId2,p_s.pastureId,p.`name` from part_standard p_s left join pasture p on p.id=p_s.pastureId where p_s.partClassId2 = ? or ?=''"
+ tqueryData, err := Dbs.Queryx("SELECT * FROM `user` WHERE `username` = ? and `enable` >0 ", username)
+ if err != nil {
+ fmt.Println(err)
+ return nil
+ }
+ valuesMap, err = rows2mapObjects(tqueryData)
+
+ if err != nil {
+ return nil
+ }
+ if len(valuesMap) > 0 {
+ tqueryData2, err := Dbs.Queryx("SELECT r.`name`,r.`id` FROM `user` u JOIN `user_role` ur ON u.`id`=ur.`user_id` JOIN `role` r ON r.id=ur.`role_id` WHERE r.`enable`>0 AND u.username=?", username)
+ yuanzhi=?, salvage =?,subtractvalue =?, upkeepgrade= ?,yearUpkeepCost=? ,yearMaintainCost=?,baseHours=?,employeName=(select empname from emp where replace(empname,' ','') = ? and pastureId = ? and enable = 1 ),
+ employeeId = (select id from emp where replace(empname,' ','') = ? and pastureId = ? and enable = 1 ),inputUser=?,leaveDate=? ,
+ brand = ?, brandId = ? ,proId= ?,proName= ? ,eqClassName = ?,eqClassId = (select id from eqclass where typeName = ?),eqName = ?,
+ maintenance= (select GROUP_CONCAT(id) from emp where FIND_IN_SET(replace(empname,' ',''),replace(?,' ','')) and pastureId = ? and enable = 1 ),levelone=(select id from emp where replace(empname,' ','') = replace(?,' ','') and pastureId = ? and enable = 1 ) ,
+ leveltwo = (select id from emp where replace(empname,' ','') = replace(?,' ','') and pastureId = ? and enable = 1 ),levelthree=(select id from emp where replace(empname,' ','') = replace(?,' ','') and pastureId = ? and enable = 1 )
+ if i == 0 || (v[0] != "1042" && v[0] != "1002") {
+ continue
+ }
+
+ err := s.d.DB.Exec(` update equipment set pastureid = (SELECT pastureid FROM department WHERE costCenter_code = ? ) where financeCode = ? `, v[11], financeCode).Error
+ if e := s.d.DB.Raw(`select b.* from bigbuydetail b join pasture p on b.pastureId = p.id left join bigpartdeal bpd on bpd.matchCode = b.matchCode
+ where buyerDate >'2022-11-02' and p.vendor = 1 and b.sapStatus =0 and (bpd.statue = 1 or b.matchCode like '%SG%' )`).Find(&orders, model.BigBuyDetail{}).Error; e != nil {
+ log.Errorf("AutoSapOrderJob error: %v", e)
+ return
+ }
+ var buyeCodes []string
+ for _, v := range orders {
+ buyeCodes = append(buyeCodes, v.BuyeCode)
+ }
+ if len(buyeCodes) > 0 {
+ err := s.d.DB.Exec(` update bigbuydetail set sapStatus = 2 where buyeCode in (?)`, buyeCodes).Error
+ fmt.Println(err)
+ }
+
+ for _, v := range orders {
+ e, sapNumber := SapOrder(&v, "")
+ up := model.BigBuyDetail{SapNumber: sapNumber}
+ if e != nil {
+ up.SapStatus = 2
+ up.SapError = e.Error()
+ } else {
+ up.SapStatus = 1
+ }
+ if e := s.d.DB.Model(&v).Where("buyeCode =?", v.BuyeCode).Updates(up); e != nil {
+ if e := s.d.DB.Model(&model.BuyDetail{}).Where("id=?", v.ID).Update("rowNumber", detail.RowNumber).Error; e != nil {
+ log.Errorln(e, v.ID)
+ }
+ }
+
+ rbyte, _ := json.Marshal(r)
+ e := s.SyncSap(r, &rp, rbyte)
+ saplog := new(model.SapLog)
+ if e == nil && rp.Dest.Status == "S" {
+ s.d.DB.Create(saplog)
+ log.Infof("buy order success :eq=%s,sap=%s", rp.Data.EqNumber, rp.Data.SapNumber)
+ return nil, rp.Data.SapNumber
+ } else {
+ if param, e := json.Marshal(r); e != nil {
+ log.Errorf("sap order param marshal:%v", e)
+ } else {
+ saplog.Param = string(param)
+ saplog.Name = "sap-order"
+ s.d.DB.Create(saplog)
+ }
+ if e == nil {
+ return errors.Errorf("sap order :%s", rp.Data.MsgText), ""
+ } else {
+ return errors.Wrapf(e, "sap order error:%v", e), ""
+ }
+ }
+ //*/
+ return nil, ""
+}
+
+func AutoSrmOrderJob() {
+ orders := []model.BigBuyDetail{}
+ if e := s.d.DB.Where("srmStatus=0 and buyerDate >= '2022-10-25' and sapStatus=1 and ifnull(sapNumber,0) > 0 ").Find(&orders, model.BigBuyDetail{SrmStatus: 0}).Error; e != nil {
+ log.Errorf("AutoSrmOrderJob error: %v", e)
+ return
+ }
+
+ var buyeCodes []string
+ for _, v := range orders {
+ buyeCodes = append(buyeCodes, v.BuyeCode)
+ }
+ if len(buyeCodes) > 0 {
+ s.d.DB.Exec(` update bigbuydetail set srmStatus = 2 where buyeCode in (?)`, buyeCodes)
+ }
+
+ for _, v := range orders {
+ SrmOrder(&v, "0")
+ }
+}
+func ManaulSrmOrderJob(buyeCode string) {
+ orders := []model.BigBuyDetail{}
+ if e := s.d.DB.Where("buyeCode=?", buyeCode).Where("sapStatus=1").Find(&orders, model.BigBuyDetail{SrmStatus: 0}).Error; e != nil {
+ if e := s.d.DB.Model(&model.Refunddetail{}).Where("id=?", v.ID).Update("rowNumber", detail.RowNumber).Error; e != nil {
+ log.Errorln(e, v.ID)
+ }
+ }
+
+ rbyte, _ := json.Marshal(r)
+ e := s.SyncSap(r, &rp, rbyte)
+ saplog := new(model.SapLog)
+ if e == nil && rp.Dest.Status == "S" {
+ s.d.DB.Create(saplog)
+ log.Infof("buy order success :eq=%s,sap=%s", rp.Data.EqNumber, rp.Data.SapNumber)
+ return nil, rp.Data.SapNumber
+ } else {
+ if param, e := json.Marshal(r); e != nil {
+ log.Errorf("sap order param marshal:%v", e)
+ } else {
+ saplog.Param = string(param)
+ saplog.Name = "sap-order"
+ s.d.DB.Create(saplog)
+ }
+ if e == nil {
+ return errors.Errorf("sap order :%s", rp.Data.MsgText), ""
+ } else {
+ return errors.Wrapf(e, "sap order error:%v", e), ""
+ }
+ }
+ //*/
+ return nil, ""
+}
+
+func AutoSrmReturnOrderJob() {
+ orders := []model.BigRefunddetail{}
+ if e := s.d.DB.Where("srmStatus=0 and buyerDate >= '2022-10-25' and sapStatus=1 and ifnull(sapNumber,0) > 0 ").Find(&orders, model.BigRefunddetail{SrmStatus: 0}).Error; e != nil {
+ log.Errorf("AutoSrmOrderJob error: %v", e)
+ return
+ }
+
+ var buyeCodes []string
+ for _, v := range orders {
+ buyeCodes = append(buyeCodes, v.BuyeCode)
+ }
+ if len(buyeCodes) > 0 {
+ s.d.DB.Exec(` update bigrefunddetail set srmStatus = 2 where buyeCode in (?)`, buyeCodes)
+ err = s.d.DB.Raw(` select u.id,u.username,u.empid,e.empname from user u join emp e on e.empcode = u.username where u.username in(?)`, userIds).Find(&userList).Error
+ err = s.d.DB.Raw(`select * from asset_stt ast where ast.eqId in(?) and blockTime is not null
+union all
+select t.* from (
+ select * from asset_stt ast where ast.eqId in(?) and blockTime is null order by enabledTime desc limit 999999999) t group by t.eqid`, eqIDList, eqIDList).Find(&assetStt).Error
+ if err != nil {
+ return nil, err
+ }
+
+ dataList := make([]map[string]interface{}, 0)
+
+ pastureList := make([]*model.Pasture, 0)
+ err = s.d.DB.Where(" id = ? or ? = '' ", pastureId, pastureId).Order("id").Find(&pastureList).Error
+ if err != nil {
+ return nil, errors.New("查询牧场信息出错!!!")
+ }
+
+ for _, eq := range eqList {
+ arg := make(map[string]interface{})
+ arg["eqName"] = eq.EqName
+ var run float64
+ for _, asset := range assetStt {
+ if asset.EqId == int64(eq.Id) {
+ if asset.BlockTime.Format("2006") == "0001" {
+ if time.Now().Unix() > endTime.Unix() {
+ run += endTime.Sub(asset.EnabledTime).Minutes() / 60
+ } else {
+ run += time.Now().Sub(asset.EnabledTime).Minutes() / 60
+ }
+ } else {
+ run += asset.BlockTime.Sub(asset.EnabledTime).Minutes() / 60
+ err = s.d.DB.Raw(` SELECT m.eqId,m.pastureId,m.requestTime,m.orderTime,m.stopTime FROM maintain m JOIN equipment e on e.id = m.eqId WHERE e.eqClassid = ?
+ and m.stopTime is not null and (m.pastureid = (select id from pasture where name = ? and name != '现代牧业') or ? = '现代牧业' or ?= '' )
+ and m.stopTime between ? and ? and TIMESTAMPDIFF(hour, m.orderTime, m.stopTime) < 1000 order by requestTime,m.pastureid `,
+ err = s.d.DB.Where(" id in ? ", eqid).Where(" (pastureid = (select id from pasture where name = ? ) or ?='现代牧业') ", pastureName).Where(" ( eqName like concat('%',?,'%') or ?= '')", eqName, eqName).Offset(offset - 1).Limit(pageSize).Find(&eqList).Error
+ if err != nil {
+ return 0, nil, errors.New("查询设备出错!!!")
+ }
+
+ var total int64
+ s.d.DB.Table("equipment").Where(" id in ? ", eqid).Where(" (pastureid = (select id from pasture where name = ? ) ) or ?='现代牧业 ", pastureName).Where(" ( eqName like concat('%',?,'%') or ?= '')", eqName, eqName).Count(&total)