diff --git a/README.md b/README.md index 616253e..20510bd 100644 --- a/README.md +++ b/README.md @@ -163,4 +163,113 @@ Time:2022-08-24
``` select `qes`.`id` AS `id`,`qes`.`version_number` AS `version_number`,`qes`.`company_id` AS `company_id`,`qes`.`department_id` AS `department_id`,`qes`.`org_id` AS `org_id`,`qes`.`post_id` AS `post_id`,`qes`.`title` AS `title`,`qes`.`dimension_id` AS `dimension_id`,`qes`.`target_id` AS `target_id`,`qes`.`son_target_id` AS `son_target_id`,`qes`.`details_id` AS `details_id`,`qes`.`attribute` AS `attribute`,`qes`.`min_score` AS `min_score`,`qes`.`max_score` AS `max_score`,`qes`.`scoring_method` AS `scoring_method`,`qes`.`state` AS `state`,`qes`.`addtime` AS `addtime`,`qes`.`eitetime` AS `eitetime`,`qes`.`censor_type` AS `censor_type`,`qes`.`source` AS `source`,`qes`.`run_state` AS `run_state`,`tr`.`type` AS `tr_type`,`tr`.`man_key` AS `man_key`,`tr`.`man_department` AS `man_department`,`tr`.`class` AS `tr_class`,`tr`.`type_level` AS `tr_level` from (`qualitative_evaluation_scheme` `qes` join `target_report` `tr` on(((`qes`.`dimension_id` = `tr`.`dimension_id`) and (`qes`.`target_id` = `tr`.`target_id`) and (`qes`.`son_target_id` = `tr`.`target_sun_id`) and (`qes`.`details_id` = `tr`.`target_bylaws`) and (`qes`.`post_id` = `tr`.`post_id`) and (`qes`.`org_id` = `tr`.`department_id`)))) +``` + + + + +Time:2022-08-29
+数据库增加 岗位审批工作流 数据表 +
+ +``` +CREATE TABLE `post_workflow_orders` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `order_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '审批单ID', + `step` int(5) unsigned NOT NULL DEFAULT '0' COMMENT '当前执行到第几步', + `next_step` int(5) unsigned NOT NULL DEFAULT '0' COMMENT '下一步执行哪个步骤', + `work_flow` longtext COMMENT '工作流(审批json字符串)', + `company_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '公司', + `department_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '部门', + `org_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '行政组织', + `post_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '岗位', + `class` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '属性1、定性;2、定量', + `dimension` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '维度', + `target` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标', + `son_target` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标子栏目', + `detailed` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标细则', + `executor` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '执行人', + `executor_department` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '执行人部门', + `state` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '流程状态 1:草稿;2:驳回;3:审批中;4:归档;5:废弃;6:删除', + `start_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '流程开始时间', + `time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '时间', + `enclosure_format` longtext COMMENT '附件', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位审批工作流'; + +``` + + +Time:2022-08-29
+数据库增加 定性考核流水 数据表 +
+ +``` +CREATE TABLE `post_nature_flow` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `order_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '审批单ID同时也是订单ID', + `add_or_decrease` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '增加或减少(1:增加;2:减少)', + `score` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '分值(*100保存)', + `money` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '钱(扣款或奖励)*100保存', + `reason` text COMMENT '这样操作的原因', + `sheme_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '方案ID', + `sheme_version` varchar(255) NOT NULL DEFAULT '' COMMENT '方案版本', + `dimension` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '维度', + `target` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标', + `son_target` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标子栏目', + `detailed` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标细则', + `year` int(7) unsigned NOT NULL DEFAULT '0' COMMENT '年', + `quarter` int(3) unsigned NOT NULL DEFAULT '0' COMMENT '季度', + `month` int(3) unsigned NOT NULL DEFAULT '0' COMMENT '月', + `week` int(3) unsigned NOT NULL DEFAULT '0' COMMENT '周', + `person_liable` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '责任人', + `company_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '公司', + `department_id` bigint(20) NOT NULL COMMENT '部门', + `org_id` bigint(20) NOT NULL COMMENT '行政组织', + `post_id` bigint(20) NOT NULL COMMENT '岗位', + `executor` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '执行人', + `executor_department` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '执行人部门', + `rectification` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否需要整改 1、需要整改;2:无需整改', + `correction_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '整改期限', + `happen_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '发生时间', + `happen_count` int(7) unsigned NOT NULL DEFAULT '1' COMMENT '发生次数', + `time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定性考核流水'; + +``` + + + +Time:2022-08-29
+数据库增加 岗位定量考核流水 数据表 +
+ +``` +CREATE TABLE `post_metering_flow` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `order_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '审批单ID同时也是订单ID', + `sheme_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '方案ID', + `sheme_version` varchar(255) NOT NULL DEFAULT '' COMMENT '方案版本号', + `dimension` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '维度', + `target` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '指标', + `score` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '实际值', + `reason` text COMMENT '这样操作的原因', + `year` int(7) unsigned NOT NULL DEFAULT '0' COMMENT '年', + `quarter` int(3) unsigned NOT NULL DEFAULT '0' COMMENT '季度', + `month` int(3) unsigned NOT NULL DEFAULT '0' COMMENT '月', + `week` int(3) unsigned NOT NULL DEFAULT '0' COMMENT '周', + `person_liable` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '责任人', + `company_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '公司', + `department_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '部门', + `org_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '行政组织', + `post_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '岗位', + `executor` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '执行人', + `executor_department` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '执行人部门', + `happen_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '发生时间', + `baseline` text COMMENT '基准线', + `time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '时间', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='岗位定量考核流水'; + ``` \ No newline at end of file diff --git a/api/version1/postseting/postpc/targetpost.go b/api/version1/postseting/postpc/targetpost.go new file mode 100644 index 0000000..b95064e --- /dev/null +++ b/api/version1/postseting/postpc/targetpost.go @@ -0,0 +1,88 @@ +package postpc + +import ( + "key_performance_indicators/models/modelskpi" + "key_performance_indicators/overall" + "key_performance_indicators/overall/publicmethod" + "strconv" + + "github.com/gin-gonic/gin" +) + +//岗位指标相关操作 + +// 获取岗位指标详情 +func (a *ApiMethod) GetPostTarget(c *gin.Context) { + var receivedValue publicmethod.PublicId + err := c.ShouldBindJSON(&receivedValue) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if receivedValue.Id == "" { + publicmethod.Result(101, receivedValue, c) + return + } + var postTargetCont modelskpi.PostTarget + err = postTargetCont.GetCont(map[string]interface{}{"`id`": receivedValue.Id}) + if err != nil { + publicmethod.Result(107, err, c) + return + } + var sendData getPostOneTarget + sendData.Id = postTargetCont.Id + sendData.Title = postTargetCont.Title //标题"` + sendData.Type = postTargetCont.Type //1:定性考核;2:定量考核"` + sendData.State = postTargetCont.State //:状态(1:启用;2:禁用;3:删除)"` + sendData.Time = postTargetCont.Time //创建时间"` + sendData.Share = postTargetCont.Share //1:共用;2:私用"` + sendData.ReleDepart = postTargetCont.ReleDepart //相关部门"` + sendData.DepartmentsPost = postTargetCont.DepartmentsPost //相关岗位"` + sendData.Dimension = postTargetCont.Dimension //维度"` + sendData.Key = postTargetCont.Key //UUID"` + sendData.Report = postTargetCont.Report //上报人"` + sendData.Unit = postTargetCont.Unit //单位"` + sendData.Cycle = postTargetCont.Cycle //1:班;2:天;3:周;4:月;5:季度;6:年"` + sendData.Cycleattr = postTargetCont.Cycleattr //辅助计数"` + sendData.ScoringMethod = postTargetCont.ScoringMethod //计分方式(1:自动;2:手动)"` + sendData.VisibleRange = postTargetCont.VisibleRange //可见范围"` + sendData.VisibleGroup = postTargetCont.VisibleGroup //可见范围(集团)"` + _, sendData.RelevantPostsMan, _ = getTargetAboutPost(postTargetCont.ReleDepart, postTargetCont.Dimension, postTargetCont.Id) + publicmethod.Result(0, sendData, c) +} + +/* +获取岗位指标相关岗位 +@departmentId 部门Id +@dimensionId 维度 +@targetId 指标 +*/ +func getTargetAboutPost(departmentId, dimensionId, targetId int64) (postId []int64, postPeopleList []postPeople, err error) { + err = overall.CONSTANT_DB_KPI.Model(&modelskpi.TargetDepartment{}).Distinct("`post_id`").Where("`state` = 1 AND `level` = 2 AND `department_id` = ? AND `dimension_id` = ? AND `target_id` = ?").Find(&postId).Error + if len(postId) > 0 { + for i := 0; i < len(postId); i++ { + var postmanCont postPeople + postmanCont.Id = strconv.FormatInt(postId[i], 10) + _, postmanCont.Operator, _ = getTargetAboutPostMan(departmentId, postId[i], dimensionId, targetId) + postPeopleList = append(postPeopleList, postmanCont) + } + } + return +} + +/* +获取岗位指标相关岗位提报人 +@departmentId 部门Id +@postid 岗位 +@dimensionId 维度 +@targetId 指标 +*/ +func getTargetAboutPostMan(departmentId, postid, dimensionId, targetId int64) (peopleId []int64, postPeople []string, err error) { + err = overall.CONSTANT_DB_KPI.Model(&modelskpi.TargetReport{}).Distinct("`man_key`").Where("`state` = 1 AND `type` = 2 AND `department_id` = ? AND `post_id` = ? AND `dimension_id` = ? AND `target_id` = ?").Find(&peopleId).Error + if len(peopleId) > 0 { + for i := 0; i < len(peopleId); i++ { + postPeople = append(postPeople, strconv.FormatInt(peopleId[i], 10)) + } + } + return +} diff --git a/api/version1/postseting/postpc/type.go b/api/version1/postseting/postpc/type.go index 02a00ec..aaabcc2 100644 --- a/api/version1/postseting/postpc/type.go +++ b/api/version1/postseting/postpc/type.go @@ -138,3 +138,16 @@ type outShemeVersionCont struct { publicmethod.PublicId //id postScheme } + +// 岗位单一指标详细内容输出 +type getPostOneTarget struct { + modelskpi.PostTarget + RelevantPostsMan []postPeople `json:"relevantpostsman"` //相关岗位 + +} + +// 岗位单一指标关联岗位及提报人 +type postPeople struct { + publicmethod.PublicId + Operator []string `json:"operator"` //考核执行人 +} diff --git a/api/version1/postseting/postweb/posttarget.go b/api/version1/postseting/postweb/posttarget.go index 7e8f742..8a91b08 100644 --- a/api/version1/postseting/postweb/posttarget.go +++ b/api/version1/postseting/postweb/posttarget.go @@ -8,6 +8,7 @@ import ( "key_performance_indicators/overall/publicmethod" "strconv" "strings" + "time" "github.com/gin-gonic/gin" ) @@ -363,3 +364,124 @@ func (a *ApiMethod) GetNaturePostDimerons(c *gin.Context) { outCont.UserKey = receivedValue.UserKey publicmethod.Result(0, outCont, c) } + +// 提交个人岗位定性考核数据 +func (a *ApiMethod) SendUsNatureEvaluation(c *gin.Context) { + var receivedValue sendMyEvaluationData + err := c.ShouldBindJSON(&receivedValue) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if receivedValue.Id == "" { + publicmethod.Result(101, receivedValue, c) + return + } + var postShemeCont modelskpi.QualitativeEvaluationScheme + err = postShemeCont.GetCont(map[string]interface{}{"`id`": receivedValue.Id}) + if err != nil { + publicmethod.Result(107, err, c) + return + } + if receivedValue.UserKey == "" { + publicmethod.Result(101, receivedValue, c) + return + } + //获取被考核人基本信息 + var userCont modelshr.PersonArchives + err = userCont.GetCont(map[string]interface{}{"`key`": receivedValue.UserKey}, "`company`", "`maindeparment`", "`admin_org`", "`position`") + if err != nil { + publicmethod.Result(107, err, c) + return + } + if receivedValue.AddOrDecrease == 0 { + receivedValue.AddOrDecrease = 2 + } + if receivedValue.Punishmode == 0 { + receivedValue.Punishmode = 1 + } + var scoreVal int64 = 0 + var moneyVal int64 = 0 + isTrue := false + var msg string + switch receivedValue.Punishmode { + case 1: + scoreVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.ScoreState, receivedValue.Score, postShemeCont.MaxScore, postShemeCont.MinScore) + if isTrue != true { + publicmethod.Result(1, isTrue, c, msg) + return + } + case 2: + moneyVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.MoneyState, receivedValue.Money, postShemeCont.Maxmoney, postShemeCont.Minmoney) + if isTrue != true { + publicmethod.Result(1, isTrue, c, msg) + return + } + case 3: + scoreVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.ScoreState, receivedValue.Score, postShemeCont.MaxScore, postShemeCont.MinScore) + if isTrue != true { + publicmethod.Result(1, isTrue, c, msg) + return + } + moneyVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.MoneyState, receivedValue.Money, postShemeCont.Maxmoney, postShemeCont.Minmoney) + if isTrue != true { + publicmethod.Result(1, isTrue, c, msg) + return + } + } + + if receivedValue.Count == 0 { + receivedValue.Count = 1 + } + currentTime := time.Now().Unix() + if receivedValue.HappenTime != "" { + happTime, timeErr := publicmethod.DateToTimeStamp(receivedValue.HappenTime) + if timeErr == true { + currentTime = happTime + } + } + if receivedValue.Rectification == 0 { + receivedValue.Rectification = 2 + } + uuId := publicmethod.GetUUid(1) + //流程列表 + var flowCont modelskpi.PostWorkflowOrders + + fmt.Printf("%v---%v---%v---%v---%v\n", currentTime, uuId, flowCont, scoreVal, moneyVal) +} + +/* +判断分数是否符合要求 +@scoreState 1、定分;2、区间分;3、不定性分值 +@score 要操作的数值 +@MaxScore 最大值 +@minScore 最小值 +*/ +func judgeScoreOrMoneyIsTrue(scoreState int, score string, maxScore, minScore int64) (scoreInt64 int64, isTrue bool, msg string) { + isTrue = false + switch scoreState { + case 2, 3: + if score == "" { + return + } + scoreInt64, _ = strconv.ParseInt(score, 10, 64) + scoreInt64 = scoreInt64 * 100 + if scoreInt64 > maxScore { + msg = fmt.Sprintf("您提交的数值超过允许提交的最大值(最大值:%v)!", float64(maxScore)/100) + return + } + if scoreInt64 < minScore { + msg = fmt.Sprintf("您提交的数值低于允许提交的最小值(最小值:%v)!", float64(minScore)/100) + return + } + isTrue = true + case 1: + scoreInt64, _ = strconv.ParseInt(score, 10, 64) + scoreInt64 = scoreInt64 * 100 + isTrue = true + default: + msg = "请您输入要操作的数据,谢谢!" + return + } + return +} diff --git a/api/version1/postseting/postweb/type.go b/api/version1/postseting/postweb/type.go index 0f753a6..e9699c4 100644 --- a/api/version1/postseting/postweb/type.go +++ b/api/version1/postseting/postweb/type.go @@ -76,3 +76,20 @@ type outNatureDimePostCont struct { MoneyStr string `json:"moneystr"` //现金 UserKey string `json:"userkey"` } + +// 个人岗位定性考核提交数据参数 +type sendMyEvaluationData struct { + publicmethod.PublicId //考核项ID + UserKey string `json:"userkey"` //接受考核人key + Count int `json:"count"` //计数 + HappenTime string `json:"happentime"` //发生时间. + Reason string `json:"reason"` //操作原因 + Rectification int `json:"rectification"` //是否需要整改 1、需要整改;2:无需整改 + AddOrDecrease int `json:"addordecrease"` //加或减 1:增加;2:减少 + Punishmode int `json:"punishmode" ` //处罚方式 1:扣分;2:现金处罚;3:扣分加现金 + Score string `json:"score"` //分数*100保存 + Money string `json:"money"` //钱(扣款或奖励)*100保存 + ScoreState int `json:"scorestate"` //1、定分;2、区间分;3、不定性分值 + MoneyState int `json:"moneystate"` //1、定分;2、区间分;3、不定性分值 + Enclosure []publicmethod.EnclosureFormat `json:"enclosure"` //附件 +} diff --git a/apirouter/v1/postseting/pc.go b/apirouter/v1/postseting/pc.go index 19a96f1..e25f5f6 100644 --- a/apirouter/v1/postseting/pc.go +++ b/apirouter/v1/postseting/pc.go @@ -19,5 +19,6 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) { apiRouter.POST("submit_post_scheme", methodBinding.SubmitPostScheme) //提交岗位考核方案 apiRouter.POST("get_post_scheme", methodBinding.GetPostScheme) //获取岗位方案内容列表 apiRouter.POST("get_copy_sheme_infor", methodBinding.GetCopyShemeInfor) //获取复制岗位考核方案 + apiRouter.POST("get_post_target", methodBinding.GetPostTarget) //获取岗位指标详情 } } diff --git a/models/modelskpi/post_metering_flow.go b/models/modelskpi/post_metering_flow.go new file mode 100644 index 0000000..67872d3 --- /dev/null +++ b/models/modelskpi/post_metering_flow.go @@ -0,0 +1,77 @@ +package modelskpi + +import ( + "key_performance_indicators/overall" + "strings" +) + +// 定性考核流水 +type PostMeteringFlow struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;autoIncrement;comment:ID"` + OrderId int64 `json:"orderid" gorm:"column:order_id;type:bigint(20) unsigned;default:0;not null;comment:审批单ID"` + ShemeId int64 `json:"shemeid" gorm:"column:sheme_id;type:bigint(20) unsigned;default:0;not null;comment:方案ID"` + ShemeVersion string `json:"shemeversion" gorm:"column:sheme_version;type:varchar(255) ;not null;comment:方案版本编号"` + Dimension int64 `json:"dimension" gorm:"column:dimension;type:bigint(20) unsigned;default:0;not null;comment:维度"` + Target int64 `json:"target" gorm:"column:target;type:bigint(20) unsigned;default:0;not null;comment:指标"` + Score int64 `json:"score" gorm:"column:score;type:bigint(20) unsigned;default:0;not null;comment:分值(*100保存)"` + Reason string `json:"reason" gorm:"column:reason;type:text;comment:这样操作的原因"` + Year int `json:"year" gorm:"column:year;type:int(7) unsigned;default:0;not null;comment:年"` + Quarter int `json:"quarter" gorm:"column:quarter;type:int(3) unsigned;default:0;not null;comment:季度"` + Month int `json:"month" gorm:"column:month;type:int(3) unsigned;default:0;not null;comment:月"` + Week int `json:"week" gorm:"column:week;type:int(3) unsigned;default:0;not null;comment:周"` + PersonLiable int64 `json:"personliable" gorm:"column:person_liable;type:bigint(20) unsigned;default:0;not null;comment:责任人"` + CompanyId int64 `json:"companyid" gorm:"column:company_id;type:bigint(20) unsigned;default:0;not null;comment:公司"` + DepartmentId int64 `json:"departmentid" gorm:"column:department_id;type:bigint(20) unsigned;default:0;not null;comment:部门"` + OrgId int64 `json:"orgid" gorm:"column:org_id;type:bigint(20) unsigned;default:0;not null;comment:行政组织"` + PostId int64 `json:"postid" gorm:"column:post_id;type:bigint(20) unsigned;default:0;not null;comment:岗位"` + Executor int64 `json:"executor" gorm:"column:executor;type:bigint(20) unsigned;default:0;not null;comment:执行人"` + ExecutorDepartment int64 `json:"executordepartment" gorm:"column:executor_department;type:bigint(20) unsigned;default:0;not null;comment:执行人部门"` + HappenTime int64 `json:"happentime" gorm:"column:happen_time;type:bigint(20) unsigned;default:0;not null;comment:发生时间"` + Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:时间"` + Baseline string `json:"baseline" gorm:"column:baseline;type:text;comment:基准线"` +} + +func (PostMeteringFlow *PostMeteringFlow) TableName() string { + return "post_metering_flow" +} + +// 编辑内容 +func (cont *PostMeteringFlow) EiteCont(whereMap interface{}, saveData interface{}) (err error) { + err = overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取内容 +func (cont *PostMeteringFlow) GetCont(whereMap interface{}, field ...string) (err error) { + gormDb := overall.CONSTANT_DB_KPI.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + gormDb = gormDb.Where(whereMap) + err = gormDb.First(&cont).Error + return +} + +// 根据条件获取总数 +func (cont *PostMeteringFlow) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Count(&countId) + return +} + +// 读取全部信息 +func (cont *PostMeteringFlow) ContMap(whereMap interface{}, field ...string) (countAry []PostMeteringFlow, err error) { + gormDb := overall.CONSTANT_DB_KPI.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + err = gormDb.Where(whereMap).Find(&countAry).Error + return +} + +// 删除内容 +func (cont *PostMeteringFlow) DelCont(whereMap interface{}) (err error) { + err = overall.CONSTANT_DB_KPI.Where(whereMap).Delete(&cont).Error + return +} diff --git a/models/modelskpi/post_nature_flow.go b/models/modelskpi/post_nature_flow.go new file mode 100644 index 0000000..8944415 --- /dev/null +++ b/models/modelskpi/post_nature_flow.go @@ -0,0 +1,83 @@ +package modelskpi + +import ( + "key_performance_indicators/overall" + "strings" +) + +// 定性考核流水 +type PostNatureFlow struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;autoIncrement;comment:ID"` + OrderId int64 `json:"orderid" gorm:"column:order_id;type:bigint(20) unsigned;default:0;not null;comment:审批单ID"` + AddOrDecrease int `json:"addordecrease" gorm:"column:add_or_decrease;type:tinyint(1) unsigned;default:1;not null;comment:增加或减少(1:增加;2:减少)"` + Score int64 `json:"score" gorm:"column:score;type:bigint(20) unsigned;default:0;not null;comment:分值(*100保存)"` + Money int64 `json:"money" gorm:"column:money;type:bigint(20) unsigned;default:0;not null;comment:钱(扣款或奖励)*100保存"` + Reason string `json:"reason" gorm:"column:reason;type:text;comment:这样操作的原因"` + ShemeId int64 `json:"shemeid" gorm:"column:sheme_id;type:bigint(20) unsigned;default:0;not null;comment:方案ID"` + ShemeVersion string `json:"shemeversion" gorm:"column:sheme_version;type:varchar(255) ;not null;comment:方案版本编号"` + Dimension int64 `json:"dimension" gorm:"column:dimension;type:bigint(20) unsigned;default:0;not null;comment:维度"` + Target int64 `json:"target" gorm:"column:target;type:bigint(20) unsigned;default:0;not null;comment:指标"` + SonTarget int64 `json:"sontarget" gorm:"column:son_target;type:bigint(20) unsigned;default:0;not null;comment:指标子栏目"` + Detailed int64 `json:"detailed" gorm:"column:detailed;type:bigint(20) unsigned;default:0;not null;comment:指标细则"` + Year int `json:"year" gorm:"column:year;type:int(7) unsigned;default:0;not null;comment:年"` + Quarter int `json:"quarter" gorm:"column:quarter;type:int(3) unsigned;default:0;not null;comment:季度"` + Month int `json:"month" gorm:"column:month;type:int(3) unsigned;default:0;not null;comment:月"` + Week int `json:"week" gorm:"column:week;type:int(3) unsigned;default:0;not null;comment:周"` + PersonLiable int64 `json:"personliable" gorm:"column:person_liable;type:bigint(20) unsigned;default:0;not null;comment:责任人"` + CompanyId int64 `json:"companyid" gorm:"column:company_id;type:bigint(20) unsigned;default:0;not null;comment:公司"` + DepartmentId int64 `json:"departmentid" gorm:"column:department_id;type:bigint(20) unsigned;default:0;not null;comment:部门"` + OrgId int64 `json:"orgid" gorm:"column:org_id;type:bigint(20) unsigned;default:0;not null;comment:行政组织"` + PostId int64 `json:"postid" gorm:"column:post_id;type:bigint(20) unsigned;default:0;not null;comment:岗位"` + Executor int64 `json:"executor" gorm:"column:executor;type:bigint(20) unsigned;default:0;not null;comment:执行人"` + ExecutorDepartment int64 `json:"executordepartment" gorm:"column:executor_department;type:bigint(20) unsigned;default:0;not null;comment:执行人部门"` + Rectification int `json:"rectification" gorm:"column:rectification;type:tinyint(1) unsigned;default:2;not null;comment:是否需要整改 1、需要整改;2:无需整改"` + CorrectionTime int64 `json:"correctiontime" gorm:"column:correction_time;type:bigint(20) unsigned;default:0;not null;comment:整改期限"` + HappenTime int64 `json:"happentime" gorm:"column:happen_time;type:bigint(20) unsigned;default:0;not null;comment:发生时间"` + HappenCount int `json:"happencount" gorm:"column:happen_count;type:int(7) unsigned;default:0;not null;comment:发生次数"` + Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:时间"` +} + +func (PostNatureFlow *PostNatureFlow) TableName() string { + return "post_nature_flow" +} + +// 编辑内容 +func (cont *PostNatureFlow) EiteCont(whereMap interface{}, saveData interface{}) (err error) { + err = overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取内容 +func (cont *PostNatureFlow) GetCont(whereMap interface{}, field ...string) (err error) { + gormDb := overall.CONSTANT_DB_KPI.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + gormDb = gormDb.Where(whereMap) + err = gormDb.First(&cont).Error + return +} + +// 根据条件获取总数 +func (cont *PostNatureFlow) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Count(&countId) + return +} + +// 读取全部信息 +func (cont *PostNatureFlow) ContMap(whereMap interface{}, field ...string) (countAry []PostNatureFlow, err error) { + gormDb := overall.CONSTANT_DB_KPI.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + err = gormDb.Where(whereMap).Find(&countAry).Error + return +} + +// 删除内容 +func (cont *PostNatureFlow) DelCont(whereMap interface{}) (err error) { + err = overall.CONSTANT_DB_KPI.Where(whereMap).Delete(&cont).Error + return +} diff --git a/models/modelskpi/post_workflow_orders.go b/models/modelskpi/post_workflow_orders.go new file mode 100644 index 0000000..c2ff542 --- /dev/null +++ b/models/modelskpi/post_workflow_orders.go @@ -0,0 +1,75 @@ +package modelskpi + +import ( + "key_performance_indicators/overall" + "strings" +) + +// 岗位审批工作流 +type PostWorkflowOrders struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;autoIncrement;comment:ID"` + OrderId int64 `json:"orderid" gorm:"column:order_id;type:bigint(20) unsigned;default:0;not null;comment:审批单ID"` + Step int `json:"step" gorm:"column:step;type:int(5) unsigned;default:0;not null;comment:当前执行到第几步"` + NextStep int `json:"nextstep" gorm:"column:next_step;type:int(5) unsigned;default:0;not null;comment:下一步执行哪个步骤"` + WorkFlow string `json:"workflow" gorm:"column:work_flow;type:longtext;comment:工作流(审批json字符串)"` + CompanyId int64 `json:"companyid" gorm:"column:company_id;type:bigint(20) unsigned;default:0;not null;comment:公司"` + DepartmentId int64 `json:"departmentid" gorm:"column:department_id;type:bigint(20) unsigned;default:0;not null;comment:部门"` + OrgId int64 `json:"orgid" gorm:"column:org_id;type:bigint(20) unsigned;default:0;not null;comment:行政组织"` + PostId int64 `json:"postid" gorm:"column:post_id;type:bigint(20) unsigned;default:0;not null;comment:岗位"` + Class int `json:"class" gorm:"column:class;type:tinyint(1) unsigned;default:1;not null;comment:属性1、定性;2、定量"` + Dimension int64 `json:"dimension" gorm:"column:dimension;type:bigint(20) unsigned;default:0;not null;comment:维度"` + Target int64 `json:"target" gorm:"column:target;type:bigint(20) unsigned;default:0;not null;comment:指标"` + SonTarget int64 `json:"sontarget" gorm:"column:son_target;type:bigint(20) unsigned;default:0;not null;comment:指标子栏目"` + Detailed int64 `json:"detailed" gorm:"column:detailed;type:bigint(20) unsigned;default:0;not null;comment:指标细则"` + Executor int64 `json:"executor" gorm:"column:executor;type:bigint(20) unsigned;default:0;not null;comment:执行人"` + ExecutorDepartment int64 `json:"executordepartment" gorm:"column:executor_department;type:bigint(20) unsigned;default:0;not null;comment:执行人部门"` + State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:流程状态 1:草稿;2:驳回;3:审批中;4:归档;5:废弃;6:删除"` + StartTime int64 `json:"starttime" gorm:"column:start_time;type:bigint(20) unsigned;default:0;not null;comment:流程开始时间"` + Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:时间"` + EnclosureFormat string `json:"enclosureformat" gorm:"column:enclosure_format;type:longtext;comment:附件"` +} + +func (PostWorkflowOrders *PostWorkflowOrders) TableName() string { + return "post_workflow_orders" +} + +// 编辑内容 +func (cont *PostWorkflowOrders) EiteCont(whereMap interface{}, saveData interface{}) (err error) { + err = overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取内容 +func (cont *PostWorkflowOrders) GetCont(whereMap interface{}, field ...string) (err error) { + gormDb := overall.CONSTANT_DB_KPI.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + gormDb = gormDb.Where(whereMap) + err = gormDb.First(&cont).Error + return +} + +// 根据条件获取总数 +func (cont *PostWorkflowOrders) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Count(&countId) + return +} + +// 读取全部信息 +func (cont *PostWorkflowOrders) ContMap(whereMap interface{}, field ...string) (countAry []PostWorkflowOrders, err error) { + gormDb := overall.CONSTANT_DB_KPI.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + err = gormDb.Where(whereMap).Find(&countAry).Error + return +} + +// 删除内容 +func (cont *PostWorkflowOrders) DelCont(whereMap interface{}) (err error) { + err = overall.CONSTANT_DB_KPI.Where(whereMap).Delete(&cont).Error + return +} diff --git a/overall/publicmethod/technique.go b/overall/publicmethod/technique.go index af02e42..c2a97d9 100644 --- a/overall/publicmethod/technique.go +++ b/overall/publicmethod/technique.go @@ -9,6 +9,7 @@ import ( "errors" "fmt" "key_performance_indicators/middleware/grocerystore" + "key_performance_indicators/middleware/snowflake" "key_performance_indicators/models/modelshr" "key_performance_indicators/overall" "math" @@ -36,6 +37,17 @@ func TableNumber(class ...string) (number int64) { return } +// 获取UUID +func GetUUid(workId int64) (uuId int64) { + snowflakeId, snowflakeErr := snowflake.NewWorker(workId) + if snowflakeErr != nil { + uuId = TableNumber() + } else { + uuId = snowflakeId.GetId() + } + return +} + // 初始化map(泛型) func MapOut[T GenericityVariable]() (data map[T]interface{}) { data = make(map[T]interface{}) //必可不少,分配内存 diff --git a/overall/publicmethod/type.go b/overall/publicmethod/type.go index 149d417..43a060a 100644 --- a/overall/publicmethod/type.go +++ b/overall/publicmethod/type.go @@ -49,3 +49,10 @@ type PubilcImageCont struct { Imgpath string `json:"imgpath"` //物理地址 AscriptionId string `json:"ascriptionid"` //归属 } + +//附件格式 +type EnclosureFormat struct { + FileName string `json:"filename"` //附件名称 + FilePath string `json:"filepath"` //附件地址 + FileType int `json:"filetype"` //附件类型 1:图片;2:视频;3:表格;4:word;5:pdf;7:其他文件 +}